Консультация № 65486
04.12.2006, 12:50
0.00 руб.
0 5 1
Здравствуйте. Мне нужно окно со стилем WS_POPUP (без Caption и пр.)
При этом кнопка в Taskbar(е) нормально не работает, при де активации окна и нажатии правой кнопки, т.е. не идут сообщения WM_WINDOWPOSCHANGING и WM_WINDOWPOSCHANGED, WM_СONTEXTMENU. То что кнопка в Taskbar может работать нормально это точно. Но что для этого нужно ? (идут сообщения WM_IME_NOTIFY, WM_IME_SETCONTEXT, WM_KILLFOKUS, при правой кнопке какое то экзотическое с № 313h)

Обсуждение

Неизвестный
04.12.2006, 14:09
общий
это ответ
Здравствуйте, Zz113!
...это не какое-то экзотическое....
читайте внимательней MSDN.
вот вырезка из описания структуры NOTIFYICONDATA:

uCallbackMessage:
Application-defined message identifier. The system uses this identifier to send notifications to the window identified in hWnd. These notifications are sent when a mouse event occurs in the bounding rectangle of the icon, or when the icon is selected or activated with the keyboard. The wParam parameter of the message contains the identifier of the taskbar icon in which the event occurred. The lParam parameter holds the mouse or keyboard message associated with the event. For example, when the pointer moves over a taskbar icon, lParam is set to WM_MOUSEMOVE. See the Taskbar guide chapter for further discussion.
Неизвестный
04.12.2006, 14:14
общий
если бы вы привели часть кода, было бы понятнее в чём проблема. а так, можно только предположить, что вы пытаетесь отлавливать не те сообщения и не так...
Неизвестный
04.12.2006, 14:52
общий
Код тут не причем обыный вызов CreateWindowEx (ExStyle, ClassName, WindowName, WS_POPUP | ..., ...окно создается без Nonclient Area (без рамок заголовка и пр.), как обычно, появляется кнопка на панели задач, если на нее нажать, когда окно активно, оно (окно) должно потерять активность и минимизироваться, (так ведут себя все окна имеющие Nonclient Area), а оно этого не делает, и на вызов контекстного меню правой кнопкой не реагирует. Я создал такое же окно по средством VCL, (оно работает нормально с теме же Style & ExStyle), и посмотрел какие собщения на него приходят исли нажать кнопку на панели задач, прходит WM_WINDOWPOSCHANGED и как следствие WM_SIZE и т.д., а на окно созданое в VC, прямым вызовом API не приходят. Вопрос почему ?
Неизвестный
04.12.2006, 16:19
общий
вот так и надо было спрашивать =)вобщем так.чтобы было контекстное меню по нажатию правой кнопкидобавьте к стилю WS_SYSMENUчтобы была реакция на левый клик (minimize, restore)доюавьте WS_MINIMIZEBOXт.е. стиль окна быть должен таким:WS_POPUP|WS_SYSMENU|WS_MINIMIZEBOXможете добавить по вкусу =) ещё и WS_MAXIMIZEBOX.удачи
Неизвестный
04.12.2006, 16:36
общий
Спасибо большое, действительно все работает.Все же удивительно VCL (С C++Builder на VC++ пришлось перейти из за ObjectARX) создает такое же окно со стилями - Style = 86000000h (WS_POPUP | WS_CLIPSIBLINGS | WS_CLIPCHILDREN), ExStyle = 10000h (WS_EX_CONTROLPARENT) и это почему то нормально рабоет. (Впрочем это уже не важно)
Форма ответа