SDI-Anwendung bei falscher Bildschirmauflösung abbrechen
-
Hallo,
ich habe eine SDI-Andwendung (VC7) und überprüfe in CMainFrame::PreCreateWindow die akuelle Bildschirmauflösung. Bei einer falschen Auflösung möchte ich eine Meldung (AfxMessageBox...) ausgeben und das Programm beenden.Frage: Wie kann ich das Programm beenden?
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Ändern Sie hier die Fensterklasse oder die Darstellung, indem
// CREATESTRUCT cs modifizieren.
int i_breite = GetSystemMetrics( SM_CXSCREEN );
int i_hoehe = GetSystemMetrics( SM_CYSCREEN );// Anzeigemodus ist 1024 x 768
if( (i_breite == 1024) && (i_hoehe == 768) ) {
cs.x = 0;
cs.y = 0;
cs.cx = GetSystemMetrics(SM_CXFULLSCREEN);
cs.cy = GetSystemMetrics(SM_CYFULLSCREEN) + GetSystemMetrics(SM_CYCAPTION);
cs.style |= WS_MAXIMIZE;
cs.style &= ~WS_THICKFRAME; // TO avoid resizing
cs.style &= ~WS_MAXIMIZEBOX; // Disable maximize button
}
else {
// Bildschirmaufloesung zu gering
AfxMessageBox( IDS_MSG_01, MB_OK | MB_ICONSTOP );
}
-
Ich habe das in InitInstance drin, hier mal der Abschnitt:
// Das hier ist nur der Rest von InitInstance, das davor ist hierfür unwichtig. // Erstmal holen wir uns die Auflösung des Monitors in Pixeln: CClientDC dc(NULL); int nXRes = dc.GetDeviceCaps(HORZRES); int nYRes = dc.GetDeviceCaps(VERTRES); // Wenn wir eine Auflösung haben, die kleiner ist als 1024 x 768, geben wir eine Meldung aus if ((nXRes < X_RES) || (nYRes < Y_RES)) { AfxMessageBox(_T("Die Auflösung des Monitors muss mindestens 1024 x 768 betragen.\nÄndern Sie das bitte und starten Sie dann das Programm erneut.")); return FALSE; // Das Programm darf nicht laufen!!! } // Wenn wir eine Auflösung von 1024 x 768 haben, wird das Fenster maximiert else if ((nXRes == X_RES) && (nYRes == Y_RES)) { m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED); } // Wir haben eine Auflösung größer als 1024 x 768, das Fenster wird also kleiner als der Bildschirm else { m_pMainWnd->ShowWindow(SW_SHOWNORMAL); // Soll eigentlich 1024 x 768 gross sein!!! } // Das Hauptfenster ist initialisiert und kann jetzt angezeigt und aktualisiert werden. m_pMainWnd->UpdateWindow(); return TRUE; }
Die Größenfestlegung passiert dann da, wo du deinen Quellcode bisher hast.
-
War ein guter Tipp, funktioniert jetzt genau wie ich es wollte!
Schönen Dank