![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Тутанхамец |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: нет Всего: 6 |
Пипл, прошу помощи.
Пытаюсь сделать примитивную прогу в Visual C++ без MFC. Всего-то хочу, чтоб при щелчке на меню "Новый файл" появлялся MessageBox. Оконная функция выглядит так:
А функция fOnCommand, на которую переводит стрелки взломщик сообщений, выглядит так:
Проблема в следующем. Если вместо хэндла окна в MessageBox передаю NULL, то бокс появляется не сразу (только пары щелчков мышкой) и не поверх основного окна моей проги. Мне так не надо. А если делаю так: MessageBox(hWnd, "qq!", "qqq", MB_OK); //hWnd - глобальная переменная, получаемая в WinMain или так: MessageBox(hwnd, "qq!", "qqq", MB_OK); ...то прога вообще подвисает и реагирует на мышку только миганием заголовка окна. При отладке прога упирается в строчку с MessageBox и дальше ни с места. Что я делаю не так? Может, кто-нибудь в курсе?.. Заранее благодарен. Это сообщение отредактировал(а) Тутанхамец - 13.1.2006, 09:43 |
||||
|
|||||
| SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 10 Всего: 124 |
WM_PAINT убери return 0;
|
|||
|
||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: нет Всего: 6 |
Спасибо!
|
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
И еще, если взялся за взломщики, то их везде и используй. После HANDLE_MSG возвращать ничего не надо. И используй локальный HWND, хотя это не важно, но стиль программирования требует. ТОгда твой обработчик сообщений выглядел бы так:
Обычно, названия функциям ответа на сообщения дают по шаблону WindowName_OnMessage, где WindowName - название окна (ведь их в проге может быть много. Message - сообщение, на которое отвечаем. Если не знаешь, как описывать ф-цию ответа на сообщение, то ищи её в Windowsx.h как строку по шаблону Cls_OnMessage. |
|||
|
||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: нет Всего: 6 |
Большое спасибо, учту.
А есть какой-нибудь аналог взломщиков, чтобы разделять обработку сообщений по источнику возникновения? То есть, что хочу сказать... вот, допустим, с помощью HANDLE_MSG я избавился от заумного switch в оконной процедуре и все сообщения WM_COMMAND теперь направляются в функцию MyWindow_OnCommand. Но в этой MyWindow_OnCommand опять придется делать switch с кучей кейсов для каждого меню, кнопки и т.п., посылающих WM_COMMAND? Или есть варианты? Можно конечно делать функции типа MyMenu1_OnCommand, MyMenu2_OnCommand и вызывать их из кейсов функции MyWindow_OnCommand... Но может для этого тоже уже придумано что-нибудь эдакое типа взломщиков?) |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
Ну, такого не видел, но кейсы на команды обычно уже не требуют такого дикого количества локальных переменных. Можешь сам организовать такую систему, или сделать отдельно ф-ции на каждый кейс, как сам и говорил. Взломщики - это ОЧЕНЬ простые макросы, которые можно написть самому для любых кейсов. Их ограничение - входные переменные (из которых получаем данные) жестко записаны в макросах. Те, ты же не можешь поменять названия переменных в оконной процедуре.
|
|||
|
||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: нет Всего: 6 |
Пожалуй, без нужды не буду мудрить с макросами, благо до больших прог еще не дополз.
|
|||
|
||||
![]()
|
| Правила форума "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. |