Nach menü anklicken , soll ein Fenster erscheinen
-
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); }
-
na ist ja kein wunder. du definierst hConnectWnd in der Callback-Funktion, aber woher soll das Programm denn wissen, dass du die gleiche hConnectWnd Variable meinst, wie in WinMain??
Also muss das so aussehen:#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); HWND hConnectWnd, hMain; 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; 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]; 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); }
-
Mach dein hConnectWnd mal global, in deiner Wndproc hat hConnectWnd doch überhaupt keinen wert mehr.
schirrmie
-
wie global machen
hwnd hConnectWnd;
ini hConnectWnd;oder wie
-
so wie fake geschrieben hat
schirrmie
-
jetzt ist das menü weg

#include <windows.h> #include "resource.h" HINSTANCE g_hInst; HINSTANCE hConnectWnd; 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; static HWND hButton,hButton2,hButton3,hButton4,hButton5,hButton6,hButton7,hButton8,hButton9,hButton10; switch (iMsg) { case WM_CLOSE: DestroyWindow(hWnd); break; case WM_DESTROY: PostQuitMessage(0); return 0; case WM_CREATE: { hButton = CreateWindow( "button","Hallo",WS_CHILD | WS_VISIBLE,0, 0, 0, 0,hWnd,NULL,((LPCREATESTRUCT) lParam) -> hInstance,NULL); hButton2 = CreateWindow( "button","Ja",WS_CHILD | WS_VISIBLE,0, 0, 0, 0,hWnd,NULL,((LPCREATESTRUCT) lParam) -> hInstance,NULL); hButton3 = CreateWindow( "button","Nein",WS_CHILD | WS_VISIBLE,0, 0, 0, 0,hWnd,NULL,((LPCREATESTRUCT) lParam) -> hInstance,NULL); hButton4 = CreateWindow( "button","Warum",WS_CHILD | WS_VISIBLE,0, 0, 0, 0,hWnd,NULL,((LPCREATESTRUCT) lParam) -> hInstance,NULL); hButton5 = CreateWindow( "button","Stimmt das",WS_CHILD | WS_VISIBLE,0, 0, 0, 0,hWnd,NULL,((LPCREATESTRUCT) lParam) -> hInstance,NULL); hButton6 = CreateWindow( "button","Tschüss",WS_CHILD | WS_VISIBLE,0, 0, 0, 0,hWnd,NULL,((LPCREATESTRUCT) lParam) -> hInstance,NULL); hButton7 = CreateWindow( "button","Achso",WS_CHILD | WS_VISIBLE,0, 0, 0, 0,hWnd,NULL,((LPCREATESTRUCT) lParam) -> hInstance,NULL); return 0; } case WM_SIZE: { MoveWindow(hButton, LOWORD(lParam) / 2 - 143, HIWORD(lParam) - 100, 60, 22, TRUE); MoveWindow(hButton2, LOWORD(lParam) / 2 - 83, HIWORD(lParam) - 100, 40, 22, TRUE); MoveWindow(hButton3, LOWORD(lParam) / 2 - 43, HIWORD(lParam) - 100, 40, 22, TRUE); MoveWindow(hButton4, LOWORD(lParam) / 2 - 3, HIWORD(lParam) - 100, 60, 22, TRUE); MoveWindow(hButton5, LOWORD(lParam) / 2 - 83, HIWORD(lParam) - 78, 80, 22, TRUE); MoveWindow(hButton6, LOWORD(lParam) / 2 - 143, HIWORD(lParam) - 78, 60, 22, TRUE); MoveWindow(hButton7, LOWORD(lParam) / 2 - 3, HIWORD(lParam) - 78, 60, 22, TRUE); 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); }
-
jetzt hab ich kein bock mehr

da poste ich dir extra den ganzen code nochmal, dmait du genau weißt wohin damit, und dann übernimmst du nichts davon
-
UPS Sorry nicht gesehn

aber jetzt ist das GANZE MENÜ WEG :p
-
GEIIIIIIIIIIIL TUTS DOCH 1000000 DANK AN ALLE UND BESONDERS AN " FAKE ODER ECHT "
