MDI 子窗口大小

MDI Child Window Size

本文关键字:窗口大小 MDI      更新时间:2023-10-16

我正在尝试在MDI主窗口中创建一个子窗口...主窗口的大小为 1024 x 768...当我尝试使用 CreateWindowEx() 创建一个子窗口时,大小似乎以某种方式偏移了......换句话说,1024 x 768 子窗口小于其父窗口...我如何解释这种差异?当我使用带有主窗口句柄的 GetCLientRect() 时...尺寸还是小...我不在乎使子窗口的大小相同。我希望子窗口包含 750x563 图像的确切大小。当我在 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. 若要确定 MDI 子窗口的大小,请使用 MDI 客户端窗口GetClientRect()

  2. 若要计算 MDI 子窗口所需的窗口大小,请使用 AdjustWindowRect()AdjustWindowRectEx() 。这些可以在窗口和客户端大小之间转换。