'Sizing an MFC Window

I have an MFC app which I have been working on for a few weeks now, I want to manually set the dimensions of the main frame when it is loaded, can someone give me a hand with this, specifically where to put the code as well?

Thanks!



Solution 1:[1]

Find your screen size with ..

CRect rect;
SystemParametersInfo(SPI_GETWORKAREA,0,&rect,0);
screen_x_size=rect.Width();  
screen_y_size=rect.Height();

use these values to calculate the X and Y size of your window then ..

::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,main_x_size,main_y_size,SWP_NOZORDER); 

Where main_x_size and main_y_size are your sizes.

Solution 2:[2]

I think you're looking for PreCreateWindow and that your app isn't dialog based.

It's a virtual member function of CWnd class and it's called by framework just before a window is created. So it's a right place to place your changes.

You should write something like this:

BOOL CMyWindow::PreCreateWindow(CREATESTRUCT& cs)
{
   cs.cy = 640; // width
   cs.cx = 480; // height
   cs.y = 0; // top position
   cs.x = 0; // left position
   // don't forget to call base class version, suppose you derived you window from CWnd
   return CWnd::PreCreateWindow(cs);
}

Solution 3:[3]

you can use this:

CRect rect;
SystemParametersInfo(SPI_GETWORKAREA, 0, &rect, 0);
left = -3, right = 3;
rect.top = 100;
rect.bottom = 500;
rect.left = 100;
rect.right = 800;
//or use
CRect cr;
cr.SetRect(POINT{ 100,100 }, POINT{ 500,800 });
MoveWindow(rect);

Solution 4:[4]

BOOL YourProjectApp::InitInstance()
{
        :
        :
    m_pMainWnd->MoveWindow(0, 0, 1900, 1000);  // add this line for fixing the default size of mainWindow
    m_pMainWnd->ShowWindow(SW_SHOW);
    m_pMainWnd->UpdateWindow();
    return TRUE;
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 IanW
Solution 2 Serge
Solution 3 V? ??c V?
Solution 4 Zarina Abdibaitova