CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

请教:如何让子窗口失去焦点后,其本身为最小化,且还能在其它窗口的前面?

楼主Zygodactyous(Zygodactylous)2006-07-03 12:57:08 在 VB / 基础类 提问

请教: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

相关问题

关键词

得分解答快速导航

  • 帖主:Zygodactyous
  • boiciy
  • zcsor
  • aspower_
  • aspower_

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo