窗口的客户区域大小不能超过屏幕分辨率大小吗?

butwang 2011-11-05 10:36:58
带标题栏的窗口的客户区的最大区域好像不能超过屏幕分辨率的大小
比如1440*900的分辨率
MoveWindow之后客户区的大小的高度总是小于900, 好像排除了任务栏的高度,

int nScreenWidth = ::GetSystemMetrics(SM_CXSCREEN);
int nScreenHeight = ::GetSystemMetrics(SM_CYSCREEN);

RECT rectWindow;
SetRect(&rectWindow, 0, 0, nScreenWidth, nScreenHeight);
AdjustWindowRect(&rectWindow, GetWindowLong(m_hWnd, GWL_STYLE), FALSE);

::ShowWindow(m_hWnd, SW_RESTORE);
::MoveWindow
(
m_hWnd,
rectWindow.left,
rectWindow.top,
rectWindow.right - rectWindow.left,
rectWindow.bottom - rectWindow.top,
TRUE
);

这样调整以后是不行的
怎样可以让客户区是1440*900的,不知道还有什么设置(是带标题栏的情况下)

...全文
261 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
butwang 2011-11-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jennyvenus 的回复:]
引用 4 楼 butwang 的回复:
已解决,修改
WM_GETMINMAXINFO
消息的参数

对,设置不能小于某值是可以了,不过还是滚动一下内容比较好。
[/Quote]
我在做游戏的假全屏实现,用spy++观察了一下已有游戏的实现,他们确实是带标题栏的window,而且客户区大小就是全屏分辨率的大小.

用户 昵称 2011-11-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 butwang 的回复:]
已解决,修改
WM_GETMINMAXINFO
消息的参数
[/Quote]
对,设置不能小于某值是可以了,不过还是滚动一下内容比较好。
butwang 2011-11-07
  • 打赏
  • 举报
回复
已解决,修改
WM_GETMINMAXINFO
消息的参数
dshu 2011-11-05
  • 打赏
  • 举报
回复
怎么在窗口全屏的时候,覆盖掉任务栏

先放上一些玩意的隐藏
任务栏::ShowWindow(::FindWindow(_T("Shell_TrayWnd"), NULL), SW_HIDE);
开始菜单 ::ShowWindow(::GetDlgItem(::FindWindow(_T("Shell_TrayWnd"), NULL),0x130), SW_HIDE);//0x130 是开始按钮的ID
桌面 ::ShowWindow(::FindWindow(_T("ProgMan"), NULL), SW_HIDE);

禁用可以用EnableWindow()

以为隐藏任务栏就完事,结果下面不给腾出位子来,任务栏原先的地方还是不会被覆盖
在任务栏上右键,属性,设置任务栏自动隐藏任务栏时发现窗口会占据那块位置,网上找到个设置自动隐藏的代码,结合隐藏任务栏,成功达到目的

1.VOID HideTaskBar(BOOL bHide)
2.{
3. int nCmdShow;
4. HWND hWnd;
5. LPARAM lParam;
6.
7. hWnd = FindWindow(_T("Shell_TrayWnd"),NULL);
8. if(bHide == TRUE)
9. {
10. nCmdShow = SW_HIDE;
11. lParam = ABS_AUTOHIDE | ABS_ALWAYSONTOP;
12. }
13. else
14. {
15. nCmdShow = SW_SHOW;
16. lParam = ABS_ALWAYSONTOP;
17. }
18.
19. ShowWindow(hWnd,nCmdShow);
20.
21. APPBARDATA apBar;
22. memset(&apBar, 0, sizeof(apBar));
23. apBar.cbSize = sizeof(apBar);
24. apBar.hWnd = hWnd;
25. if(apBar.hWnd != NULL)
26. {
27. apBar.lParam = lParam;
28. SHAppBarMessage(ABM_SETSTATE, &apBar);
29. }
30.}
用到shellapi需要包含头文件


butwang 2011-11-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 shiyunqiang 的回复:]
试试SetWindowPos
[/Quote]
谢谢
SetWindowPos
也不行
shiyunqiang 2011-11-05
  • 打赏
  • 举报
回复
试试SetWindowPos

15,980

社区成员

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

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