Erste Gehversuche mit Watcom
-
Hi!
Ich habe gestern auf meinem Rechner Open Watcom installiert und möchte nun ein kleines Programm erstellen, wozu ich natürlich hilfe benötige, denn ich bin ahnungslos;-)
Im Dialog Editor habe ich schon ein bischen rumgespielt.
Meine Frage(n):
Wie kann ich die Buttons die ich im Dialog Editor erstelle mit einer Funktion belegen?Mein Programm sollte wenn ich auf den Button klicke folgendes tun:
Kopiere die Datei x.exe, nenne sie in xy.exe um, erstelle eine Textdatei mit Inhalt 'textetext' und speichere sie, füge die Datei xy.reg der Registry hinzu, gib Meldung 'Fertig'.Kann ich die Registry Datei als Resource in mein Programm einbinden, wenn ja, wie?
-------------------------------------------------------------------------------
Ich habe nun im Dialog Editor das GUI erstellt. Die *.DLG Datei kann ich im MS Editor öffnen. Wie kann ich einen Button nun mit der oben erwähnten Funktion belegen?Ich weiss das sind viele Fragen!
Bitte helft mir.
Vielen Dank!
-
Lad Dir mal den Windows Platform SDK bei Microsoft herunter ( http://msdn.microsoft.com/library/ ) und/oder lies Dir die Kapitel ueber Windows Ressourcen, und generell die Kapitel ueber Window- und Dialogprogrammierung durch.
Das laesst sich nicht in einem Satz erklaeren.
Generell funktioniert es so, dass in der Resource-Datei (.RES), die an das EXE File mittels dem Resource-Compiler RC drangebunden wird, z.B. eine Dialogschablone enthalten ist.
Beim Anzeigen eines Dialogs gibt man die Kennung der Dialogschablone an, sowie eine Fensterprozedur, die fuer Meldungen des Dialogs ausgefuehrt werden soll. Dort kann man dann z.B. einen WM_COMMAND-Handler einfuegen, der auf das Anklicken von Buttons reagiert. Jeder Button im Dialog hat eine Kennung, anhand der man ihn identifizieren kann.
Es sind wirklich nur ein paar Zeilen Code.
z.B. der Aufruf des Dialoges sieht dann so aus:
int result = DialogBox( hInstMain, "DBCATALOG", hwndFrame, DbCatalogProc );
Die Fensterprozedur fuer den Dialog sieht so aus:
BOOL CALLBACK DbCatalogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { switch ( uMsg ) { case WM_INITDIALOG: // ... Initialisierung ... return TRUE; case WM_COMMAND: { WORD wNotifyCode = HIWORD( wParam ); WORD wID = LOWORD( wParam ); HWND hwndCtl = (HWND) lParam ; switch ( wID ) { case 108: /* Save */ EndDialog( hwndDlg, 1 ); return TRUE; case 110: /* Cancel */ EndDialog( hwndDlg, 0 ); return TRUE; } } break; case WM_CLOSE: EndDialog( hwndDlg, 0 ); return TRUE; } return FALSE; }
P.S.: Du kannst Fragen, die sich generell auf die Windows-Programmierung beziehen, auch im WinAPI Forum hier stellen.