CWnd::PreCreateWindow(...)

Die CWnd Methode PreCreateWindow(...) wird vom MFC-Rahmen aufgerufen bevor das WINDOWS Fenster erstellt wird. Durch überschreiben dieser Methode können die individuellen Eigenschaften eines Fensters angepasst werden.

PreCreateWindow(....) hat folgendes Prototyping:

virtual BOOL PreCreateWindow (CREATESTRUCT& cs);

Die Parameter haben folgende Bedeutung:

Parameter

Bedeutung

CREATESTRUCT& cs Referenz auf eine vorinitialisierte Struktur vom Typ CREATESTRUCT.

Als Returnwert muss die Methode den Wert TRUE liefern wenn mit der Fenstererstellung fortgefahren werden soll. Liefert die Methode FALSE zurück, so wird die Anwendung nach der Rückkehr aus dieser Methode beendet.

Die CREATESTRUCT Struktur besitzt folgenden Aufbau:

typedef struct tagCREATESTRUCT
{
    LPVOID lpCreateParams;
    HANDLE hInstance;
    HMENU  hMenu;
    HWND   hwndParent;
    int    cy, cx;
    int    y, x;
    LONG   style;
    LPCSTR lpszName;
    LPCSTR lpszClass;
    DWORD  dwExStyle;
} CREATESTRUCT;

Die Bedeutung der einzelnen Elemente ergibt sich fast von selbst aus deren Namen. So bestimmen die Parameter (cx, cy) die Größe des Fensters in Pixel und (x, y) dessen Position in Bildschirmkoordinaten. style legt den Stil des Fensters fest und dwExStyle den erweiterten Fensterstil. Der Fenstertitel kann durch setzen des Parameters lpszName verändert werden. Die restlichen Elemente werden Sie in der Regel nicht verändern.

Ändern Sie niemals ohne besonderen Grund den Namen der Fensterklasse lpszClass. Wenn Sie den Namen der Fensterklasse ändern müssen Sie sicherstellen, dass auch eine entsprechende Fensterklasse registriert wurde. Die alleinige Änderung des Fensterklassen-Namens erzeugt noch keine Fensterklasse!

Und noch etwas wichtiges: Wenn Sie diese Methode überschreiben, sollten Sie in der Regel nach dem Anpassen der Strukturelemente die Basis-Methode aufrufen damit das Fenster auch der richtigen WINDOWS Fensterklasse zugeordnet wird. Nur wenn Sie eine eigene WINDOWS Fensterklasse für das Fenster erstellt haben müssen Sie die Basismethode nicht aufrufen.



Copyright © 2004

Senden Sie Emails mit Fragen oder Kommentaren zu dieser Website an: mailto:info@cpp-tutor.de
 Wolfgang Schröder, Lerchenweg 23, D-72805 Lichtenstein. Tel: +49 7129 6470