Как я могу отключить навигацию клавиатуры CComboBox mfc, мне нужно, когда я нажимаю клавишу на клавиатуре с открытым раскрывающимся списком, элемент не должен выбирать. Благодаря!Как отключить навигацию клавиатуры CComboBox mfc?
ответ
Если вы действительно просто имеете в виду: «как отключить управление от изменения?», А затем просто вызовите метод EnableWindow на CComboBox.
Но если вы действительно хотите, чтобы вы просто заблокировали клавиатурные сообщения, нажав на элемент управления, используйте 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. Возможно, вам понадобятся некоторые эксперименты с вашей стороны.
Существует также метод MFC в классе CWnd под названием SubclassWindow. Поэтому, если вы хотите перейти на чистую MFC, вы также можете изучить это.
Простое решение без подклассов выпадающий это установить свое первое дочернее окно (которое коробка CEdit) для чтения, как это:
GetDlgItem (IDC_MY_COMBO) -> GetWindow (GW_CHILD) -> SendMessage (EM_SETREADONLY , 1, 0);
- 1. В MFC, как определить, включен ли CComboBox?
- 2. MFC CComboBox :: Осведомление документации InitStorage
- 3. Настройка выбора по тексту в CComboBox (MFC)
- 4. Как отключить навигацию клавиатуры в пользовательском интерфейсе Kendo TabStrip?
- 5. Как отключить CComboBox, выбрав его для копирования в буфер обмена?
- 6. C++ MFC Ускорители клавиатуры
- 7. Как скопировать данные CComboBox в другой CComboBox?
- 8. Как включить навигацию клавиатуры для большого приложения
- 9. Как предотвратить навигацию клавиатуры в Editable ComboBox
- 10. Отключить пространственную навигацию
- 11. Отключить навигацию backbarbutton
- 12. CMFCPropertyGridProperty и CCombobox binding
- 13. MFC CComboBox OnKillFocus/ShowDropDown после SetCurSel в Windows 7
- 14. Вручную установить раскрывающуюся панель MFC CComboBox с горизонтальной полосой прокрутки
- 15. Отключить навигацию по клавиатуре в Google Map
- 16. MFC - Как отключить элемент списка?
- 17. CComboBox FindString empty
- 18. CComboBox Сортировка
- 19. Отключить оперную навигацию по карте
- 20. Отключить навигацию в заголовке Bootstrap
- 21. Отключить навигацию в метро IE
- 22. CSS Timeline скроллер отключить навигацию
- 23. Как отключить все клавиши клавиатуры?
- 24. Как отключить специальные клавиши клавиатуры?
- 25. Как отключить всплывающее окно клавиатуры?
- 26. Как отключить навигацию по URL-адресу
- 27. Как отключить всю навигацию с веб-страницы?
- 28. Как отключить отладочную навигацию в django-cms?
- 29. Как отключить навигацию ListView через клавиатуру
- 30. Как отключить навигацию по кадровой стрелке Alt +?
Спасибо за ответ !!! – lebron2323