Domanda

Questa domanda è legata a il mio precedente.

Ho un MFC (VC6) Applicazione MDI, che ha diverse finestre figlio MDI agire come viste diverse per uno stesso documento.

È possibile impostare uno di questi telai per stare sopra gli altri?
Ho provato a chiamare

SetWindowPos(
   &GetParentFrame()->wndTopMost,
   0, 0, 0, 0,
   SWP_NOMOVE | SWP_NOSIZE);

e

ModifyStyleEx(0, WS_EX_TOPMOST);

dal CMDIChildWnd ma nessuno sembra funzionare.

È stato utile?

Soluzione

Nella tua classe CMDIChildWnd (di solito CChildFrame), aggiungere statico HWND m_hTopWnd.Impostare uguale a l'HWND del bambino che si desidera essere sempre al top.

Maniglia WM_WINDOWPOSCHANGED in CChildFrame.Il gestore, se la corrente è m_hWnd == m_hTopWnd.Se non, chiamare

::SetWindowPos(m_hTopWnd, HWND_TOP, 0, 0, 0, 0, 
    SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);

In questo modo ogni volta che la posizione di un qualsiasi finestra figlio MDI è impostato, il "sempre in primo piano la finestra" essere spinto verso l'alto.

Anche il manico WM_CLOSE e quando la finestra superiore di chiusura, set m_hTopWnd = NULL.

Vedere anche: CodeProject articolo e MSDN knowledgebase

Altri suggerimenti

Sei sicuro che sia una buona progettazione dell'interfaccia utente di tenere una finestra secondaria in cima alle altre? Se questo non dovesse diventare un telaio separato più alto? O una barra di controllo?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top