Пассивные мелкомякие кнопки
Oct. 20th, 2008 05:03 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Как всегда пару раз трахнув себя нашел как сделать на WINAPI кнопку которая не выделяется.
Без манифестов.
Стоило мне это довольно жестких душевных терзаний, решение я подозреваю не совсем правильное, но работает.
Итак:
1. Делаем стиль кнопке WS_CHILD | WS_VISIBLE | BS_NOTIFY (тут нужно заметить, что само сообщение WM_NOTIFY не используется)
2. В обработке события WM_COMMAND для notify-кода BN_SETFOCUS шлем окну
SendMessage( (HWND) getHandle(), WM_UPDATEUISTATE, MAKEWPARAM(UIS_SET, UISF_HIDEFOCUS), 0);
Причем на обработку сообщения WM_CHANGEUISTATE дружно забиваем.
Ну и конечно Выражение MAKEWPARAM(UIS_SET, UISF_HIDEFOCUS) означающее ни что иное как "устиновить хайдфокус" довольно порадовало :)
Без манифестов.
Стоило мне это довольно жестких душевных терзаний, решение я подозреваю не совсем правильное, но работает.
Итак:
1. Делаем стиль кнопке WS_CHILD | WS_VISIBLE | BS_NOTIFY (тут нужно заметить, что само сообщение WM_NOTIFY не используется)
2. В обработке события WM_COMMAND для notify-кода BN_SETFOCUS шлем окну
SendMessage( (HWND) getHandle(), WM_UPDATEUISTATE, MAKEWPARAM(UIS_SET, UISF_HIDEFOCUS), 0);
Причем на обработку сообщения WM_CHANGEUISTATE дружно забиваем.
Ну и конечно Выражение MAKEWPARAM(UIS_SET, UISF_HIDEFOCUS) означающее ни что иное как "устиновить хайдфокус" довольно порадовало :)
no subject
Date: 2008-10-20 07:11 pm (UTC)no subject
Date: 2008-10-20 07:14 pm (UTC)no subject
Date: 2008-10-20 07:16 pm (UTC)а чё, стандартный крестик не подошёл?
no subject
Date: 2008-10-20 07:26 pm (UTC)Не подошел тем, что стандартный заголовок с кнопочками предполагает стандартную рамочку, а мои окна без рамок. Это раз.
Ну и два - нужна возможность убирать заголовки в некоторых уловиях. А для этого либо делать свой заголовок, либо менять стили окон. При изменении стилей существующих окон происходят довольно жесткие лаги, например неправильно вычисляется клиентская область окна, появляются области, которые не апдейтятся.
Поэтому нужен свой заголовок со своей кнопочкой. Тем более что этот заголовок может быть не только сверху, но и например сбоку.
no subject
Date: 2008-10-20 07:38 pm (UTC)no subject
Date: 2008-10-20 07:40 pm (UTC)