Определение, доступна ли кнопка Развернуть - PullRequest
2 голосов
/ 22 ноября 2008

Кто-нибудь знает, где я могу найти пример того, как определить, доступны ли кнопки «Развернуть» и / или «Свернуть» в окне и / или отключены?

Окно не будет в том же процессе, что и мое приложение. У меня есть hWnd, и я попытался использовать GetMenuItemInfo, но я не могу найти хорошие примеры того, как это сделать.

Спасибо!

Ответы [ 3 ]

6 голосов
/ 22 ноября 2008
bool has_maximize_btn = (GetWindowLong(hWnd, GWL_STYLE) & WS_MAXIMIZEBOX) != 0;
bool has_minimize_btn = (GetWindowLong(hWnd, GWL_STYLE) & WS_MINIMIZEBOX) != 0;
4 голосов
/ 22 ноября 2008

Win32 API предоставляет функцию GetTitleBarInfo , которая возвращает TITLEBARINFO Структура :

typedef struct {
    DWORD cbSize;
    RECT rcTitleBar;
    DWORD rgstate[CCHILDREN_TITLEBAR+1];
} TITLEBARINFO, *PTITLEBARINFO, *LPTITLEBARINFO;

Таким образом, вы можете проверить rgstate: указатель на массив, который получает значение DWORD для каждого элемента строки заголовка. Ниже приведены элементы строки заголовка, представленные массивом.

Index Title Bar Element
----- --------------------
0     The title bar itself
1     Reserved.
2     Minimize button
3     Maximize button    <--------------
4     Help button
5     Close button

Каждый элемент массива представляет собой комбинацию одного или нескольких из следующих значений.

Value                    Meaning
-----                    -------------------------------------------
STATE_SYSTEM_FOCUSABLE   The element can accept the focus.
STATE_SYSTEM_INVISIBLE   The element is invisible.
STATE_SYSTEM_OFFSCREEN   The element has no visible representation.
STATE_SYSTEM_UNAVAILABLE The element is unavailable.  
STATE_SYSTEM_PRESSED     The element is in the pressed state.rgstate
0 голосов
/ 22 ноября 2008

Используйте функцию GetWindowInfo .

Проверьте поле dwStyle структуры WINDOWINFO и посмотрите, включен ли бит WS_MAXIMIZEBOX.

WINDOWINFO.dwStyle & WS_MAXIMIZEBOX != 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...