VS2010编译的SDI程序在win7上最大化显示有问题

houcy 2011-07-05 11:38:06
我用VS2010编译的SDI程序,把右上角的最大化按钮给变灰了,不让用户点击那个最大化按钮。然后在程序里InitInstance里调用pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);让SDI最大化显示。在win7系统上程序最大化显示后会在桌面任务栏的下面,而且是占满全屏。 请问如何在win7上最大化且只占满桌面的客户区,同时右上角的最大化按钮变灰?


谢谢啊!!!
...全文
132 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2011-08-16
  • 打赏
  • 举报
回复
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法
gibsonboy 2011-08-01
  • 打赏
  • 举报
回复
处理这个消息WM_GETMINMAXINFO,在里边可以设置你的窗口最大时和最小时的大小。例如


LPMINMAXINFO lpInfo=(LPMINMAXINFO)lParam;

lpInfo->ptMaxSize.x=GetSystemMetrics(SM_CXMAXIMIZED);
lpInfo->ptMaxSize.y=GetSystemMetrics(SM_CYMAXIMIZED);



也可以处理WM_NCCALCSIZE消息,这个是指定非客户区域的大小

if (wParam)
{
LPNCCALCSIZE_PARAMS lpnc=(LPNCCALCSIZE_PARAMS)lParam;
{
::CopyRect(&lpnc->rgrc[1], &lpnc->rgrc[0]);
::CopyRect(&lpnc->rgrc[2], &lpnc->rgrc[1]);
}
}
oyljerry 2011-07-05
  • 打赏
  • 举报
回复
获取桌面大小SystemParametersInfo(SPI_GETWORKAREA, 0, &rt, 0) // 获得工作区大小,然后MoveWindow
houcy 2011-07-05
  • 打赏
  • 举报
回复
关键原因是我把最大化按钮变灰不可用了,这样再调用
pMainFrame->ShowWindow(SW_SHOWMAXIMIZED);
pMainFrame->UpdateWindow();
就不用管用了。
程序最大化显示后会在桌面任务栏的下面,而且是占满全屏。
shiyunqiang 2011-07-05
  • 打赏
  • 举报
回复
pMainFrame->ShowWindow(SW_SHOWMAXIMIZED);
pMainFrame->UpdateWindow();

我这里可以啊。
我也是win7系统。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧