Nach menü anklicken , soll ein Fenster erscheinen



  • 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 😞 🙄


  • Mod

    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 erscheinen

    aber 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 "

    👍 👍 👍 👍


Anmelden zum Antworten