MFC 使窗口不能改变大小,而且只能最大化显示。

用ModifyStyle(WS_THICKFRAME,NULL);可以让窗口不改变大小但怎么样让窗口一开始就是最大化显示,而且,即使双击标题栏,也不能改变其大小(双击时会... 用ModifyStyle(WS_THICKFRAME, NULL); 可以让窗口不改变大小
但怎么样让窗口一开始就是最大化显示,而且,即使双击标题栏,也不能改变其大小(双击时会回到程序设计时手工绘制的原始大小),就只能最大化显示,或者最小化隐藏。
试过禁用最大化,但是双击标题栏还是能改变大小,而且变不回去了(因为禁用了最大化)。

顺带问另外一个问题,自定义了一个消息响应函数,当接受到消息后做一些处理,如果还没有处理完(消息响应函数未运行结束),这时候下一个消息已经发出了,那会怎么样?
同时运行两个消息处理函数,还是会等待上一个运行结束再运行,还是丢弃掉第二个消息?
展开
 我来答
有你的晴天12138
推荐于2016-04-28 · TA获得超过1001个赞
知道小有建树答主
回答量:305
采纳率:80%
帮助的人:211万
展开全部

你的是基于对话框的应用程序么?可以这样修改:

1、右击对话框类,重载虚函数 PreTranslateMessage, 完成以下代码,过滤标题栏的双击消息即可。

BOOL CMFCTestDlg::PreTranslateMessage(MSG* pMsg) 
{
// TODO: Add your specialized code here and/or call the base class
if (pMsg->message == WM_NCLBUTTONDBLCLK)
{
return TRUE;
}

return CDialog::PreTranslateMessage(pMsg);
}

2、要使程序启动时就最大化,可以在对话框的 OnInitDialog 函数后面加入以下代码:

ShowWindow(SW_SHOWMAXIMIZED);


3、Windows的应用程序是有消息队列的,如果有第二个消息 Post 过来了,会进行排队,总之,消息是单个线程循环进行处理的。如果你写过第一个最原始的 WinMain 程序,会看到如下熟悉的代码:

MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}

这个 GetMessage 就是从应用程序消息队列中取出消息往下执行。

追问
非常感谢,回答很专业。
再请教一个小问题,窗口最大化时(基于对话框的程序),是全屏最大化,也就是覆盖了系统任务栏,这个可不可以设置的啊?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式