单文档初始最大化显示&&鼠标双击时窗口最大化失效

一、在基于MFC单文档做开发的时候,有时需要将单文档以最大化的方式显示,在网上查了资料,自己动手也实现了,以下将通过文字和代码进行描述:

1、一般方法在CXXApp::InitInstance()中,按照如下方式进行修改:

// The one and only window has been initialized, so show and update it.
m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);//将SW_SHOW->SW_SHOWMAXIMIZED:将窗口最大化显示
m_pMainWnd->UpdateWindow();
这种方式虽然可以实现将窗口最大化显示,但是 但效果是显示的时候窗口从普通大小"闪"到最大化,中间有一个渐变的过程,我们不希望有这样的一个效果;

2、或者在 CMainFrame::PreCreateWindow(CREATESTRUCT& cs)中,添加:

// the CREATESTRUCT cs
cs.style |= WS_MAXIMIZE;
//...
这种方法看上去是将窗口最大化显示了,设置的窗口的样式,但是运行程序后,窗口依然没有变化。

3、该方法就能解决上述提出的问题

// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
//添加最大化显示语句
m_nCmdShow = SW_SHOWMAXIMIZED; 
// Dispatch commands specified on the command line
if (!ProcessShellCommand(cmdInfo))
	return FALSE;

// The one and only window has been initialized, so show and update it.
m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);//将SW_SHOW->SW_SHOWMAXIMIZED:将窗口最大化显示
m_pMainWnd->UpdateWindow();

二、初始最大化显示后,如何保持最大化的状态。

1、首先需要将窗口右上角最大化失效;

2、然后禁用当鼠标双击时窗口最大化功能;

3、代码实现:
在CMainFrame::PreCreateWindow(CREATESTRUCT& cs)中设置窗口显示样式:

//禁止窗口最大化
cs.style &= ~WS_MAXIMIZEBOX; 
//使窗口不能用鼠标改变大小
cs.style &= ~WS_THICKFRAME;
在CXXApp类中重载:PreTranslateMessage(MSG* pMsg) 

BOOL CVIEW3App::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	if(pMsg->message == WM_NCLBUTTONDBLCLK)
	{
		return 1;
	}
	return CWinApp::PreTranslateMessage(pMsg);
}
4、实现窗口最大化显示






  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 1

打赏作者

xdhywj

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值