关于SetWindowPos 在线等待,UP有分!!!!

PrettyMurphy 2003-12-15 10:15:40


在一个工程里面,有一个子窗体,我想一直让它置顶,所以我用了SetWindowPos API,但是在前面已经加载有模式窗体的情况下再加载使用SetWindowPos置顶的窗体时,这个子窗体便不能再接收到事件了。

开始不明白,后来我做了个测试,发现在使用SetWindowPos加载置顶子窗体前,必须前面没有加载任何的其它有模式窗体,否则就会造成上述情况。

我现在想问有没有办法在已经加载过有模式窗体的情况下可以让其它窗体置顶?


在线等待,谢谢!!
...全文
75 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yunfengh 2003-12-15
  • 打赏
  • 举报
回复
呵呵,帮你up...........
LanceJin 2003-12-15
  • 打赏
  • 举报
回复
up
PrettyMurphy 2003-12-15
  • 打赏
  • 举报
回复
to jhzhou882(狂刀客) :

我的意思是在弹出有模式窗体的情况下让另外一个子窗体置顶。

to 回复人: gxhwq(Buger) :

没错的我也是这样用的:

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
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40

Dim Success As Long
Success = SetWindowPos(EtKlokControl.hWnd, -1, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE)


SoHo_Andy 2003-12-15
  • 打赏
  • 举报
回复
呵呵,帮你up
gxhwq 2003-12-15
  • 打赏
  • 举报
回复
声明
Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (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

置顶: SetWindowPos Me.hwnd, -1, 0, 0, 0, 0, 3
恢复正常 SetWindowPos Me.hwnd, -2, 0, 0, 0, 0, 3
jhzhou882 2003-12-15
  • 打赏
  • 举报
回复
你的意思是让 弹出的有模式窗体在他后面?

我建议你改一下详细设计.
huntgirl 2003-12-15
  • 打赏
  • 举报
回复
我也不知道,up!
PrettyMurphy 2003-12-15
  • 打赏
  • 举报
回复
估计不行,在有的时候页面加载顺序不能搞乱的,如果不用模式窗口,如果在系统下一切换,回来时就是启动的主窗体在最前了,由于后面页面被前面的挡住了,但是我原来的页面有好多内容不可能重复加载的,所以就会出问题,唉真头大。

pigpag 2003-12-15
  • 打赏
  • 举报
回复
不要用模式窗口,自己动手用Enabled模仿效果

1,486

社区成员

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

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