怎样实现主窗口独占

zhangw_david 2008-07-24 03:32:11
各位大侠,如题,我想让我的程序运行起来之后,首先最大化显示,然后独占整个wingdows屏幕,用户不能切换到别的窗口去,不能点开始按钮,意思就是当我的程序运行后,是用户可以操作的唯一程序,直道用户点退出。
给分
...全文
160 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangw_david 2008-07-30
  • 打赏
  • 举报
回复
感谢swankie,问题基本上解决了!
结贴如下:
1、在InitInstance()里在pMainFrame->UpdateWindow();这行之后添加如下:
::SetWindowPos(m_pMainWnd->m_hWnd,HWND_TOPMOST,0,0,0,0,
SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW);
这样主窗口就top-most了。
2、下一步,去掉最大最小按钮,在CMainFrame::PreCreateWindow(CREATESTRUCT& cs)里:
cs.style = cs.style & ~(WS_MAXIMIZEBOX | WS_MINIMIZEBOX);
3、然后重载
//disable double click on no-client area, do nothing
void CMainFrame::OnNcLButtonDblClk( UINT nHitTest, CPoint point )
{
}
//disable drag-drop action on main frame
void CMainFrame::OnNcLButtonDown( UINT nHitTest, CPoint point )
{
if (nHitTest == HTCAPTION )
;
else
CFrameWnd::OnNcLButtonDown(nHitTest, point);
}

大功告成!
谢谢各位的帮助,让我受益匪浅!
我将自己的代码放在这里,希望对其他有类似问题的朋友有点帮助。
zhangw_david 2008-07-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wangjia184 的回复:]
哈哈 这个的最优解决方法不是窗口, 而是桌面!

你可以调用CreateDesktop创建一个桌面, 将这个进程在这个桌面上启动就可以了

其它任何东西, 包括那些时不时弹出的广告窗口都没了。。。。
[/Quote]
可否再说的清楚些,我很菜的: “将这个进程在这个桌面上启动就可以了”,生成了新桌面,如何在这个桌面上启动??
CodeProject-Jerry 2008-07-25
  • 打赏
  • 举报
回复
哈哈 这个的最优解决方法不是窗口, 而是桌面!

你可以调用CreateDesktop创建一个桌面, 将这个进程在这个桌面上启动就可以了

其它任何东西, 包括那些时不时弹出的广告窗口都没了。。。。
zhangw_david 2008-07-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 swankie 的回复:]
::SetWindowPos(this->m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE ¦SWP_NOSIZE ¦SWP_NOMOVE ¦SWP_SHOWWINDOW);
将当前窗体设置为最前面的窗口。其他程序就看不见了,但是你要先让他全屏,而且没有可以最小化的按钮等,不响应win+D键等。
[/Quote]
如何让主窗口全屏呢?
zhangw_david 2008-07-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 AliasKavin 的回复:]
游戏有全屏独占模式`~~~~
普通程序达到这个效果操作比较多`~~
[/Quote]
并非游戏的全屏模式,我的软件是一个测试软件,用于生产线,当软件启动后,操作员就只能操作这个测试软件,不能使用windows的其他资源,
alt+tab,win+D等都需要被禁止。
操作是比较多,还请各位大侠指点指点,一定涌泉加分!!
zhangw_david 2008-07-25
  • 打赏
  • 举报
回复
100分,如果哪位大大可以帮助小弟!!(第一次给分,不知道够不够,如果不够可以再加),谢谢啊
swankie 2008-07-24
  • 打赏
  • 举报
回复
::SetWindowPos(this->m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE|SWP_SHOWWINDOW);
将当前窗体设置为最前面的窗口。其他程序就看不见了,但是你要先让他全屏,而且没有可以最小化的按钮等,不响应win+D键等。
stivenjia 2008-07-24
  • 打赏
  • 举报
回复
也就是连tab+alt也需要禁止?以及ctrl+alt+del?
你究竟想怎么个独占法?类似病毒那种?
AliasKavin 2008-07-24
  • 打赏
  • 举报
回复
游戏有全屏独占模式`~~~~
普通程序达到这个效果操作比较多`~~
jieao111 2008-07-24
  • 打赏
  • 举报
回复
CreateWindow里的第三参数
caimps 2008-07-24
  • 打赏
  • 举报
回复
象游戏一样全屏

15,979

社区成员

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

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