问题见标题
解决方案 »
- VB文件操作
- 几十个固定字符,有识别特征,程序该如何写选择语句,求思路
- 求关于vb+sql+ado+recordset的求和排序并取出积分值和名次的方法,进者有分。现结
- 怎么能将VB的exe文件的图标换成自定义的
- 请问在vb类问题****在线等候,马上给分*****
- 关于窗体一闪就消失的问题
- 如何在任何WINDOWS系统下调用.chm帮助文件??在线等
- DirListBox,FileListBox,DriveListBox 三个控件如何连动 (40)
- Option Explicit什么意思
- commandbutton的caption
- 有没有人做过用COM+控制多台FTP,MAIL,虚拟空间等设置?高分奖励!
- csdn登陆器1.7版及csdn验证码dll库打包下载
MsgBox "按钮!"
End SubPrivate Sub Form_Load()
MdiChildOnBottomSet Me.hwnd
End SubPrivate Sub Form_Unload(Cancel As Integer)
MdiChildOnBottomReset Me.hwnd
End Sub'创建一个MDI子窗口,Form2;'创建一个MDI父窗口;加入以下代码:Option ExplicitPrivate Sub MDIForm_Click()
Dim fm As Form2
Set fm = New Form2
fm.Show
End Sub'添加一个模块,Module1;加入以下代码:Option ExplicitPrivate Const WM_WINDOWPOSCHANGED = &H47
Private Const WM_WINDOWPOSCHANGING = &H46
Private Type WINDOWPOS
hwnd As Long
hWndInsertAfter As Long
x As Long
y As Long
cx As Long
cy As Long
flags As Long
End Type
Private Const SWP_NOZORDER = &H4
Private Const HWND_BOTTOM = 1&
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Const GWL_WNDPROC = (-4&)
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SetProp Lib "user32" Alias "SetPropA" (ByVal hwnd As Long, ByVal lpString As String, ByVal hData As Long) As Long
Private Declare Function GetProp Lib "user32" Alias "GetPropA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Private Declare Function RemoveProp Lib "user32" Alias "RemovePropA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Private Const PROP_OLDPROC = "MdiChildOnBottom_OldWndProc"
Private Declare Function DefWindowProc Lib "user32" Alias "DefWindowProcA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPublic Sub MdiChildOnBottomSet(ByVal hwnd As Long)
Dim oProc As Long
oProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf MdiChildOnBottomWndProc)
If oProc Then
SetProp hwnd, PROP_OLDPROC, oProc
End If
End SubPublic Sub MdiChildOnBottomReset(ByVal hwnd As Long)
Dim lpProc As Long
lpProc = GetProp(hwnd, PROP_OLDPROC)
If lpProc Then
SetWindowLong hwnd, GWL_WNDPROC, lpProc
End If
RemoveProp hwnd, PROP_OLDPROC
End SubPrivate Function MdiChildOnBottomWndProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim wpos As WINDOWPOS, oProc As Long
Select Case uMsg
Case WM_WINDOWPOSCHANGING
CopyMemory wpos, ByVal lParam, LenB(wpos)
wpos.hWndInsertAfter = HWND_BOTTOM
wpos.flags = wpos.flags And (Not SWP_NOZORDER)
CopyMemory ByVal lParam, wpos, LenB(wpos)
End Select
oProc = GetProp(hwnd, PROP_OLDPROC)
If oProc Then
MdiChildOnBottomWndProc = CallWindowProc(oProc, hwnd, uMsg, wParam, lParam)
Else
MdiChildOnBottomWndProc = DefWindowProc(hwnd, uMsg, wParam, lParam)
End If
End Function'运行。
'Form1自动创建。点击父窗口来创建Form2。
'但Form1始终在最下面,并且可以获得焦点。