Partage
  • Partager sur Facebook
  • Partager sur Twitter

Contrôle d’édition windows en pleine fenêtre.

    6 mars 2024 à 16:53:39

    Bonjour,

    Comment mettre le contrôle d’édition windows en pleine fenêtre.

    Voilà ce que j'ai fait :

    #include <windows.h>
    
    HINSTANCE hinst;
    
    LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);
    
    int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,
                                                      LPSTR lpCmdLine, int nCmdShow)
    {
        HWND hwnd;
        MSG msg;
        WNDCLASS wc={0};
    
        hinst = hinstance;
    
        wc.lpfnWndProc = MainWndProc;
        wc.hInstance = hinstance;
        wc.hCursor = LoadCursor(NULL, IDC_ARROW);
        wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
        wc.lpszClassName = "Editor_class";
    
        RegisterClass(&wc);
    
        hwnd = CreateWindow("Editor_class", "Title", WS_OVERLAPPEDWINDOW,
                                      CW_USEDEFAULT, CW_USEDEFAULT, 400, 300,
                                                       NULL, NULL, hinstance, NULL);
        ShowWindow(hwnd, nCmdShow);
    
        while (GetMessage(&msg, NULL, 0, 0))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        return msg.wParam;
    }
    
    /******************************************************************************/
    
    LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
        switch (uMsg)
        {
          case WM_CREATE:
            CreateWindow("edit", "Ecrivez ici ...",
                WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL,
                    0, 0, 300, 200, hwnd, NULL, hinst, NULL);
            return 0;
    
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
    
        default:
            return DefWindowProc(hwnd, uMsg, wParam, lParam);
        }
    }



    • Partager sur Facebook
    • Partager sur Twitter
      7 mars 2024 à 2:29:20

      Regarde comment procède Charles Petzold (la référence) dans son exemple poppad1.c (Chapitre 9, page 321) ... Message WM_SIZE ...

      • Partager sur Facebook
      • Partager sur Twitter
        8 mars 2024 à 10:17:14

        Merci, je vais regarder ça.
        • Partager sur Facebook
        • Partager sur Twitter
          8 mars 2024 à 15:35:16

          Oui, le message WM_SIZE qui est envoyé à la fenêtre à chaque fois que sa taille est modifiée. Son paramètre lParam contient la taille de sa zone client. Il n'y a plus qu'a s'en servir pour modifier la taille du contrôle avec MoveWindow.

              static HWND hEdit;
          
              switch (uMsg)
              {
                 case WM_CREATE:
                      hEdit = CreateWindow("edit", "Ecrivez ici ...",
                       WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL,
                          0, 0, 300, 200, hwnd, NULL, hinst, NULL);
                      return 0;
          
                 case WM_SIZE:
                      MoveWindow(hEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
                      return 0;



          • Partager sur Facebook
          • Partager sur Twitter
          ...

          Contrôle d’édition windows en pleine fenêtre.

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          • Editeur
          • Markdown