vb6.0窗体总是最前

我做了一个程序,可以把窗体移动到边缘然后像qq一样隐藏,但是发现在全屏(全屏的win32程序,比如最大化的ie)时,把鼠标移动到窗体的位置却不弹出了(非最大化的win32... 我做了一个程序,可以把窗体移动到边缘然后像qq一样隐藏,但是发现在全屏(全屏的win32程序,比如最大化的ie)时,把鼠标移动到窗体的位置却不弹出了(非最大化的win32程序正常弹出),目测是窗口不再最前。。。。。求解。。。
其实说白了,就是怎么让窗口永远在最前》》》》》
展开
 我来答
darkelemental
2015-03-27 · TA获得超过242个赞
知道小有建树答主
回答量:202
采纳率:0%
帮助的人:100万
展开全部
SetWindowPos(),第二个参数用HWND_TOP或者HWND_TOPMOST,可以把窗口放到z序顶部。两个试一试,应该能解决你的问题
追问
其实说白了,就是怎么让窗口永远在最前》》》》》
就像qq的登录界面。。。。。。
追答

你这个问题有点复杂哦,没有代码,不太好说,按你的思路,应该是不断在wm_pain消息里调用SetWindowPos()来保持z序,但我认为这应该不是最好的解决方法,我认为思路应该是这样的:

你设定一个位置,窗口移动到那里就自动隐藏了,如果整个窗口都不在屏幕范围内了,那么这个窗口显然收不到wm_pain、WM_MOUSEMOVE之类的消息了,那么想用消息响应的方式把他弹出来应该是不行了,这时候你应该检测鼠标在屏幕上的位置,如果移动到某个区域就弹出窗口。

个人认为,要保证在窗口的任何状态下都能弹出,你需要这样:

  1. 在窗口隐藏之后开个线程,监视鼠标的位置,用while循环调用GetCursorPos;

  2. 鼠标移动到你要的位置就移动窗口,然后退出循环;

  3. 当然为了性能问题还需要设置这个线程的优先级什么的,内容比较多自行补脑吧。

 

如果说vb没有消息响应,vb有setwindowlong和getwindowlong,或者不知道怎么开线程,抱歉这里真写不下,请自己先充充电吧

微测检测5.10
2023-05-10 广告
您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇... 点击进入详情页
本回答由微测检测5.10提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式