alamar5
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору RedPromo Спасибо. Но я, в итоге, решил оствить это рисование Windows. Я думал, можно относительно простыми средствами (вызовами Theme-функций) получить расположение кнопок. Я решил, что эта нестандартная рамка будет рисоваться только в случае, когда выбрана классическая тема WinXP, т.е., когда размер и расположение кнопок хорошо предсказуемы. У меня сейчас другой вопрос. Для случая, когда рисуется эта нестандартная тонкая рамка, системное меню (меню окна) получается расположенным внутри клиентской области (со сдвигом по диагонали на пару пикселов, но тем не менее). Чтобы оно располагалось вплотную к левому верхнему краю клиентской области, в обработчике WM_NCLBUTTONDOWN делаю следующее: Код: POINT pt = { 0, 0 }; ClientToScreen(hWnd, &pt); int sys_cmd = TrackPopupMenuEx( GetSystemMenu(hWnd, FALSE), TPM_LEFTBUTTON|TPM_RIGHTBUTTON|TPM_RETURNCMD|TPM_NONOTIFY, pt.x, pt.y, hWnd, NULL); if (sys_cmd) PostMessage(hWnd, WM_SYSCOMMAND, sys_cmd, 0); | В результате меню рисуется там, где надо, но я не могу воспроизвести поведение меню при последовательных нажатиях на иконку с заголовке окна. Система по умолчанию отображает меню по следующей схеме: 1) левый клик на иконке -> меню появляется 2) отпустили мышку -> без изменений 3) нажали снова -> без изменений 4) снова отпустили -> меню исчезло. Я попробовал использовать флажок, разрешающий отображение меню "через раз". Это работает, но я не понимаю, как добиться, чтобы меню "пережило" п.3. т.к. оно (меню )исчезает до того, как в п.3 приходит уведомление WM_NCLBUTTONDOWN. Т.е., ичезновение меню, получается, не предотвратить. В общем, мне непонятно пока, как реализовать то поведение меню, которое по умолчанию обеспечивает система при кликах мышкой на иконке в заголовке? |