Meniul sistem al ferestrei mfc

Plz, spuneți cum să mona în MFC executa programatic elemente de meniu
fereastra meniului de sistem (restabilire, mutare, redimensionare,
minimiza, maximiza, închide). Clasa de ferestre - moștenită
de la CFrameWnd.

Din această listă știu doar cum să minimalizez
CFrameWnd :: CloseWindow () și închideți CFrameWnd :: DestroyWindow (). Și restul?

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

Postați pe contul de știri
SendMessage >> WM_SIZE, WM_GETMINMAXINFO, etc.

Și cum reușești să mergi la redimensionarea manuală? Ie
de exemplu atunci când apăs de Resize în sistem. meniu, am un mouse în formular
Treceți în centru și pot modifica dimensiunea tastaturii. Și atunci când Mutați
Pot muta fereastra cu cursorul de pe tastatură.

Cum fac asta?

PS: Din anumite motive, nu am putut apela SendMessage (WM_SIZE,
SIZE_MAXIMIZED, 0) - nu modifică dimensiunea. Poate mă înșel cumva
Cauți? Iată codul:


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

void CMyWnd :: OnMoveWindow ()
Ce e aici?
>

void CMyWnd :: OnResizeWindow ()
// și aici?
>

void CMyWnd :: OnMinimize ()
TrimitereMessage (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);

Non-zero dacă funcția este reușită, altfel 0.

parametrii
pWndInsertAfter
Identifică obiectul CWnd care va precede acest obiect
CWnd în ordinea Z. Acest parametru poate fi un indicator pentru CWnd sau
Un pointer la una din următoarele valori:


sau niciunul din ele nu este wndNoTopMost nu este definit în parametrul pWndInsertAfter.
Această fereastră nu este fereastra activă.
Aplicația nu poate activa o fereastră inactivă pentru a o deplasa la
partea superioară a ordinului Z. Aplicațiile pot schimba ordinea Z
fereastra activată fără restricții.
Fereastra non-top poate avea o fereastră de sus, dar nu invers. Orice fereastră
(de exemplu, o casetă de dialog) care aparține ferestrei de sus însuși
făcută deasupra unei ferestre pentru a se asigura că toată lumea este înăuntru
ferestrele de proprietate rămân deasupra proprietarului lor.
Cu Windows 3.1 și ulterior, ferestrele se pot deplasa în partea de sus a ordinii Z
și blocați acolo prin setarea stilurilor lor WS_EX_TOPMOST. Asemenea top
Fereastra susține că partea superioară este poziționată chiar și atunci când este dezactivată.
De exemplu, selectarea comenzii WinHelp Always On Top face din fereastra de ajutor
cel mai înalt și apoi rămâne vizibil atunci când vă întoarceți la dvs.
cerere.
Pentru a crea o fereastră de sus, apelați SetWindowPos cu pWndInsertAfter
parametru egal cu wndTopMost sau setați stilul WS_EX_TOPMOST,
atunci când creați o fereastră. Dacă ordinul Z conține orice ferestre cu
Stilul WS_EX_TOPMOST, fereastra sa mutat de la wndTopMost, valoare
este plasat în partea de sus a tuturor ferestrelor nontop, dar sub orice ferestre de sus. când
Aplicația activează fereastra inactivă fără bitul WS_EX_TOPMOST, fereastra
Mută ​​în primul rând ferestre nontopmost, dar sub orice ferestre de sus.
Dacă SetWindowPos este apelat când parametrul pWndInsertAfter este -
wndBottom și CWnd - fereastra de sus, fereastra pierde starea de vârf (,
este șters), iar sistemul plasează fereastra în partea de jos a ordinii Z.

Articole similare