在VB中如何使某窗口置于其它窗口之前

来源:百度知道 编辑:UC知道 时间:2024/06/02 16:30:33
用VB做一个编辑器,做好了一个编辑窗口,还有一个工具面板,就像PHOTOSHOP里的那种工具面板,想让它永久置于编辑窗口之前,但不想让它置于所有程序之前影响其它程序工作,请帮忙解决一下~
注:用的是SDI窗体,不是MDI。
一楼的,你的办法我试过了,可是,当从工具面板窗体切换到编辑窗体上之后,并不会执行这个Form_LostFocus()
事件,不知道为什么~
二楼的朋友,我不想让那个窗口置于所有的程序之前,不然可能会影响到其它程序,总之,会很麻烦~
三楼的朋友,VB里确实能把窗口样式改成Toobar样式的,但是,我不知道怎么样把它置前~

是不是要让“工具面板”放在“编辑窗口”上面啊,这个容易:
下面的代码复制就行:
'API函数声明
Private Declare Function ShellAbout Lib "shell32.dll" Alias "ShellAboutA" _
(ByVal hwnd As Long, ByVal szApp As String, ByVal szOtherStuff As String, _
ByVal hIcon As Long) As Long
'比如说有两个窗体(Form1、Form2)
Private Sub Form_Load()
Form2.Show 0, Me'Form2就永远显示在Form1上面了
'如果要把Form2设置成Form1的子窗体的话就是下面的代码了
SetParent Form2.hwnd, Form1.hwnd
End Sub

自已慢慢看吧!呵呵

Private Sub Form_LostFocus()
Me.SetFocus
End Sub
试试这样行不行

这个要用到一个API函数:SetWindowPos me.hwnd, -1, 0, 0, 0, 0, 3

建立toolbar窗口,
像 Photoshop的窗口就有一下样式:
WS_PUPUP | WS_VISIBLE | WS_CLIPBLINGS | WS_BORDER

还有一下扩展样式

WS_EX_LEFT | WS_EX_LTRREADING |
WS_RIGHT_SCROLLBAR |WS_EX_TOOLWINDOW

这是用spy++看到,如果vb自己没有创建toolbar窗口的办法,你用 SetWindowLong这个api函数设置一下窗口的 样式给窗口就行了,保证一样的效果

引用API函数

Option Explici