ERLEDIGT
NEIN
NEIN
ANTWORTEN
8
8
ZUGRIFFE
683
683
EMPFEHLEN
-
Hallo,
ich beschäftige mich gerade mit der WinAPI und möchte ein kleines Programm schreiben, mit dem ich aus einem Fenster heraus über das Menü weitere Fenster öffne.
Das habe ich auch (nach einem langen und harten Kampf
) hinbekommen.
Jetzt hapert es nur noch an einer Kleinigkeit.
Wie gesagt kann ich das Child window nach Auswahl eines Menü-Punktes mit CreateWindow öffnen. Wenn ich das Child schließe und anschließend über den selben Menüpunkt öffnen möchte geschieht allerdings nichts.
Muss ich das Child window erst vollständig löschen bevor ich es mit CreateWindow erneut aufbaue?
Bin leider noch ein blutiger Anfänger und kenne mich in der Ecke noch nicht so gut aus. Bin über jeden Hinweis dankbar.
Danke & Viele Grüße
Michl
-
17.07.10 10:21 #2
Wie genau erstellst du bzw. löschst du das ChildWindow? Zeig mal deinen Code!
mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
Hi,
hier mal mein Code.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
#include <windows.h> #define OPEN_WINDOW 101 HINSTANCE main_inst; HWND hwnd_main, hwnd_child; WNDCLASS wc; HMENU main_menu; LRESULT CALLBACK WndMain (HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK WndChild (HWND, UINT, WPARAM, LPARAM); // MAIN WINDOW int WINAPI WinMain(HINSTANCE hinst_main, HINSTANCE root, LPSTR t, int d) { MSG msg_main; // REGISTER MAIN WINDOW wc.style = CS_HREDRAW | CS_VREDRAW ; wc.lpfnWndProc = WndMain; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hinst_main; wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground= NULL; wc.lpszMenuName = NULL; wc.lpszClassName= "main"; if (!RegisterClass(&wc)) return 0; // CREATE MENU main_menu=CreateMenu(); AppendMenu(main_menu,MF_STRING,OPEN_WINDOW,"Open Child"); // CREATE MAIN WINDOW main_inst = hinst_main; hwnd_main= CreateWindow("main", //Name der Fensterklasse "Main Window", //Fenstertitel WS_OVERLAPPEDWINDOW | //Fensterstil WS_VISIBLE, CW_USEDEFAULT, //x-Koordinate linke obere Ecke CW_USEDEFAULT, //y-Koordinate linke obere Ecke 500, //Fensterbreite 200, //Fensterhöhe NULL, //Vaterfenster main_menu, //Menü hinst_main, //Programmzähler NULL); //zusätzliche Parameter while (GetMessage(&msg_main,NULL,0,0)) DispatchMessage(&msg_main); return msg_main.wParam; } // CALLBACK OF MAIN WINDOW LRESULT CALLBACK WndMain(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { switch(message) { case WM_COMMAND: switch(LOWORD(wparam)) { case OPEN_WINDOW: { // REGISTER CHILD WINDOW wc.hIcon = NULL; wc.lpszClassName = "child"; wc.lpfnWndProc = WndChild; if (!RegisterClass(&wc)) return 0; hwnd_child= CreateWindow("child", //Name der Fensterklasse "Child Window", //Fenstertitel WS_OVERLAPPEDWINDOW | //Fensterstil WS_VISIBLE, CW_USEDEFAULT, //x-Koordinate linke obere Ecke CW_USEDEFAULT, //y-Koordinate linke obere Ecke 500, 200, //Fensterhöhe hwnd_main, //Vaterfenster NULL, //Menü main_inst, //Programmzähler NULL); //zusätzliche Parameter }; return 0; } case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, message, wparam, lparam); } // CALLBACK OF CHILD WINDOW LRESULT CALLBACK WndChild(HWND hwnd_child, UINT message, WPARAM wParam, LPARAM lParam) { return DefWindowProc (hwnd_child, message, wParam, lParam); }
Danke für deine Hilfe!
Viele Grüße
Michl
-
17.07.10 16:27 #4
Muss bei
Code cpp:1
while (GetMessage(&msg_main,NULL,0,0)) DispatchMessage(&msg_main);
nicht noch ein TranslateMessage() rein?:
Code cpp:1 2 3 4 5
while (GetMessage(&msg_main,NULL,0,0)) { TranslateMessage(&msg_main); DispatchMessage(&msg_main); }
mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
17.07.10 16:35 #5_GST_ Tutorials.de Gastzugang
Du solltest die Window-Klasse "child" nicht jedes mal neu registrieren. Denn ab dem zweiten Mal erhälst du den Fehler, dass der Name bereits vergeben ist.
Code :1 2
ERROR_CLASS_ALREADY_EXISTS 1410 (0x582) Class already exists.
-
18.07.10 10:04 #6
@_GST_: Du hast hier schon einige Beiträge geschrieben. Willst du dich nicht registrieren, dann kannst du auch Beiträge editieren
mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
Ich kann mir kaum vorstellen, dass _GST_ das will
-
18.07.10 10:32 #8

Wieso nicht?
mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
Es soll vorkommen, dass hier auch Gäste schreiben, die eigentlich registriert sind, zum Beispiel weil sie an einem fremden PC keine Ahnung von ihrem Passwort haben
Ähnliche Themen
-
[WinAPI] Child-Fenster - Theorie? (evtl. mit Codebeispielen)
Von HCWD im Forum C/C++Antworten: 19Letzter Beitrag: 06.12.07, 17:31 -
Find Child Window
Von ooandioo im Forum VisualStudio & MFCAntworten: 5Letzter Beitrag: 26.04.07, 11:21 -
[MFC] Child Window in den Hintergrund
Von ulmi im Forum VisualStudio & MFCAntworten: 1Letzter Beitrag: 14.02.07, 16:05 -
WinApi child Sync.probleme
Von dark80 im Forum C/C++Antworten: 6Letzter Beitrag: 02.08.06, 14:38 -
CDialog als Child Window
Von anmae im Forum VisualStudio & MFCAntworten: 8Letzter Beitrag: 24.10.05, 10:05





Zitieren

Login






