您的位置:首页 > 其它

vc如何让打开的子窗口默认是最大化的

2010-08-22 19:50 211 查看
MDI子窗口一启动就最大化
方法一:
在CChildFrame::PreCreateWindow(CREATESTRUCT& cs)函数中,加了
cs.style |= WS_VISIBLE|WS_MAXIMIZE;,可以实现了
方法二:
用ClassWizard为CChildFrame类添加ActiveFrame消息
void CChildFrame::ActivateFrame(int nCmdShow)
{
if(GetMDIFrame()->MDIGetActive())
CMDIChildWnd::ActivateFrame(nCmdShow);
else // else open maximized.
CMDIChildWnd::ActivateFrame(SW_SHOWMAXIMIZED);

}

主窗口最大化:
在 InitStance 函数中设定 m_nCmdShow的取值.
m_nCmdShow=SW_SHOWMAXMIZED //最大化
MDI窗口:
重载 MDI Window 的PreCreateWindow函
数,设置WS_MAXIMIZE
文档一生成就最大化:
在视类重载的OnInitUpdate成员函数中加上:
CMDIChildWnd *pWnd=(CMDIChildWnd *)GetParentFrame();
pWnd->MDIMaximize();

使子框架窗口在创建时就最大化的正解:

有人说如下覆盖ActivateFrame虚函数就可以了:
BOOL PreCreateWindow(CREATESTRUCT& cs)
{
cs |= WS_MAXIMIZE;
return CMDIChildWnd::PreCreateWindow(cs);
}
经试验无效。

有人说覆盖ActivateFrame虚函数就可以了:
void CChildFrame::ActivateFrame(int nCmdShow)
{
// Create the child frame window maximized
nCmdShow = SW_MAXIMIZE;

CMDIChildWnd::ActivateFrame(nCmdShow);
}
经试验有效,但效果不好,因为用户可以看到一个最大化的过程,如同用户手工按下最大化按钮的情形一样。

再试,再上网搜索,难道没有办法了么?

最后一招:
BOOL PreCreateWindow(CREATESTRUCT& cs)
{
cs |= WS_MAXIMIZE|WS_VISIBLE;
return CMDIChildWnd::PreCreateWindow(cs);
}
啊!这不就第一招么?再仔细看看吧。
经试验有效,而且没有第二招的缺点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: