掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
自己描画コンボボックスでWM_DRAWITEMメッセージを拾うには? (ID:57997)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
はじめまして! 自己描画コントロール(オーナーでなく、コントロールに描画用処理を持たせる)で、コンボボックスを作成中なのですが、WM_DRAWITEM メッセージが受信できません。 WM_MEASUREITEM メッセージは受信出来ているのですが… どなたか有識者の方のご回答をお願い致します。 以下が処理に関係するであろうコードとなります。 /// ■CMyView.h //////////////////////////////////////////////// #include "DrawComboBox.h" protected: CDrawComboBox m_combo; /// ■CMyView.cpp ////////////////////////////////////////////// int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; //---------------------------------------------------------- // コンボボックスの作成 // ウィンドウスタイル、コンボボックススタイルを選択 // 但し、CBS_OWNERDRAWFIXED は指定しない DWORD dwStyle = WS_VISIBLE|WS_CHILD|CBS_DROPDOWNLIST|CBS_HASSTRINGS|WS_VSCROLL|WS_TABSTOP; // 作成 if( !m_combo.Create( dwStyle, CRect(0,0,0,0), this, OWNERDRAWCOMBO_CTRLID ) ) return -1; return 0; } /// ■CDrawComboBox.h ////////////////////////////////////////// class CDrawComboBox : public CComboBox { public: virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct); protected: virtual void PreSubclassWindow(); /// ■CDrawComboBox.cpp //////////////////////////////////////// void CDrawComboBox::PreSubclassWindow() { //---------------------------------------------------------- // オーナー描画に設定する if((GetStyle() & CBS_OWNERDRAWVARIABLE) != CBS_OWNERDRAWVARIABLE){ ModifyStyle(0, CBS_OWNERDRAWVARIABLE); } CComboBox::PreSubclassWindow(); } void CDrawComboBox::DrawItem(LPDRAWITEMSTRUCT lpDIS) { //★★ 呼び出されない! ★★ // アイテムの描画処理… } void CDrawComboBox::MeasureItem(LPMEASUREITEMSTRUCT lpMIS) { //★★ 呼び出される! ★★ // lpMISの設定処理… }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.