Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
max-@
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 68
#1

Отлов сообщения у ЛистБокса - C++

30.03.2011, 01:19. Просмотров 797. Ответов 3
Метки нет (Все метки)

Короче надо отловить нажатие клавишь я делаю так

hWnd = CreateWindow(szWindowClass, szTitle, WS_POPUP | WS_BORDER, Left, Top, Width, Height, NULL, NULL, hInstance, NULL);
hListBox = CreateWindow('LISTBOX', NULL, WS_CHILD | WS_VISIBLE | LBS_NOTIFY | LBS_SORT | WS_VSCROLL | LBS_WANTKEYBOARDINPUT, 0, 0, Width, Height, hWnd, NULL, hInstance, NULL);
...............................................................
case WM_COMMAND:
if(lParam==0)GetPopUpMenu(wParam);
if(lParam==(LPARAM)hListBox){
switch (HIWORD(wParam)){
case LBN_DBLCLK:
MessageBox(hWnd,'OK','OK',0);
break;
case LBN_KILLFOCUS:
if(Show_W){
ShowWindow(hWnd, SW_HIDE);
Show_W=FALSE;
}
break;
case VK_ESCAPE:
if((LOWORD(wParam)==VK_ESCAPE||LOWORD(wParam)==VK_RETURN)&&Show_W){
ShowWindow(hWnd, SW_HIDE);
Show_W=FALSE;
}
ShowWindow(hWnd, SW_HIDE);
break;
}
}
break;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2011, 01:19     Отлов сообщения у ЛистБокса
Посмотрите здесь:

отлов буквенной клавиши... C++
C++ Отлов рисунка
Отлов нескольких одновременно нажатых клавиш C++
C++ Отлов событий CGridCtrl
Отлов сообщений и многопоточность C++
Отлов функции с другой библиотеки C++
C++ Отлов исключения переполнения буфера
C++ Отлов нажатия клавиш
Переполнение double и отлов ошибок C++
Отлов состояния радиокнопки C++
Пронумеровать очерёдность каждого сообщения так, чтобы нумерация очерёдности печаталась напротив сообщения C++
C++ Отлов сторонних программ, подключаемых к программе

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kovalsky2
0 / 0 / 0
Регистрация: 05.08.2009
Сообщений: 96
30.03.2011, 02:03     Отлов сообщения у ЛистБокса #2
В стиле окошка ListBox Вы поставили LBS_WANTKEYBOARDINPUT - это правильно.
Если установлено LBS_WANTKEYBOARDINPUT,то тепер при нажатии на
клавишу и если установлен фокус на ListBox мы получим месагу WM_VKEYTOITEM.
Следовательно:
[code]
case WM_COMMAND:
......
break;
case WM_VKEYTOITEM:
if (lParam==(LPARAM)Der.m_hWnd)
{
int itemInList=HIWORD(wParam);//Номер строки в ListBox
int codeKey=LOWORD(wParam);//Код клавиши
//////Далее просто так для проверки
TCHAR pb[255];
_stprintf(pb,_T('%d'),codeKey);
MessageBox(NULL,pb,'DFv',MB_OK);
SetFocus(Der.m_hWnd);
/////'просто так' закончилось

return itemInList;// itemInList - номер любой строчки куда
// установить выделение.
}
break;
[code]
Kovalsky2
0 / 0 / 0
Регистрация: 05.08.2009
Сообщений: 96
30.03.2011, 02:05     Отлов сообщения у ЛистБокса #3
Der.m_hWnd - это Ваш hListBox )
max-@
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 68
30.03.2011, 02:20  [ТС]     Отлов сообщения у ЛистБокса #4
Опять огромное спасибо за помощь..........
Yandex
Объявления
30.03.2011, 02:20     Отлов сообщения у ЛистБокса
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru