はじめまして!
自己描画コントロール(オーナーでなく、コントロールに描画用処理を持たせる)で、コンボボックスを作成中なのですが、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の設定処理…
}
ツイート | ![]() |