MFC 设置窗口的大小与位置



原文地址


    窗口最终是由Windows API 函数::CreateWindowEx创建,::CreateWindowEx需要窗口的信息,其中就有位置和大小,这些信息从哪里来?下面就分析一下:

    下面是CFrameWnd中Create函数的声明


BOOL Create(LPCTSTR lpszClassName,
    LPCTSTR lpszWindowName,
    DWORD dwStyle = WS_OVERLAPPEDWINDOW,
   const RECT& rect = rectDefault,
    CWnd* pParentWnd = NULL,        // != NULL for popups
    LPCTSTR lpszMenuName = NULL,
    DWORD dwExStyle = 0,
    CCreateContext* pContext = NULL);

从onst RECT& rect = rectDefault,这就是窗口位置和大小参数 它有一个默认值,是Windows定义好的。

我以创建的当文档应用程序Single为例说明 CFrame的Create函数的调用中间无关的函数都删掉了
CSingleApp::InitInstance() ->CWinApp::ProcessShellCommand ->CDocTemplate::CreateNewFrame ->CFrameWnd::LoadFrame ->CFrameWnd::Create ->CWnd::CreateEx ->::CreateWindowEx
这一串函数在调用CFrameWnd::Create是得到了窗口的位置和大小

 

 

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
   return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs

cs.cx=500;
cs.cy=500;//修改默认矩形窗口rect的尺寸大小

cs.x=0;
cs.y=0;//修改默认窗口的位置


‍ return TRUE;
}


你可能感兴趣的:(MFC)