Anfängerproblem



  • /*Hallo!
    Ich bin noch anfänger von Win32Api
    Programmiere aber schohn 1 1/2 Jahre in C
    und ich wollt mal in win32api ein programm schreiben
    mit zwei knöpfen und wenn man ein knopf
    drückt soll eine Messagebox etwas anzeigen.
    das Programm funktioniert auch
    Blos man kann nur einen knopf sehen und das scheint was mit
    dem MoveWindow zu tun haben ich hab ein tutorial aus dem internet
    und da wird aber die funktion nicht beschrieben.
    und ich hab mir ein buch besstellt aber das ist noch nicht da
    deswegen benutze ich das tutorial.
    könnt ihr villeicht das mal so umschreiben das die knöpfe untereinander
    sind oder nebeneinander.
    Ich benutze den Borland 5.2 und compiliere damit:bcc32 -tW C:\name der zu compilierten datei
    Danke Danke
    :-) :-)
    MFG MARCUS*/
    
    #include <windows.h>
    
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                       PSTR szCmdLine, int iCmdShow)
    {
       MSG        msg;
       HWND       hWnd;
       WNDCLASS   wc;
    
       const char szAppName[]  = "Windows Buttons";
    
       wc.cbClsExtra           = 0;
       wc.cbWndExtra           = 0;
       wc.hbrBackground        = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
       wc.hCursor              = LoadCursor(NULL, IDC_ARROW);
       wc.hIcon                = LoadIcon(NULL, IDI_APPLICATION);
       wc.hInstance            = hInstance;
       wc.lpfnWndProc          = WndProc;
       wc.lpszClassName        = szAppName;
       wc.lpszMenuName         = NULL;
       wc.style                = CS_HREDRAW | CS_VREDRAW;
    
       RegisterClass(&wc);
    
       hWnd = CreateWindow(    szAppName,
                               szAppName,
                               WS_OVERLAPPEDWINDOW,
                               CW_USEDEFAULT,
                               CW_USEDEFAULT,
                               CW_USEDEFAULT,
                               CW_USEDEFAULT,
                               NULL,
                               NULL,
                               hInstance,
                               NULL);
    
       ShowWindow(hWnd, iCmdShow);
       UpdateWindow(hWnd);
    
       while (GetMessage(&msg, NULL, 0, 0))
       {
          TranslateMessage(&msg);
          DispatchMessage(&msg);
       }
    
       return msg.wParam;
    }
    
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    static HWND hButton1;
    static HWND hButton2;
    
       switch (message)
       {
       case WM_CREATE:
          {
    
             hButton1 = CreateWindow(  "button",
                                      "Hallo",
                                      WS_CHILD | WS_VISIBLE,
                                      0, 0, 0, 0,
                                      hWnd,
                                      NULL,
                                      ((LPCREATESTRUCT) lParam) -> hInstance,
                                      NULL);
    
            hButton2 = CreateWindow( "button","Moin",WS_CHILD | WS_VISIBLE,0,0,0,0,hWnd,NULL,
                                 ((LPCREATESTRUCT) lParam) -> hInstance,NULL);
             return 0;
          }
    
       case WM_SIZE:
          {
    
             MoveWindow(hButton1, LOWORD(lParam) / 2 - 80, HIWORD(lParam) - 30, 
                                                               160, 22, TRUE);
    
             MoveWindow(hButton2, LOWORD(lParam) / 2 - 80, HIWORD(lParam) - 30, 
                                                               160, 22, TRUE);
             return 0;
          }
    
    case WM_COMMAND:
          {
             if (lParam == (LPARAM)hButton1)
             {
                if (HIWORD(wParam) == BN_CLICKED)
                   MessageBox(NULL,"HALLO","Info",0);
             }
             if(lParam == (LPARAM)hButton2)
             {
             if(HIWORD(wParam) == BN_CLICKED)
             MessageBox(NULL,"MION","Info",0);
             }
             return 0;
          }
       case WM_DESTROY:
          {
             PostQuitMessage(0);
             return 0;
          }
       }
       return DefWindowProc(hWnd, message, wParam, lParam);
    }
    


  • Sieh dir mal die Koordinaten an ... die Buttons liegen übereinander.

    M.T.



  • Original erstellt von Manuel:
    **Sieh dir mal die Koordinaten an ... die Buttons liegen übereinander.

    M.T.**

    Manuel hat recht. Ich bin zwar auch kein WinAPI Meister, aber das ist mir auch aufgefallen.
    Falls Du keinen Peil hast, wie die MoveWindow-Funktion aussieht, hier, frisch aus der MSDN:

    BOOL MoveWindow(
    HWND hWnd, // handle to window
    int X, // horizontal position
    int Y, // vertical position
    int nWidth, // width
    int nHeight, // height
    BOOL bRepaint // repaint option
    );

    Übrigens kannst Du die MSDN auch online einsehen (und damit alle WinAPI-Funktionen etc.), unter msdn.microsoft.com .

    CU


Anmelden zum Antworten