江湖告急:求一个可以屏蔽其他功能的“超级”弹出框

call_from_dream 2014-12-17 02:23:34
最近,我在用MFC修改一个弹出窗。

原先的弹出窗在弹出后,还能对弹出窗以外的东西进行操作。
现在,我想把那个弹出窗做成弹出后只能点击弹出窗上的功能,弹出窗以外的功能全部用不了。除非点击“退出”,让弹出窗消失,其他功能才能用得起来。不然,只要有弹出窗在,就只能对弹出窗进行操作,弹出窗之外的功能一律用不了。

敢问,哪位大侠知道这个怎么实现呢?
...全文
253 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
call_from_dream 2014-12-22
  • 打赏
  • 举报
回复
引用 16 楼 my3439955 的回复:
如果你对vc不那么熟悉,可能难以完成这个任务。 步骤: 1、截屏,相关函数:GetDC BitBlt等 2、创建新桌面,相关函数:CreateDesktop 3、创建进程(或线程)到新桌面,相关函数:CreateProcess(SetThreadDesktop)、SwitchDesktop 4、创建全屏窗口,相关函数:CreaeteWindow 5、在全屏窗口上绘制截图,相关函数:BItBlt 6、弹出一个提示框,相关函数:MessageBox 7、用户点击后,回退,相关函数:SwitchDesktop 原理:新建一个空白桌面,将当前桌面的屏幕截图到新桌面上去,画出来,然后弹窗,看起来一样,实则周围都是假的,当然点击不了了。
大侠,分到账。注意查收!
call_from_dream 2014-12-19
  • 打赏
  • 举报
回复
引用 16 楼 my3439955 的回复:
如果你对vc不那么熟悉,可能难以完成这个任务。 步骤: 1、截屏,相关函数:GetDC BitBlt等 2、创建新桌面,相关函数:CreateDesktop 3、创建进程(或线程)到新桌面,相关函数:CreateProcess(SetThreadDesktop)、SwitchDesktop 4、创建全屏窗口,相关函数:CreaeteWindow 5、在全屏窗口上绘制截图,相关函数:BItBlt 6、弹出一个提示框,相关函数:MessageBox 7、用户点击后,回退,相关函数:SwitchDesktop 原理:新建一个空白桌面,将当前桌面的屏幕截图到新桌面上去,画出来,然后弹窗,看起来一样,实则周围都是假的,当然点击不了了。
谢谢!你说的很详细!唉,我基础太差,暂时还搞不定。不过,对于你的详解我还是不胜感激!接下来,我得好好打基础了。以后希望多多关照!
  • 打赏
  • 举报
回复
如果你对vc不那么熟悉,可能难以完成这个任务。 步骤: 1、截屏,相关函数:GetDC BitBlt等 2、创建新桌面,相关函数:CreateDesktop 3、创建进程(或线程)到新桌面,相关函数:CreateProcess(SetThreadDesktop)、SwitchDesktop 4、创建全屏窗口,相关函数:CreaeteWindow 5、在全屏窗口上绘制截图,相关函数:BItBlt 6、弹出一个提示框,相关函数:MessageBox 7、用户点击后,回退,相关函数:SwitchDesktop 原理:新建一个空白桌面,将当前桌面的屏幕截图到新桌面上去,画出来,然后弹窗,看起来一样,实则周围都是假的,当然点击不了了。
hushoubo 2014-12-19
  • 打赏
  • 举报
回复
开个线程,一直 SetWindowPos( hWnd, HWND_TOPMOST,0,0,....);
call_from_dream 2014-12-18
  • 打赏
  • 举报
回复
引用 12 楼 vcttyys 的回复:
我现在要修改的那个对话框,也是前端显示的,不过虽然它在前端显示了,可还是可以点击它后面的软件主窗口功能,模态对话框就满足了
我不希望前端显示了那个框口后,还能点击后面的软件主窗口功能
allenhiman 2014-12-17
  • 打赏
  • 举报
回复
自己查查API CreateDesktop SwitchToDesktop吧 xp的那个锁屏就是一个新的desktop windows是支持多个桌面的. 但这样我不知道是否符合你的需求.
Rockismej 2014-12-17
  • 打赏
  • 举报
回复
我现在要修改的那个对话框,也是前端显示的,不过虽然它在前端显示了,可还是可以点击它后面的软件主窗口功能,模态对话框就满足了
版主大哥 2014-12-17
  • 打赏
  • 举报
回复
楼主说的就是 模态对话框啊
call_from_dream 2014-12-17
  • 打赏
  • 举报
回复
引用 9 楼 allenhiman 的回复:
别挺他们的 windows锁屏怎么做 你就怎么做就基本可以了 我只能说基本可以 就是新创建一个desktop 把你那个窗放在新desktop里面 如果这样不符合你的需求 那还真是难 无论你怎么做 都不会很健壮 因为就像你想把自己的窗口永远置顶一般 万一别人也用同样的方法 你说到底谁置顶
你好,大侠!请问 Windows XP的关机对话框是怎么做到除自身功能外,屏蔽所有其他功能的?我现在要修改的那个对话框,也是前端显示的,不过虽然它在前端显示了,可还是可以点击它后面的软件主窗口功能。我怎么做才能实现点击现在这个前端的框口外,后面其他的窗口功能全部点击不了
allenhiman 2014-12-17
  • 打赏
  • 举报
回复
别挺他们的 windows锁屏怎么做 你就怎么做就基本可以了 我只能说基本可以 就是新创建一个desktop 把你那个窗放在新desktop里面 如果这样不符合你的需求 那还真是难 无论你怎么做 都不会很健壮 因为就像你想把自己的窗口永远置顶一般 万一别人也用同样的方法 你说到底谁置顶
call_from_dream 2014-12-17
  • 打赏
  • 举报
回复
引用 6 楼 zhao4zhong1 的回复:
奉劝楼主不要把有限的生命浪费在无限的加密解密死循环中!
赵老师,小弟的编程经验浅,能否说具体点呀
一桶姜山 2014-12-17
  • 打赏
  • 举报
回复
要实现这种功能用模态对话框是不行的。 需要在程序中做到如下几点,能到大致的模拟出这个效果。 1、用定时器不停的EnumWindows遍历所有窗口,如果不是程序本身的窗口就ShowWindow(SW_HIDE);掉,并记录下该窗口的HWND。 2、SetWindowsHookEx()勾住WH_KEYBOARD_LL 和WH_MOUSE_LL,在钩子函数中屏蔽掉所有不是发送给本程序的鼠标和键盘操作。(要实现屏蔽功能需要将钩子做成dll) 3、在你程序退出时还原所有被你隐藏的窗口。 实现上述功能后ctrl+alt+del是仍然有效的,其他用户可以ctrl alt del注销掉系统,但是用这个方法呼叫出的任务管理器会被你的程序快速的隐藏掉。所以大致上达到了屏蔽其他程序的效果。 这个写功能的实现对于新手来说有点麻烦,特别是钩子这块。
赵4老师 2014-12-17
  • 打赏
  • 举报
回复
奉劝楼主不要把有限的生命浪费在无限的加密解密死循环中!
jacksonfan 2014-12-17
  • 打赏
  • 举报
回复
看这样不就是模态对话框么?
call_from_dream 2014-12-17
  • 打赏
  • 举报
回复
引用 2 楼 jinling4388 的回复:
你是想做一个类似windows关机选项那样屏蔽包括windows启动的其他程序在内的全部程序吗?
小弟编程刚入门,对许多东西生疏得很。我就是想把一个软件上点击出来的弹出框做成你说得那个样子。就像Windows关机选项那样。无奈自己技术太弱,摸不着门
call_from_dream 2014-12-17
  • 打赏
  • 举报
回复
引用 2 楼 jinling4388 的回复:
你是想做一个类似windows关机选项那样屏蔽包括windows启动的其他程序在内的全部程序吗?
是啊是啊。怎么做呀,大侠?
jinling4388 2014-12-17
  • 打赏
  • 举报
回复
你是想做一个类似windows关机选项那样屏蔽包括windows启动的其他程序在内的全部程序吗?
wjm1990 2014-12-17
  • 打赏
  • 举报
回复
AfxMessageBox没用吗?

15,980

社区成员

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

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