2012-05-31 5 views
0

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

Вот код, я использую в 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(). Они могут конвертировать между размером окна и клиента.