Nach menü anklicken , soll ein Fenster erscheinen
-
Hallo , ich habe ein problem undzwar das wenn ich im menü auf ein knopf drücke , soll ein fenster erscheinen ... aber wie mache ich das ?
LRESULT CALLBACK ConPrefProc (HWND hConnectWnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; switch (message) { case WM_PAINT: hdc = BeginPaint (hConnectWnd, &ps); SetBkColor(hdc, RGB(212,208,200) ); TextOut (hdc, 100, 40, "Fenster B", 9); EndPaint (hConnectWnd, &ps); return 0; case WM_DESTROY: PostQuitMessage (0); return 0; } return DefWindowProc (hConnectWnd, message, wParam, lParam); }Hat der zwar ausgeführt aber beim klicken im menü kamm nix

-
sorry ich meinte diesen code hier:
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMsg, WPARAM wParam, LPARAM lParam) { int iCmdShow; char string[255]; HWND hConnectWnd,hMain; char ConnectWin[] = "fenster2"; WNDCLASS wc; HINSTANCE hI; ... case WM_COMMAND: switch(LOWORD(wParam)) { case ID_CONNECT: hConnectWnd = CreateWindow (ConnectWin, "test2",WS_SYSMENU | WS_MINIMIZEBOX, 400, 400, 285,112, NULL, NULL, hI, NULL); ShowWindow (hConnectWnd, iCmdShow); break; ...
-
Wie setzt du denn
WNDCLASS wc; HINSTANCE hI;?
Was sagt GetLastError?schirrmie
-
iCmdShow ist nicht definiert. Du kannst Die das sparen, wenn Du WS_VISIBLE verwendest.
-

ShowWindow (hConnectWnd, WS_VISIBLE);
TUTS NICHT !

-
WS_VISIBLE muß in CreateWindow nach WS_MINIMIZEBOX angegeben werden. Bei ShowWindow mußt Du SW_SHOW angeben.
-
cool aber das fenster soll ja erst erscheinen , wenn man im menü auf "verbinen " geklickt hat

-
Dann WS_VISIBLE bei CreateWindow weglassen und beim Anwählen des Menüpunktes ShowWindow(hConnectWnd, WS_SHOW) aufrufen.
-
hab ich ja auh schon aber dann kommt das fenster ja nicht

-
Die Deklaration von iCmdShow in Deiner WndProc solltest Du weglassen. iCmdShow wird von der WinMain übergeben. Wenn Du das lokal nochmal deklarierst, wird der eigentliche Show-Parameter ignoriert.
-
also ich hab jetzt nix verstanden ...
da so ist mein code mom:
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMsg, WPARAM wParam, LPARAM lParam) { char string[255]; HWND hConnectWnd,hMain; switch (iMsg) { case WM_CLOSE: DestroyWindow(hWnd); break; case WM_DESTROY: PostQuitMessage(0); return 0; case WM_COMMAND: switch(LOWORD(wParam)) { case ID_CONNECT: ShowWindow (hConnectWnd,SW_SHOW); break;
-
Ja, genau so meinte ich das.
-
ja ABER da kommt Kein 2Tes Fenster

-
Wenn der Timer schnell genug ist, hast Du eine Endlosschleife mit Stack-Overflow....
-
kann man mir mal jetzt sagen Was los ist also nicht mit expertenausdrücke ????

-
alllllllso
ich will wenn man auf ein menü-button (fenster mit menü)
drück soll ein 2tes fenster erscheinenaber es kommt kein 2tes fenster ... !!!
ich habe allles schon probiert:
________________________________
ShowWindow (hConnectWnd,SW_SHOW);
ShowWindow (hConnectWnd,SW_SHOW); (mit CreateWindow ... SW_VISIBLE) und ohne
ich hab case zu if gemacht
______________________________ABER NIX TUTS

-
du musst hConnectWnd noch vor WinMain definieren, also z.B.
HWND hConnectWnd; int WINAPI WinMain ...
-
tja tuts immer noch nicht

-
dann zeig doch einfach deinen gesamten code, ich habs jetzt schon mit wahrsagen probiert, hat nicht geklappt. also jetzt hilft nur noch dein code^^
-
#include <windows.h> #include "resource.h" HINSTANCE g_hInst; LPCSTR MainClassName = "Ein Menü-Beispiel"; LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK ConPrefProc (HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain (HINSTANCE hI, HINSTANCE hPrI, LPSTR szCmdLine, int iCmdShow) { char MainWin[] = "fenster1"; char ConnectWin[] = "fenster2"; UNREFERENCED_PARAMETER (hPrI); UNREFERENCED_PARAMETER (szCmdLine); g_hInst = hI; WNDCLASS wc; HWND hConnectWnd,hMain; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hI; wc.hIcon = NULL; wc.hCursor = LoadCursor (NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1); wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1); wc.lpszClassName = MainWin; RegisterClass (&wc); hMain = CreateWindow (MainWin, "test", WS_OVERLAPPEDWINDOW, 300, 300,410, 250, NULL, NULL, hI, NULL); ShowWindow (hMain, iCmdShow); UpdateWindow (hMain); wc.lpfnWndProc = ConPrefProc; wc.lpszMenuName = NULL; wc.lpszClassName = ConnectWin; RegisterClass (&wc); hConnectWnd = CreateWindow (ConnectWin, "test2",WS_SYSMENU | WS_MINIMIZEBOX , 400, 400, 285,112, NULL, NULL, hI, NULL); MSG msg; while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg); DispatchMessage (&msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hWnd,UINT iMsg, WPARAM wParam, LPARAM lParam) { char string[255]; HWND hConnectWnd,hMain; switch (iMsg) { case WM_CLOSE: DestroyWindow(hWnd); break; case WM_DESTROY: PostQuitMessage(0); return 0; case WM_COMMAND: switch(LOWORD(wParam)) { case ID_CONNECT: ShowWindow (hConnectWnd,SW_SHOW); break; case ID_\1: LoadString(GetModuleHandle(NULL),ID_STRING_ABOUT, string,sizeof(string)); MessageBox(hWnd,string,"Über",MB_ICONINFORMATION); break; case ID_FILE_EXIT: DestroyWindow(hWnd); break; } break; } return DefWindowProc(hWnd,iMsg,wParam,lParam); } LRESULT CALLBACK ConPrefProc (HWND hConnectWnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; switch (message) { case WM_PAINT: hdc = BeginPaint (hConnectWnd, &ps); SetBkColor(hdc, RGB(212,208,200) ); TextOut (hdc, 100, 40, "Fenster B", 9); EndPaint (hConnectWnd, &ps); return 0; case WM_DESTROY: PostQuitMessage (0); return 0; } return DefWindowProc (hConnectWnd, message, wParam, lParam); }