vc如何让打开的子窗口默认是最大化的
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);
}
啊!这不就第一招么?再仔细看看吧。
经试验有效,而且没有第二招的缺点。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述