• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[C] Win32 Api - CreateWindowEx() - GUI

T!P-TOP

Mitglied
Guten Tag!

Ich lasse anfangs ein Hauptfenster erstellen:

PHP:
    hWnd = CreateWindowEx(WS_EX_CLIENTEDGE, 
                          MainClassName,
                          "Kundenverwaltung",
                          WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                          CW_USEDEFAULT, 
                          CW_USEDEFAULT,
                          CW_USEDEFAULT, // width
                          CW_USEDEFAULT, // height
                          NULL,
                          NULL,
                          hInstance, 
                          NULL);

In diesem Fenster erstelle ich 2 weitere Fenster:
PHP:
    clientsCol = CreateWindowEx(WS_EX_CLIENTEDGE, "STATIC",
                          "Kunden",
                          WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL,
                          0, 
                          0,
                          200, // width
                          600, // height
                          hWnd,
                          NULL,
                          hInstance, 
                          NULL); 
                          
    clientDatas = CreateWindowEx(WS_EX_CLIENTEDGE,
                                 "EDIT",
                                 "Kundendaten",
                                 WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL,
                                 200, 
                                 0,
                                 500, // width
                                 600, // height
                                 hWnd,
                                 NULL,
                                 hInstance, 
                                 NULL);

Bei den beiden letzten Fenster möchte ich erreichen, dass Sie sich in der Höhe an das Hauptfenster anpassen. Minimiert bzw. maximiert man das Hauptfenster, sollen die beiden Kindfenster ebenfalls minimiert bzw. maximiert werden. Was muss ich da für Parameter(werte) übergeben, damit das geschieht?
Außerdem soll das 2. Kindfenster (also das in der Variable clientDatas gespeichert wird) in der width sich bis ganz nach rechts ausdehen.

Bisher sieht das ganze so aus: http://www.imgbox.de/users/public/images/oyH2kkV2o8.png



Das erste Kindfenster (gespeichert in der Variable clientsCol) ist auch nicht nach meiner Vorstellung. Das soll von der Funktion und vom Aussehen so sein wie zB im Outlook (Mailprogramm) die linke Spalte mit den E-Mail-Ordnern (Posteingang, Postausgang, etc.). STATIC ist falsch, die Frage ist nur, was stattdessen?

Und wo finde ich eine Dokumentation zur Win32-API? Auf msdn.microsoft ist ja beinahe nichts angeführt - nur paar Grundlagen, aber keinen überblick über z.B. alle Parameter von createWindowEx();

Grüße
 
Zuletzt bearbeitet:
Werbung:
Einem Child brauchst du beim Create überhaupt keine Grösse geben, das organisierst du im WndProc vom Hauptfenster unter case WM_SIZE.

Code:
LRESULT CALLBACK MainWindow(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{

switch(msg)
{

case WM_SIZE:
{

MoveWindow(clientsCol,left,top,width,height,1);
MoveWindow(clientDatas,left,top,width,height,1);

return 0;

}
break;

}

return DefWindowProc(hWnd,msg,wParam,lParam);

}

Natürlich musst du da für left,top,width,height die Werte angeben, die du haben willst.
Windows hilft dir dabei ein wenig, indem es dir die Grösse vom Hauptfenster im LPARAM zur Verfügung stellt.
Der Rest ist dann nur ein bischen rechnen.
Willst du z.B. ein Child von links bis zur Mitte und von oben auch bis zur Mitte, dann

0, 0, LOWORD(lParam) / 2, HIWORD(lParam) / 2

Willst du es von der Mitte bis nach ganz rechts und nach ganz unten, dann

LOWORD(lParam) / 2, HIWORD(lParam) / 2, LOWORD(lParam) / 2, HIWORD(lParam) / 2

Willst du das ganze Fenster füllen, dann

0, 0, LOWORD(lParam), HIWORD(lParam)

und so weiter und so fort.
 
Zuletzt bearbeitet:
Werbung:
Zurück
Oben