关于程序窗口问题,请教各位大虾

xufei3085 2011-06-19 11:53:56
在程序运行过程中,frmMains是主窗口,而camera1是一直隐藏的窗口,当运行到一定的步骤的时候,窗口camera1需要show并显示在最前方,但是主窗口处于setfoucs状态;应该用什么代码?

另外我发现,在窗口camera1出现后,我通过鼠标点击frmMains主窗口,原本主窗口在运行的程序突然返回到了Form_Activate 下的状态。何解???


等待各位高手的解答,感激不尽!!
...全文
36 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤独剑_LPZ 2011-06-20
  • 打赏
  • 举报
回复
可以考虑在Form_Activate里判断变量,
if bTrue then
..... '想执行的代码
end if
Tiger_Zhao 2011-06-20
  • 打赏
  • 举报
回复
'frmMains
Option Explicit

Private Sub Command1_Click()
ShowWindow camera1.hWnd, SW_SHOWNOACTIVATE
End Sub

Private Sub Form_Load()
camera1.Show , Me
camera1.Hide
End Sub
xufei3085 2011-06-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qianjin036a 的回复:]
下面代码供参考:

VB code
Option Explicit

''使指定窗口总在最前
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx……
[/Quote]
那应该如何避免你所说的windows的消息机制,我用setfocus也会触发Form_Activate事件,可是触发该事件却不是我想要的……
-晴天 2011-06-19
  • 打赏
  • 举报
回复
下面代码供参考:
Option Explicit 

''使指定窗口总在最前
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 SWP_NOMOVE = &H2
Const SWP_NOSIZE = &H1
Const SWP_NOZORDER = &H8

Sub SetFormTopmost(TheForm As Form)

SetWindowPos TheForm.hwnd, HWND_TOPMOST, 0, 0, 0, 0, _
SWP_NOZORDER + SWP_NOMOVE + SWP_NOSIZE

End Sub

Sub Form_Load()

SetFormTopmost Me ''只需要改动这里,ME换成你想放在最前的窗体名

End Sub

如果你还要使原窗体为当前窗体,只要调用这个窗体就行了.

你点击了某个窗体,就会激活该窗体的Activate事件.这是Windows的消息机制造成的.
booksoon 2011-06-19
  • 打赏
  • 举报
回复
Form_Activate为什么不是你想要的,不想要就不要在里面写代码啊~~

7,763

社区成员

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

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