![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Ibragim |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 28.9.2004 Где: Киев Репутация: нет Всего: нет |
Всем вечер добрый.
Помогите плз. со следующей задачей. Есть окно, положим, hMainWnd = CreateWindow(szAppName, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0,CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); И вот нужно используя только API сделать в этом окне менюшку, как были в текстовых программах под ДОС, то бишь в текстовом виде написано: Пункт1 Пункт2 Пункт3 Нужно, чтобы по нажатию клавиши "вниз" становилась надпись Пункт1 Пункт2 Пункт3 и т.п. Вот так. Поможете с обработчиком? LRESULT CALLBACK WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) { switch (Msg) { case WM_CREATE <как собственно написать на окне эти самые пункты?> break; сase WM_<как сказать клавиша вниз?> break; |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
WM_CREATE не поможет (если не делать такой оконный класс, но я вижу до этого далеко). Тут нужен WM_PAINT - будешь сам, ручками рисовать эти менюшки и текст в них писать.
На счет второго - WM_KEYDOWN, там выбираешь wParam - в нем номер символа - если стрелка то делай переход на новое положение |
|||
|
||||
| Ibragim |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 28.9.2004 Где: Киев Репутация: нет Всего: нет |
Спасибо, но плоховато.
1. WM_KEYDOWN - понятно, сделаем. 2. Оконный класс сделан, так что почему бы и нет? 3. Можно case WM_PAINT: <и здесь пару строчек примера - перерисуй что-нибудь> <и еще. Есть варианты без GetDC или чего-то в этом роде вывести просто текст как таковой по координатам, например> break; |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
|
|||
|
||||
| Ibragim |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 28.9.2004 Где: Киев Репутация: нет Всего: нет |
и еще - стрелки, enter, esc начали ловиться, а вот Alt+X вообще не генерирует WM_KEYDOWN, по крайней мере дебагер не останавливается. Как с ним быть, не знаешь?
|
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
Пусть Strings[COUNT] - строки меню, StrCnt - колво строк, а CurString - текущее выделенное положение, тогда
Добавлено @ 22:23 Alt - это WM_SYSKEYDOWN, и про ловлю ентёра - я ж сказал, что wParam отсеивать надо - нажми стрелку "вниз" и посмотри дебаггером ее значени в виде "цифры", потом кейсом или ифом выделяй |
|||
|
||||
| Ibragim |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 28.9.2004 Где: Киев Репутация: нет Всего: нет |
Все, спасибо, что-то вывело, дальше накатаю.
не-не, про enter как раз все в порядке. Так собственно коды и узнал Сэнкс, удачи. |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
Тебе тоже!
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |