在MFC应用程序中设置窗口的大小

时间:2011-12-22 17:58:41

标签: c++ mfc window

对于许多用户来说,这个问题可能被认为是天真的,但我是MFC的新手,我需要一个指示。我想为SDI窗口设置一个特定的大小,但我没有这样做。我尝试了CMainFrame类中的代码:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWndEx::PreCreateWindow(cs) )
    return FALSE;

 cs.style = WS_OVERLAPPED | WS_SYSMENU | WS_BORDER;

 cs.cy = 600; 
 cs.cx = 600; 
 cs.y = ((cs.cy * 3) - cs.cy) / 2; 
 cs.x = ((cs.cx * 3) - cs.cx) / 2;


 return CFrameWnd::PreCreateWindow(cs); 
}

窗口仍然保持其大小,但没有任何变化。

就我而言,我可以覆盖CWnd类中的相应函数以获得相同的结果。鉴于我在程序中直到现在才使用CWnd类,我该怎么做?

2 个答案:

答案 0 :(得分:0)

将您的代码移到CFrameWndEx::PreCreateWindow

的调用之上

答案 1 :(得分:0)

您的课程是否真的来自CFrameWndEx?那是您在IMPLEMENT_DYNANIC / IMPLEMENT_DYNCREATE行中的课程吗?在BEGIN_MESSSAGE_MAP行?

还要考虑在您的消息地图中添加ON_WM_CREATE及其OnCreate方法以允许其他可能性:

  • 在这个新方法中做类似的事情。

  • 在此使用SetWindowPos