以下代码:自定义打开文件夹
问题:当弹出选择窗体时,如何使该窗体位于所有者中心?(它总是位于左上角)Public Function ShowFileDialog() As String
Dim hwnd
Dim ofn As OpenFilename
ofn.lpstrInitialDir = App.Path '''打开当前目录
ofn.lStructSize = Len(ofn)
ofn.lpfnHook = 1
ofn.hwndOwner = hwnd
ofn.lpstrFilter = "Skin files (*.skn)" & Chr$(0) & "*.skn" & Chr$(0) & Chr(0) & Chr(0)
ofn.lpstrFile = String(256, 0)
ofn.nMaxFile = 255
ofn.lpstrTitle = "请选择文件..."
ofn.Flags = &H800000 + &H1000 + &H8 + &H4
ofn.lpstrDefExt = "skn" + Chr(0)
GetOpenFileName ofn
If Mid(ofn.lpstrFile, 1, 1) <> Chr(0) Then ShowFileDialog = ofn.lpstrFile
End Function '
'''''自定义打开文件夹如何使用这段代码=>弹出选择窗体时,该窗体位于所有者中心?
问题:当弹出选择窗体时,如何使该窗体位于所有者中心?(它总是位于左上角)Public Function ShowFileDialog() As String
Dim hwnd
Dim ofn As OpenFilename
ofn.lpstrInitialDir = App.Path '''打开当前目录
ofn.lStructSize = Len(ofn)
ofn.lpfnHook = 1
ofn.hwndOwner = hwnd
ofn.lpstrFilter = "Skin files (*.skn)" & Chr$(0) & "*.skn" & Chr$(0) & Chr(0) & Chr(0)
ofn.lpstrFile = String(256, 0)
ofn.nMaxFile = 255
ofn.lpstrTitle = "请选择文件..."
ofn.Flags = &H800000 + &H1000 + &H8 + &H4
ofn.lpstrDefExt = "skn" + Chr(0)
GetOpenFileName ofn
If Mid(ofn.lpstrFile, 1, 1) <> Chr(0) Then ShowFileDialog = ofn.lpstrFile
End Function '
'''''自定义打开文件夹如何使用这段代码=>弹出选择窗体时,该窗体位于所有者中心?
Private Function ChooseFile(argLeft As Single, argTop As Single) As Boolean
' 设置为没有文件被选择
ChooseFile = False
' 移动MyCDForm位置
MyCDForm.Left = argLeft
MyCDForm.Top = argTop
' 设置CommonDialog控件
MyCDForm!CommonDialog1.CancelError = True
On Error GoTo OpenError
' 显示CommonDialog
MyCDForm!CommonDialog1.ShowOpen
' 卸载MyCDForm
Unload MyCDForm
ChooseFile = True
Exit Function
OpenError:
' 用户按下Cancel键
Unload MyCDForm
Exit Function
End Function
当你的程序需要调用Open对话框时,使用ChooseFile就可以了。argLeft和argTop是Open对话框在屏幕上出现的位置的左上角的坐标。从这个函数可以看出,实际上我们是将MyCDForm的位置该为argLeft和argTop,而利用Open对话框的位置总是出现在其父窗口的左上角这一特性来改变Open对话框的屏幕位置。类似地,你也可以显示其他的对话框。如果你想让对话框出现在屏幕中央,则argLeft = (Screen.Width - 对话框宽度) \ 2,argTop = (Screen.Height - 对话框高度) \ 2。对于屏幕大小为800*600个像素,显示Open对话框的情况,这两个值大致均为1500。