Vollbild-Anwendung
Bei einigen Anwendungen kann es von Vorteil sein, wenn für den Ausgabebereich
der gesamte Bildschirm zur Verfügung steht. Dazu muss vom Rahmenfenster sowohl der
Rahmen (einschließlich Titelzeile) sowie das Menü entfernt werden.
Um ein Fenster als Vollbild darzustellen, muss zunächst das Standard-Menü
entfernt werden. Dies erfolgt innerhalb der Methode PreCreateWindow(...)
des Rahmenfensters in dem das Element hMenu der als Parameter übergebenen
Struktur CREATESTRUCT auf NULL gesetzt wird.
Da das Fenster in der Normaldarstellung aber wieder ein Menü besitzen
soll, muss das Standard-Menü nun explizit wieder geladen werden. Dazu wird dem Rahmenfenster
zuerst ein CMenu Objekt hinzufügt (im Beispiel m_CMenu) und das Standard-Menü
dann über dessen Methode LoadMenu(...) geladen. Wie Sie bereits wissen, besitzt
das Standard-Menü in der Regel die ID IDR_MAINFRAME. Das so geladene Menü
wird dann über die Methode SetMenu(...) des Rahmenfensters wieder mit dem
Rahmenfenster verbunden.
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// ZU ERLEDIGEN: Ändern Sie hier die Fensterklasse oder ....
// Menu zuerst entfernen
cs.hMenu = NULL;
return TRUE;
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
// Nun Standard-Menu laden
m_CMenu.LoadMenu(IDR_MAINFRAME);
// und dem Fenster zuweisen
SetMenu(&m_CMenu);
return 0;
}
|
Damit sind die Vorarbeiten erledigt. Sehen wir uns jetzt an, wie
ein Fenster zum Vollbild vergrößert wird. Zuerst muss vom Rahmenfenster der Fenstertitel,
der Rahmen und das Systemmenü entfernt werden. Dies erfolgt durch Aufruf der
CWnd Methode ModifyStyle(...). Das Systemmenü muss hier auch entfernt
werden, da ansonsten 'unkontrolliert' über <ALT>-<SPACE> der Fensterzustand gewechselt
werden kann. Als nächstes ist das Menü über den Aufruf der Methode SetMenu(...)
zu entfernen, wobei als neues Menu ein NULL-Zeiger übergeben wird. Zum Schluss ist
das Rahmenfenster noch mittels ShowWindow(...) zu maximieren.
Um das Fenster wieder auf den 'Normalzustand' zu bringen wird genau
umgekehrt vorgegangen, d.h. es wird dem Fenster das ursprüngliche Menü und der Rahmen,
die Titelzeile und das Systemmenü hinzugefügt. Anschließend wird das Fenster durch
den Aufruf von ShowWindow(...) in seinen normalen Zustand gebracht.
void CMainFrame::ShowFull()
{
if (!m_bFullScreen)
{
ModifyStyle(WS_CAPTION|WS_THICKFRAME|WS_SYSMENU,0);
SetMenu(NULL);
ShowWindow(SW_SHOWMAXIMIZED);
m_bFullScreen = true;
}
}
void CMainFrame::ShowNormal()
{
if (m_bFullScreen)
{
SetMenu(&m_CMenu);
ModifyStyle(0,WS_CAPTION|WS_THICKFRAME|WS_SYSMENU);
ShowWindow(SW_SHOWNORMAL);
m_bFullScreen = false;
}
} |
Das Beispiel zu diesem Thema finden Sie auch unter
07Ressourcen\FullScreen.
Damit beenden wir die Tipps & Tricks zu den Ressourcen und fahren
mit dem normalen Kurs fort.
|