どのように私はCComboBoxのmfcキーボードナビゲーションを無効にすることができます、私は開いているドロップダウンリストでキーボードのキーを押すと、項目は選択しないでください。ありがとう!CComboBox mfcキーボードナビゲーションを無効にするにはどうすればよいですか?
1
A
答えて
2
「コントロールの変更を無効にするにはどうすればいいですか」という意味の場合は、CComboBoxでEnableWindowメソッドを呼び出してください。
しかし、実際にキーボードメッセージがコントロールにぶつからないようにブロックしたい場合は、window subclassingを使用してキーボードメッセージを呑み込んでください。 (「ウィンドウ・サブクラス化」という用語をC++クラスと混同しないでください。同じことではありません)。基本的には、コンボボックスに関連付けられているWM_CHARとWM_KEYDOWNのメッセージをすべて傍受し、他のすべてのメッセージを渡します。必ずこれはタブキーナビゲーションを破壊しないようにする
WNDPROC g_prevFunc = NULL;
LRESULT MyWindowHook(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if ((uMsg == WM_CHAR) || (uMsg == WM_KEYDOWN) || (uMsg == WM_KEYUP))
{
return 0; // swallow message
}
return ::CallWindowProcW(g_prevFunc, hWnd, uMsg, wParam, lParam);
}
void MySubclassWindow(HWND hwnd)
{
g_prevFunc = (WNDPROC)::SetWindowLongW(hwnd, GWL_WNDPROC, (LONG_PTR)MyWindowHook);
}
// wherever your code gets initialized
CYourWindow::OnInit()
{
// whatever other initialization you got going on...
// I'm assuming your CComboBox is named something like m_combobox.
::MySubclassWindow(m_combobox.m_hWnd);
}
ダブルチェック:
はこれを行います。私はちょうど試したが、うまくいくようだ。 WM_CHARを飲み込む必要はないかもしれません。ちょうどWM_KEYUPとWM_KEYDOWNを飲み込む必要があります。あなたの一部に関するいくつかの実験が必要になるでしょう。
また、CWndクラスにはSubclassWindowというMFCメソッドがあります。したがって、純粋なMFCに行きたい場合は、これも調べることができます。 (>のSendMessage EM_SETREADONLY - >は、GetWindow(GW_CHILD) -
GetDlgItem(IDC_MY_COMBO):
2
コンボボックスをサブクラス化せずに簡単な解決策は、このように、読み取り専用する(CEditのボックスです)、その最初の子ウィンドウを設定することです、1,0)。
関連する問題
- 1. WPF ListBoxでキーボードナビゲーションを無効にする
- 2. Googleマップでキーボードナビゲーションを無効にする
- 3. jqgridローカルキャッシュを無効にするにはどうすればよいですか?
- 4. Crawler4Jロガーを無効にするにはどうすればよいですか?
- 5. iPadサポートを無効にするにはどうすればよいですか?
- 6. Ctrl + F4を無効にするにはどうすればよいですか?
- 7. WM6.5.3ジェスチャーを無効にするにはどうすればよいですか?
- 8. ピボットフリックイベントを無効にするにはどうすればよいですか?
- 9. invalidate()を無効にするにはどうすればよいですか?
- 10. Djangoクエリキャッシュを無効にするにはどうすればよいですか?
- 11. クエリキャッシュを無効にするにはどうすればよいですか?
- 12. TextBlockを無効にするにはどうすればよいですか?
- 13. "dijit.form.FilteringSelect"ウィジェットを無効にするにはどうすればよいですか?
- 14. should.jsを無効にするにはどうすればよいですか?
- 15. ASP:Panelを無効にするにはどうすればよいですか?
- 16. tomcatを無効にするにはどうすればよいですか?
- 17. LinkLabel TabStopを無効にするにはどうすればよいですか?
- 18. scrollViewを無効にするにはどうすればよいですか?
- 19. ランキットを無効にするにはどうすればよいですか?
- 20. GestureListenerを無効にするにはどうすればよいですか?
- 21. pyqt4 QGraphicsView.mousePressEventを無効にするにはどうすればよいですか?
- 22. ドッカースワームモードを無効にするにはどうすればよいですか?
- 23. Android:デスクトップを無効にするにはどうすればよいですか?
- 24. Yiiエラーページを無効にするにはどうすればよいですか?
- 25. クリックボタンを無効にするにはどうすればよいですか?
- 26. ポリラインクリックオーバーレイを無効にするにはどうすればよいですか?
- 27. マルチタッチを無効にするにはどうすればよいですか?
- 28. Specflow Intellisenseを無効にするにはどうすればよいですか?
- 29. org.apache.catalina.core.ApplicationContext logを無効にするにはどうすればよいですか?
- 30. ビュークローズオプションを無効にするにはどうすればよいですか?
回答ありがとうございます! – lebron2323