2010-04-19 18 views
8

Ich frage mich, was die richtige Art der Erstellung Guis in mit Win32 API ist.Gui mit Win32 API

Gerade jetzt rufe ich nur die CreateWindowEx in meinem WM_CREATE Ereignis, aber ich denke nicht, dass dies der richtige Weg ist, es zu tun.

Nur als ein Beispiel, was wäre der richtige Weg ein 100x20 EditField hinzuzufügen und Text daraus zu bekommen? Würden Sie es unter WM_Create erstellen und dann GetText() verwenden?

Dank

+1

Ich habe ein Tutorial auf, dass bei http://www.aleax.it/TutWin32/ aber ach, es ist nur in italienischer Sprache - nicht 46 Kapitel auf Englisch übersetzen und quetsche das Ergebnis in eine SO Antwort ;-). Wenn Sie Google Chrome verwenden, können Sie die automatische englische Übersetzung nur zum Spaß ausprobieren - EDIT-Steuerelemente finden Sie in Kapitel 22 und folgende ;-). –

+2

möglich Duplikat von http://StackOverflow.com/Questions/342729/Learning-the-win32-api –

+0

Voting zu schließen, als "Fragen für Tutorial". –

Antwort

5

Hier ist eine andere Seite mit ziemlich guten Beispielen - http://www.winprog.org/tutorial/start.html Es sieht auch wie sie eine italienische Übersetzung haben :)

Dieses Duplikat viele Beiträge zu sein hat, wenn wir alle für Win32

1

Probe Web-Sites veröffentlichen gehen Wenn Sie eine einfache gui mit den Fenstern schaffen api, verwenden Sie dann einen Ressourceneditor, um Ihre Dialogfeldressource zu erstellen, und ersetzen Sie dann die Apps-Fensterklassenregistrierung und den Fenstererstellungscode durch einen einfachen Aufruf an DialogBoxParam. DialogBoxParam liest die Dialogressource und erstellt den Dialog, der automatisch alles auf die Benutzerschriftseinstellungen skaliert, die Nachrichtenschleife behandelt und andere Dinge wie die automatische Unterstützung des Tabbing zwischen den Steuerelementen ausführt.

+0

eine Sache - Sie müssen gültige Theme Schriftarten für die Steuerelemente selbst aktualisieren, sonst erhalten Sie Standardschriftarten aus der .Res-Dialogfeld Beschreibung –

1

Sie müssen es nicht im WM_CREATE-Ereignis tun, aber Sie können. Ich erstelle normalerweise untergeordnete Fenster in demselben Bereich, in dem das Hauptfenster erstellt wurde. Zum Beispiel:

HWND mainWindow = CreateWindowEx(...); 
HWND editField = CreateWindowEx(...); // use mainWindow for the hWndParent param 
             // the hMenu parameter sets child window id