Системне меню вікна mfc

Плз, посдкажіте як мона в MFC програмним шляхом виконати пункти меню
системного меню вікна (відновити, перемістити, змінити розмір,
мінімізувати, максимізувати, закрити). Клас вікна - успадкований
від CFrameWnd.

З цього списку я знаю тільки як мінімізувати
CFrameWnd :: CloseWindow () і закрити CFrameWnd :: DestroyWindow (). А решта?

--
Rryk
CPU: 10.108.5.126, ICQ: 112642165.
Jabber: ***@jabber.kiev.ua.

Post by news account
SendMessage >> WM_SIZE, WM_GETMINMAXINFO і т.д.

А як змусити його перейти в режим ручного зміни розмірів? Тобто
наприклад коли я тисну Resize в сис. меню, то отримую мишку у вигляді
хрестика по центру і можу змінювати розмір клавой. А коли Move, то
соответсвенно можу рухати вікно курсором на клаві.

Як мені це зробити?

PS: Чомусь у мене не вдалося викликати SendMessage (WM_SIZE,
SIZE_MAXIMIZED, 0) - не змінює розмір. Може я якось неправильно його
викликаю? Ось код:


void CMyWnd :: OnRestore ()
PostMessage (WM_SIZE, SIZE_RESTORED, 0);
>

void CMyWnd :: OnMoveWindow ()
// що тут?
>

void CMyWnd :: OnResizeWindow ()
// і тут?
>

void CMyWnd :: OnMinimize ()
SendMessage (WM_SIZE, SIZE_MINIMIZED, 0);
>

void CMyWnd :: OnMaximize ()
PostMessage (WM_SIZE, SIZE_MAXIMIZED, 0);
>
..
BEGIN_MESSAGE_MAP (CMyWnd, CFrameWnd)
ON_WM_CLOSE ()
ON_WM_CREATE ()
ON_COMMAND (ID_CLOSE, OnClose)
ON_COMMAND (ID_TEXT, OnTextOut)
ON_COMMAND (ID_RESTORE, OnRestore)
ON_COMMAND (ID_MOVE, OnMoveWindow)
ON_COMMAND (ID_RESIZE, OnResizeWindow)
ON_COMMAND (ID_MINIMIZE, OnMinimize)
ON_COMMAND (ID_MAXIMIZE, OnMaximize)
END_MESSAGE_MAP ()
..

--
Rryk
CPU: 10.108.5.126, ICQ: 112642165.
Jabber: ***@jabber.kiev.ua.


BOOL SetWindowPos (const CWnd * pWndInsertAfter, int x, int y, int cx,
int cy, UINT nFlags);

На відміну від нуля, якщо функція успішна, інакше 0.

параметри
pWndInsertAfter
Ідентифікує об'єкт CWnd, який передуватиме цьому об'єкту
CWnd в Z-порядку. Цей параметр може бути покажчик на CWnd або
Покажчик на одне з наступних значень:


ні wndTopMost ні wndNoTopMost не визначений в pWndInsertAfter параметрі.
Це вікно - чи не активне вікно.
Додаток не може активізувати неактивне вікно переміщення його до
верхньої частини Z-порядку. Додатки можуть змінювати Z-порядок
активізованого вікна без обмежень.
Nontopmost вікно може мати topmost вікном, але не навпаки. Будь-яке вікно
(Наприклад, діалогове вікно) належить topmost вікна самостійно
зроблено topmost вікном, щоб гарантувати, що все знаходяться в
власності вікна залишаються вище їх власника.
З Windows 3.1 і пізніше, вікна можуть переміщатися в верхню частину Z-порядку
і блокуватися там, встановлюючи їх WS_EX_TOPMOST стилі. таке topmost
вікно стверджує, що topmost позиціонують навіть коли дезактивовано.
Наприклад, вибір команди WinHelp Always On Top робить вікно Довідки
topmost, і потім залишається мабуть, коли Ви повертаєтеся до вашого
з додатком.
Щоб створювати topmost вікно, викличте SetWindowPos з pWndInsertAfter
параметром, рівним wndTopMost, або встановіть WS_EX_TOPMOST стиль,
коли Ви створюєте вікно. Якщо Z-порядок містить будь-які вікна з
WS_EX_TOPMOST стилем, вікно, що переміщується з wndTopMost, значення
вміщено нагорі всіх nontopmost вікон, але нижче будь-яких topmost вікон. коли
додаток активізує неактивне вікно без WS_EX_TOPMOST біта, вікно
переміщається насамперед nontopmost вікна, але нижче будь-яких topmost вікон.
Якщо SetWindowPos викликається, коли pWndInsertAfter параметр -
wndBottom, і CWnd - topmost вікно, вікно втрачає topmost стан (,
очищений), і система поміщає вікно на дні Z-порядку.

Схожі статті