请教:如何让子窗口失去焦点后,其本身为最小化,且还能在其它窗口的前面?
请教:VB,使用MID窗口模式,在程序运行时,始终有个不可关闭的全屏的窗口在显示,比如是f1,通过菜单调出某个窗口后,如f2,再点击f1时,f2“躲”到f1的后面去了,再找f2时,还得通过菜单调出,太不方便了。
现在想:当点击f1时,让f2最小化,然后在失去焦点情况下f2还在保留在f1的前面。
最好是调试过好用的代码再贴出,谢谢各位!
问题点数:20、回复次数:12Top
1 楼boiciy(喜欢去哪去哪)回复于 2006-07-03 12:59:38 得分 2
f2可以设置成对话框。Top
2 楼Zygodactyous(Zygodactylous)回复于 2006-07-03 13:00:00 得分 0
在点击f1时,让f2最小化俺会做:
Private Sub F2_Deactivate()
mcFrm_f2.WindowState = 1 '最小化
'mcFrm_f2.ZOrder 0
End Sub
就是如何让子窗口失去焦点后,还能在f1的前面就不会了Top
3 楼zcsor(偶业余的虽然星星了,但是水平依然是非常业余的。)回复于 2006-07-03 13:10:05 得分 10
!!!强悍,失去焦点还在别人前面啊,真坏,呵呵
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
'将窗口置于最上面
rtn = SetWindowPos(f2.hwnd, -1, 0, 0, 0, 0, 3)
’取消顶层
rtn = SetWindowPos(f2.hwnd, -2, 0, 0, 0, 0, 3)
这个,这个,上面的方法你试试可能会行不通哦。。嘎嘎
办法倒不是没有,你用一个多选项卡可以。。恩。。这方法烂点。。
换一个,见过MID窗口最小化成一个工具条(在父窗体下面),这个方法好,应该是VB里面设计几个属性就行了,嘎嘎,偶没做过学VB10来年了,一个MID都没做。。。菜菜的,Top
4 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 13:18:47 得分 0
最小化还在最前
nb阿Top
5 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 13:19:51 得分 2
mdi子窗体能用setwindowspos吗?
他可不是直接可以findwindows那种Top
6 楼Zygodactyous(Zygodactylous)回复于 2006-07-03 14:11:05 得分 0
To zcsor:MDI窗口不能用setwindowspos,
To aspower:怎么不能啊,在VB中随便个MID的,有两个窗口就行,如f1,f2,不用全屏,把f2窗口最小化(能看到f2),把f2(此时f2为最小化),拖到f1窗口上面,看看如何,再点f1,f2也没有焦点了,但f2,还在f1的前面。我就是想要这种情况。
回答问题时都想想,不可能的问题是不会随便问的。
Top
7 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 14:13:10 得分 0
你没看明白
我没说你这个不可能
mdi子窗体能用setwindowspos吗?他可不是直接可以findwindows那种
我说的是zcsor
你这个问题有没有解我不知道哦
mdi的子窗体应该也有zorder的 但是怎么设置就不知道了
Top
8 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 14:21:04 得分 6
是不是做成工具栏那种类?
http://www.vbaccelerator.com/home/VB/Code/Controls/Toolbar/vbAccelerator_Office_Docking_Bar/article.aspTop
9 楼Zygodactyous(Zygodactylous)回复于 2006-07-03 14:21:37 得分 0
object.zorder 0
这样也不行,我把原代码上的zorder都注释掉了么,不然,焦点总是在这个窗口上。
To aspower: Sorry!!!!!!!!!!Top
10 楼Zygodactyous(Zygodactylous)回复于 2006-07-03 14:28:24 得分 0
To aspower: 对,类似工具栏那种效果,但我的E文不好,且是针对窗口的,你提到网页上的好像没有能应用到窗口上的??
请多多指教Top
11 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 14:38:54 得分 0
vb.net看了似乎有个showmodel方法可以实现
vb好像每看见
如果你是做工具栏有个折中办法
就是模拟一下子窗体
但实际不是子窗体把一个窗体做成无标题无状态栏的窗体 然后将他置顶
然后处理mdi主窗口的最小化和恢复事件 最小化就把那个模拟子窗体隐藏,恢复就显示
Top
12 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 14:43:05 得分 0
我试了下
好像mdi子窗口的zorder和gotforce有关系
我把
Form1.ZOrder 0
Me.ZOrder 1
放到form2的GotFocus事件里虽然能让form1置顶
但是发现焦点就不能留在form2里了Top




