お世話になっております。
今、ダイアログにコンボボックスを
Createして描画しています。
そのコンボボックスのエディットボックス部分を
CEditから派生した自作クラスのコントロールに
したいのですが、それは可能なのでしょうか。
やりたいことはドロップダウンのコンボボックスでの
IMEのメッセージ判定なのですが、コンボボックスの
WindowProc()にはIMEのメッセージである
WM_IME_COMPOSITIONメッセージが来ません。
しかし、コントロールがコンボボックスではなく
エディットボックスの場合には
WindowProc()にはWM_IME_COMPOSITIONメッセージが
きて、IMEのメッセージ判定ができるため、IMEの
メッセージ判定処理を追加したエディットボックスを
コンボボックスのエディット部分に使えないかと
思ったのですが・・・
開発環境はWinXp Pro VC6.0 SP5 MFC(exe) ダイアログベースです。
よろしくお願いいたします。
そのものズバリの回答ではないので申し訳ないのですが、
CEdit* pEdit=(CEdit*)wndCombo.GetWindow(GW_CHILD);
(ただし、CComboBox wndCombo;)
とすることで、コンボボックスのエディット部分が参照できるみたいですよ。
もしかしたら、利用できるかも・・・
sugerさん、回答ありがとうございます。
教えていただいたやり方を参考にさせていただいて、
コンボボックスをCreateした後に
CEdit派生の自作クラス、CImeEditのSubclassWindow()
で取得したコンボボックスのエディットを
結びつけることで実現することができました。
コードは下の様な感じです。
BOOL CMyDialog::OnInitDialog()
{
・
・(中略)
・
if(m_ComboBox.Create(CBS_DROPDOWN | WS_VISIBLE | WS_CHILD | WS_TABSTOP |
WS_VSCROLL, rect, this, IDC_USERCOMBO) == TRUE)
{
CEdit * pEdit = (CEdit *)m_ComboBox.GetWindow(GW_CHILD);
if(pEdit)
{
m_ImeEdit.SubclassWindow(pEdit->m_hWnd);
}
}
・
・(中略)
・
}
ありがとうございました。