【vb6.0】 如何判断窗体是否被遮挡,我想实现:当窗体显示但被遮挡时则移至上层,未被遮挡则隐藏;窗体隐藏时切换为显示
我想实现像千千静听那样的效果:
左键单击程序在托盘的图标进行切换窗体的显示/隐藏状态,即:
1.当主界面为显示状态,但是被其他窗体遮挡(不是在最上层)的话,单击托盘图标则移至最上层(注意我并不要总是在最顶层),而如果在最上层,则切换到隐藏状态
2.当主界面为隐藏状态,单击托盘图标则切换为显示状态,主界面在最上层(这个容易实现)所以请朋友看清楚了,我的难点是第1点,希望能够紧扣我的问题哦
我想实现像千千静听那样的效果:
左键单击程序在托盘的图标进行切换窗体的显示/隐藏状态,即:
1.当主界面为显示状态,但是被其他窗体遮挡(不是在最上层)的话,单击托盘图标则移至最上层(注意我并不要总是在最顶层),而如果在最上层,则切换到隐藏状态
2.当主界面为隐藏状态,单击托盘图标则切换为显示状态,主界面在最上层(这个容易实现)所以请朋友看清楚了,我的难点是第1点,希望能够紧扣我的问题哦
解决方案 »
- 运行时怎么建立菜单?
- api后台模拟回车的问题
- 谁有像ACDSEE里放大缩小、移动的鼠标指针?
- directx 问题 在线等待
- 如何用VB判断SQL中的数据库是否已在运行,若在运行使之暂停,并发出在运行的信息;若已暂停使之启动,并发出已暂停的信息
- 怪事啊!同样的语句在SQL中行,可是在ACCESS里就是查不出来
- 一个mshflexgrid的问题,会者请进。
- 奇怪,我的程序不能检键盘事件了??
- 帮帮忙,用vba写入sql server数据类型转换问题
- 关于VB打包OCX控件的问题
- vb如何检测背景音乐的状态(stopped or palying)?用mciSendString检测与用户控件共用是否会产生冲突?
- 如何让程序在第一次运行时执行一个外部文件。就让这个文件只运行一次
Call SetWindowPos(Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)
Else
Me.Hide
End If
这正是我的问题的关键所在,即主界面看上去在最上层(未有被其他窗体遮挡,窗体为当前活动窗体),但实际上貌似不是在最上层。
我用的窗体是BorderStyle=0,ShowInTaskbar=false
如果有多个 TOPMOST 窗口,最近激活的在前面。即使两个窗口的显示区没有交叉,依旧存在前后关系。
你的窗口不是最上层,只是表示存在可以覆盖你的窗口,并不一定看起来就是被挡住的。
焦点在窗体内并不等于焦点直接等于窗体的窗口句柄,要用 IsChild(Me.hWnd, GetActiveWindow()) 判断。
千千静听也没用总是最前,但是它能实现我要的那种效果。
不知道是不是我的代码中有不当之处,还是运用API不当。 大侠来救救我!被问题困扰着,好痛苦,总似有个心结。若能提供完整的思路并代码最好
如果你有类似的源代码,也可,我可以借鉴之。
解惑!我原以为GetActiveWindow()只是获取窗体的句柄
Me.Show
Else
Me.Hide
End If