knopfdruck und skalierungsprobleme



  • hallo

    #include <windows.h> 
    
    const char   szAppName[]      = "test"; 
    HWND hwndGet; 
    HWND hwndSend; 
    HWND hwndbutSend; 
    HWND hwndbutGet; 
    #define ed1 1 
    #define ed2 2 
    #define but1 3 
    #define but2 4 
    
    void editAusgabe(HWND hWnd,HINSTANCE hInstance) 
    { 
    
        hwndGet = CreateWindow("edit", NULL,WS_CHILD | WS_VISIBLE | ES_LEFT, 
        50, 10, 280, 70, hWnd, (HMENU) ed1, 
       hInstance, NULL) ; 
       SendMessage(hwndGet,WM_SETTEXT,0,(long)"Bisher Empfangene Nachrichten:"); 
    
       hwndSend = CreateWindow("edit", NULL,WS_CHILD | WS_VISIBLE | ES_LEFT, 
        50, 100, 280, 18, hWnd, (HMENU) ed2, 
       hInstance, NULL) ; 
       SendMessage(hwndSend,WM_SETTEXT,0,(long)"Nachricht Senden"); 
    } 
    
    void knopfAusgabe(HWND hWnd,HINSTANCE hInstance) 
    { 
    
        hwndbutSend = CreateWindow("button", "Senden",WS_CHILD | WS_VISIBLE | ES_LEFT, 
       200, 150, 130, 20, hWnd, (HMENU) but1, 
       hInstance, NULL) ; 
    
       hwndbutGet = CreateWindow("button", "Zurücksetzen",WS_CHILD | WS_VISIBLE | ES_LEFT, 
       50, 150, 130, 20, hWnd, (HMENU) but2, 
       hInstance, NULL) ; 
    
    } 
    
    void textAusgabe(HWND hWnd) 
    { 
          const char      szText[][150] =      /* Unsere auszugebenen Strings   */ 
                            { 
                               "\"Über Fussball kannst du mich alles fragen!\"", 
                               "sagt der Vater stolz zu seinem Sohn.", 
                               "\"So?\" meint der. \"Dann sag mir doch mal, wie", 
                               "viele Maschen das Tornetz hat!\"" 
                            }; 
              HDC            hDC;            /* Handle zum Device Contex      */ 
             PAINTSTRUCT      ps;               /* Speichert Zeichen Daten      */ 
    
             const int      iAnzahlZeilen   = 4;   /* Ist von szText abhängig   */ 
             const int      iZeilenabstand   = 18;   /* Passt einigermaßen      */ 
    
             hDC = BeginPaint(hWnd, &ps);         /* Zeichenvorgang anmelden   */ 
             { 
                int i = 0; 
    
                for (; i < iAnzahlZeilen; ++i)      /* Alle vier Zeilen...      */ 
                {                           /* mit TextOut untereinander ausgeben   */ 
                   TextOut(hDC, 40, 40 + i * iZeilenabstand, szText[i], strlen(szText[i])); 
                } 
             } 
             EndPaint(hWnd, &ps);               /* Zeichenvorgang beendet   */ 
    
    } 
    
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 
    { 
       switch (message) 
       { 
       case WM_PAINT: 
          { 
             //textAusgabe(hWnd); 
              return 0; 
          } 
    
       case WM_DESTROY: 
          { 
             PostQuitMessage(0); 
             return 0; 
          } 
       case WM_COMMAND: 
               switch (HIWORD(wParam))//Aktionsauswahl 
               { 
                 case BN_CLICKED://Button gedrückt ? 
                    switch(LOWORD(wParam))//Welcher ? 
                    { 
                    case but2://Button but (hwndbut) 
                       SendMessage(hwndSend,WM_SETTEXT,0,(long)"Verflucht"); 
                       break; 
                    } 
                    break; 
                 } 
                 return 0; 
    
       } 
    
       return DefWindowProc(hWnd, message, wParam, lParam); 
    } 
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) 
    { 
       MSG         msg; 
       HWND      hWnd; 
       WNDCLASS   wc; 
    
       wc.style            = CS_HREDRAW | CS_VREDRAW; 
       wc.lpfnWndProc         = WndProc; 
       wc.cbClsExtra         = 0; 
       wc.cbWndExtra         = 0; 
       wc.hInstance         = hInstance; 
       wc.hCursor            = LoadCursor(NULL, IDC_ARROW); 
       wc.hIcon            = LoadIcon(NULL, IDI_APPLICATION); 
       wc.hbrBackground      = (HBRUSH) GetStockObject(BLACK_BRUSH); 
       wc.lpszClassName      = szAppName; 
       wc.lpszMenuName         = NULL; 
    
       RegisterClass(&wc); 
    
       hWnd = CreateWindow(   szAppName, 
                         szAppName, 
                         WS_OVERLAPPEDWINDOW, 
                         300, 
                         200, 
                         400, 
                         200, 
                         NULL, 
                         NULL, 
                         hInstance, 
                         NULL); 
    
        editAusgabe(hWnd,hInstance); 
        knopfAusgabe(hWnd,hInstance); 
    
       ShowWindow(hWnd, iCmdShow); 
       UpdateWindow(hWnd); 
    
       while (GetMessage(&msg, NULL, 0, 0)) 
       { 
          TranslateMessage(&msg); 
          DispatchMessage(&msg); 
       } 
    
       return msg.wParam; 
    }
    

    1:problem->wenn ich den "but2" knopf drücke passiert nichts,wenn ich ihn abe gedrückt habe und dann auf die editbox (hwndSend) rein klicke, dann wird die neue zeichenkette erst reingeschrieben...wieso passiert das nicht gleich wenn ich auf den knopf drücke?

    2:problem->wenn ich das fenster skaliere, dann verschwinden mein einhalte (edit boxen,knöpfe)...wie kann ich das vermeiden?

    würde mich sehr auf eine baldige antwort freuen.

    tschüss



  • zu 2.
    die WM_PAINT ist falsch.
    entwieder ganz weg, oder BeginPaint () EndPain () rein.



  • Also bei mir wird der neue Text sofort angezeigt 🙄


Anmelden zum Antworten