Сначала рассмотрим четыре типа состояний:
Перечислим некоторые методы управления состоянием окна.
BOOL IsWindowEnabled() const;
Если окно в выключенном состоянии, возвращает нулевое значение, в противном случае - 0.
BOOL EnableWindow(BOOL bEnable=TRUE);
Если значение параметра TRUE, окно переводится в включенное состояние, FALSE - в выключенное. Метод возвращает ненулевое значение, если в момент вызова окно находилось в выключенном состоянии. Если окно было во включенном состоянии или произошла ошибка, возвращается 0.
CWnd* SetActiveWindow();
Переводит окно в активное состояние. Возвращает указатель на оконный объект, обеспечивающий доступ к окну, активному в момент вызова этого метода (указатель может быть временным и не должен запоминаться для дальнейшего использования).
static CWnd* PASCAL GetActiveWindow();
Возвращает указатель на оконный объект, обеспечивающий доступ к окну, активному в момент вызова этого метода. Если в момент вызова активных окон нет, возвращается NULL.
Этот указатель может быть временным и не должен запоминаться для дальнейшего использования.
CWnd* SetCapture();
Переводит окно в состояние захвата мыши. Возвращает указатель на оконный объект, обеспечивающий доступ к окну, которым мышь была захвачена в момент вызова этого метода. Если в момент вызова мышь не захвачена, возвращает NULL. Этот указатель может быть временным и не должен запоминаться для дальнейшего использования. Чтобы освободить мышь, используется API-функция ReleaseCapture (параметров не имеет). При успешном ее выполнении возвращается TRUE, иначе - FALSE.
static CWnd* PASCAL GetCapture();
Возвращает указатель, задающий окно, захватившее мышь. Если такого окна нет, возвращает NULL.
BOOL ModifyStyle(DWORD dwRemove, DWORD dwAdd, UINT nFlags=0);
Изменяет стиль окна. Параметр dwRemove задает набор элементов стиля, которые должны быть изъяты из стиля окна. Параметр dwAdd - набор элементов стиля, которые должны быть добавлены к стилю окна. Возвращает ненулевое значение, если стиль был успешно изменен, в противном случае - 0.
Если параметр nFlags не равен 0, то после изменения стиля вызывается API-функция SetWindowPos, которая перерисовывает окно, используя набор флагов, полученный комбинацией значения: