窗口最终是由Windows API 函数::CreateWindowEx创建,::CreateWindowEx需要窗口的信息,其中就有位置和大小,这些信息从哪里来?下面就分析一下:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) cs.cx=500; cs.x=0;
return TRUE;
还有很多的办法改变窗口运行的大小:?(需要更新) 方法一: 在单文档CDonghuaApp::InitInstance()中修改 BOOL CDonghuaApp::InitInstance() 。。。。。。 // The one and only window has been initialized, so show and update it. return TRUE;
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) this->MoveWindow(rect.left+100,rect.top+100,rect.Width()/2,rect.Height()/2,TRUE); 以一个sdi的工程举一个例子: int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) { TRACE0("Failed to create toolbar/n"); return -1; // fail to create } if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar/n"); return -1; // fail to create } m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); ::ShowWindow(this->m_hWnd,SW_SHOWMAXIMIZED);//代码在这里 return 0; } 对于MDI的窗口只要分别在主窗口的OnCreate函数和子窗口的PreCreateWindow函数中添加代码就可以
或者在App类的InitInstance函数中改变显示主框架的m_nCmdShow参数如下: m_nCmdShow = SW_SHOWMAXIMIZED; |