VC++2005 MFC ダイアログベース
ダイアログBOXにドロップダウン コンボボックスが2個あり、
そのそれぞれに違った色を付けたいと思っています。
IDC_COMBO1 → 赤
IDC_COMBO1 → 緑
------------------------------------------------------------------------------
ComboBox を基本クラスとする
CColorComboBox クラスを新規作成して
WM_CTLCOLOR をオーバーライドして色を付ける事はできたのですが、
それぞれのコンボボックスに違った色を指定する方法がわかりません。
どうしたら良いでしょうか?
------------------------------------------------------------------------------
// CMainDlg.h メインダイアログのヘッダファイル
#include CColorComboBox.h
class CMainDlg : public CDialog
{
CColorComboBox m_combo1;
CColorComboBox m_combo2;
}
// CMainDlg.cpp メインダイアログ
void CMainDlg::DoDataExchange( CDataExchange* pDX )
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_COMBO1,m_combo1);
DDX_Control(pDX, IDC_COMBO2,m_combo2);
}
// CColorComboBox.cpp コンボボックスを基本クラスするクラス
#include CColorComboBox.h
HBRUSH CColorComboBox::OnCtrColor( CDC* pDC,CWnd* pWnd, UINT nCtlColor )
{
HBRUSH hBr = CCOmbobox::OnCtlColor(pDC,pWnd,nCtlColor);
pDC->SetBkColor( RGB( 255, 0, 0) ); //赤
hBr = m_RedBrush; //m_RedBrush.CleateSolidBrush(RGB( 255, 0, 0));
}
OnCtlColor の nCtlColor がコントロール ID なので、これでどのコントロールの
OnCtlColor が呼ばれているのかを識別して処理を分けます。
…ん? OnCtlColor を CComboBox の派生クラスに実装してるの?
CMainDlg で処理するなら上記のようになります。
今の形で行くなら、CColorComboBox に「自分の色」を何らかの形で伝えてやればよいの
では。メンバ関数増やすとか。
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200907/09070037.txt
連投してしまいました。
上記URLにコメントさせていただきます。
まだ未解決ですが、こちらは解決にします。