MDI Размер дочернего окна

Я пытаюсь создать дочернее окно в главном окне MDI... Главное окно имеет размер 1024 x 768... когда я пытаюсь использовать CreateWindowEx() для создания дочернего окна, размер кажется как-то смещенным... другими словами, дочернее окно размером 1024 x 768 меньше своего родительского окна... как я могу объяснить эту разницу? Когда я использую GetCLientRect() с дескриптором главного окна... размер все еще меньше... Мне все равно, чтобы дочернее окно было такого же размера. Я хочу, чтобы дочернее окно охватывало точный размер изображения 750х563. Когда я устанавливаю этот размер в параметрах CreateWindowEx(), дочернее окно слишком мало...

Вот код, который я использую в MainWndProc для создания дочернего окна:

LRESULT CALLBACK MainWndProc(HWND hWnd, UINT Msg,
                             WPARAM wParam, LPARAM lParam)
{
    HDC          hdc;
    PAINTSTRUCT  ps;

    switch(Msg)
    {
        case WM_CREATE:
            {
                //OnCreate(hWnd, NULL);
                CLIENTCREATESTRUCT ccs;

                ccs.hWindowMenu  = GetSubMenu(GetMenu(hWnd), 2);
                ccs.idFirstChild = StartChildrenNo;

                hWndChildFrame = CreateWindowEx(WS_EX_CLIENTEDGE,
                    L"MDICLIENT",
                    NULL,
                    WS_CHILD | WS_CLIPCHILDREN | WS_VSCROLL
                    | WS_HSCROLL | WS_VISIBLE,
                    0,
                    0,
                    1024,
                    768,
                    hWnd,
                    (HMENU)IDM_FILE_NEW,
                    GetModuleHandle(NULL),
                    (LPVOID)&ccs);

                if(hWndChildFrame == NULL)
                    MessageBox(hWnd, L"Could not create MDI client.", L"Error", MB_OK | MB_ICONERROR);

                CreateNewMDIChild(hWndChildFrame);              
                                return 0;
            }

...}

1 ответ

Решение
  1. Чтобы определить размер дочернего окна MDI, используйте GetClientRect() окна клиента MDI.

  2. Для вычисления необходимого размера окна для дочернего окна MDI используйте AdjustWindowRect() или же AdjustWindowRectEx(), Те могут конвертировать между окном и размером клиента.

Другие вопросы по тегам