編集中のコンボボックスエディットのキーイベント編集中のコンボボックスエディットのキーイベントをチャッチする方法のメモです。エディットがコンボボックスの一番目の子ウィンドウですので、コンボボックスの派生クラスからGetWindow(GW_CHILD)で、エディットのCWndポインターを取得できます。 さらに、PreTranslateMessage(MSG* pMsg)をオーバーライドし、 pMsg->messageがWM_KEYDOWNになり、且つ、pMsg->hwndがエディットのHWNDになった時は、エディットのキー操作です。。 例として、リターンキー(Enter)が押されたときに、エディットの内容をTRACEします: // CComboBoxTest メッセージ ハンドラー BOOL CComboBoxTest::PreTranslateMessage(MSG* pMsg) { // TODO: ここに特定なコードを追加するか、もしくは基本クラスを呼び出してください。 if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN) { CWnd* pWnd = GetWindow(GW_CHILD); if (pMsg->hwnd == pWnd->m_hWnd) { CString strText; GetWindowText(strText); TRACE(_T("%s\n"), strText); return true; } } return CComboBox::PreTranslateMessage(pMsg); } |