VB 对话框窗口的使用
来源:互联网 发布:网易贵金属行情软件 编辑:程序博客网 时间:2024/06/06 04:45
一、概述
在 VB 编程中有许多调用窗口和对话框的操作,但是 VB 自已内置的却非常的少,这里所说的"不常用"也就是说通过 API 函数来实现各类调用窗口的操作。
二、通过 API 函数调用窗口的实用技巧如下:
(1)打开文件的属性窗口
图1,是一个文件的属性窗口,但是在VB中没提供"打开文件属性窗口"的函数,不过可以通过调用 API 函数"ShellExecuteEX "来完成。
Module1.bas
注释:声明 API 函数
Type SHELLEXECUTEINFO 注释:这可以VB自代的API帮助中找到
cbSize As Long
fMask As Long
hwnd As Long
lpVerb As String
lpFile As String
lpParameters As String
lpDirectory As String
nShow As Long
hInstApp As Long
lpIDList As Long
lpClass As String
hkeyClass As Long
dwHotKey As Long
hIcon As Long
hProcess As Long
End Type
Public Const SEE_MASK_INVOKEIDLIST = &HC
Public Const SEE_MASK_NOCLOSEPROCESS = &H40
Public Const SEE_MASK_FLAG_NO_UI = &H400
Declare Function ShellExecuteEX Lib "shell32.dll" Alias _
"ShellExecuteEx" (SEI As SHELLEXECUTEINFO) As Long
注释:定义子程序
Public Sub ShowProps(FileName As String, OwnerhWnd As Long)
Dim SEI As SHELLEXECUTEINFO
Dim r As Long
With SEI
.cbSize = Len(SEI)
.fMask = SEE_MASK_NOCLOSEPROCESS Or _
SEE_MASK_INVOKEIDLIST Or SEE_MASK_FLAG_NO_UI
.hwnd = OwnerhWnd
.lpVerb = "properties"
.lpFile = FileName
.lpParameters = vbNullChar
.lpDirectory = vbNullChar
.nShow = 0
.hInstApp = 0
.lpIDList = 0
End With
r = ShellExecuteEX(SEI)
End Sub
注释:调用窗口
ShowProps "c:command.com", Me.hwnd
(2)激活文件目录对话窗口
图2,是文件目录对话框,这个对话框在 VB 编中经常用到,可是 VB 却没有调用它的函数,只有通过下面 API 函数来完成相关操作。
声明 API 函数
Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long 注释:ITEMIDLIST
Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Public Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
注释:定义子程序
Sub BrowDir()
Dim bi As BROWSEINFO
Dim pidl&, rtn&, path$, pos%
pidl& = SHBrowseForFolder(bi)
path$ = Space$(512)
rtn& = SHGetPathFromIDList(ByVal pidl&, ByVal path$)
If rtn& Then
pos% = InStr(path$, Chr$(0))
MyPath = Left(path$, pos - 1)
End If
End Sub
注释:调用该对话框
BrowDir 注释:返回 MyPath 的值就是所选的目录
(3)如何调用系統的【查找】、【替换】的对话框?
如图3、图4,大家在编写记事本程序时,都会去编写这两个对话框的功能,其时 Microsoft 提供了一个控件文档,就是 comdlg32.dll,它可以方便的调用这两个对话框
注释:声明 Type FINDREPLACE
Private Type FINDREPLACE
lStructSize As Long
hwndOwner As Long
hInstance As Long
flags As Long
lpstrFindWhat As String
lpstrReplaceWith As String
wFindWhatLen As Integer
wReplaceWithLen As Integer
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
注释:调用 Common Dialog DLL
Private Declare Function FindText Lib "comdlg32.dll" Alias "FindTextA" _
(pFindreplace As FINDREPLACE) As Long
Private Declare Function ReplaceText Lib "comdlg32.dll" Alias "ReplaceTextA" _
(pFindreplace As FINDREPLACE) As Long
Dim frText As FINDREPLACE
在表单中加入二个 Command Button,并命名为 cmdFind, cmdReplace,加入以下程序代码:
Private Sub cmdFind_Click()
FindText frText 注释:调用查找对话框
End Sub
Private Sub cmdReplace_Click()
ReplaceText frText 注释:调用替换对话框
End Sub
Private Sub Form_Load()
With frText
.lpstrReplaceWith = "Replace Text"
.lpstrFindWhat = "Find Text"
.wFindWhatLen = 9
.wReplaceWithLen = 12
.hInstance = App.hInstance
.hwndOwner = Me.hWnd
.lStructSize = LenB(frText)
End With
End Sub
(4)在程序中调用关闭Windows对话框
这个对话框比较简单只用一句话就搞定。
Private Declare Function SHShutDownDialog Lib "shell32" Alias "#60" (ByVal YourGuess As Long) As Long
注释:调用
SHShutDownDialog 0
在 VB 编程中有许多调用窗口和对话框的操作,但是 VB 自已内置的却非常的少,这里所说的"不常用"也就是说通过 API 函数来实现各类调用窗口的操作。
二、通过 API 函数调用窗口的实用技巧如下:
(1)打开文件的属性窗口
图1,是一个文件的属性窗口,但是在VB中没提供"打开文件属性窗口"的函数,不过可以通过调用 API 函数"ShellExecuteEX "来完成。
Module1.bas
注释:声明 API 函数
Type SHELLEXECUTEINFO 注释:这可以VB自代的API帮助中找到
cbSize As Long
fMask As Long
hwnd As Long
lpVerb As String
lpFile As String
lpParameters As String
lpDirectory As String
nShow As Long
hInstApp As Long
lpIDList As Long
lpClass As String
hkeyClass As Long
dwHotKey As Long
hIcon As Long
hProcess As Long
End Type
Public Const SEE_MASK_INVOKEIDLIST = &HC
Public Const SEE_MASK_NOCLOSEPROCESS = &H40
Public Const SEE_MASK_FLAG_NO_UI = &H400
Declare Function ShellExecuteEX Lib "shell32.dll" Alias _
"ShellExecuteEx" (SEI As SHELLEXECUTEINFO) As Long
注释:定义子程序
Public Sub ShowProps(FileName As String, OwnerhWnd As Long)
Dim SEI As SHELLEXECUTEINFO
Dim r As Long
With SEI
.cbSize = Len(SEI)
.fMask = SEE_MASK_NOCLOSEPROCESS Or _
SEE_MASK_INVOKEIDLIST Or SEE_MASK_FLAG_NO_UI
.hwnd = OwnerhWnd
.lpVerb = "properties"
.lpFile = FileName
.lpParameters = vbNullChar
.lpDirectory = vbNullChar
.nShow = 0
.hInstApp = 0
.lpIDList = 0
End With
r = ShellExecuteEX(SEI)
End Sub
注释:调用窗口
ShowProps "c:command.com", Me.hwnd
(2)激活文件目录对话窗口
图2,是文件目录对话框,这个对话框在 VB 编中经常用到,可是 VB 却没有调用它的函数,只有通过下面 API 函数来完成相关操作。
声明 API 函数
Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long 注释:ITEMIDLIST
Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Public Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
注释:定义子程序
Sub BrowDir()
Dim bi As BROWSEINFO
Dim pidl&, rtn&, path$, pos%
pidl& = SHBrowseForFolder(bi)
path$ = Space$(512)
rtn& = SHGetPathFromIDList(ByVal pidl&, ByVal path$)
If rtn& Then
pos% = InStr(path$, Chr$(0))
MyPath = Left(path$, pos - 1)
End If
End Sub
注释:调用该对话框
BrowDir 注释:返回 MyPath 的值就是所选的目录
(3)如何调用系統的【查找】、【替换】的对话框?
如图3、图4,大家在编写记事本程序时,都会去编写这两个对话框的功能,其时 Microsoft 提供了一个控件文档,就是 comdlg32.dll,它可以方便的调用这两个对话框
注释:声明 Type FINDREPLACE
Private Type FINDREPLACE
lStructSize As Long
hwndOwner As Long
hInstance As Long
flags As Long
lpstrFindWhat As String
lpstrReplaceWith As String
wFindWhatLen As Integer
wReplaceWithLen As Integer
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
注释:调用 Common Dialog DLL
Private Declare Function FindText Lib "comdlg32.dll" Alias "FindTextA" _
(pFindreplace As FINDREPLACE) As Long
Private Declare Function ReplaceText Lib "comdlg32.dll" Alias "ReplaceTextA" _
(pFindreplace As FINDREPLACE) As Long
Dim frText As FINDREPLACE
在表单中加入二个 Command Button,并命名为 cmdFind, cmdReplace,加入以下程序代码:
Private Sub cmdFind_Click()
FindText frText 注释:调用查找对话框
End Sub
Private Sub cmdReplace_Click()
ReplaceText frText 注释:调用替换对话框
End Sub
Private Sub Form_Load()
With frText
.lpstrReplaceWith = "Replace Text"
.lpstrFindWhat = "Find Text"
.wFindWhatLen = 9
.wReplaceWithLen = 12
.hInstance = App.hInstance
.hwndOwner = Me.hWnd
.lStructSize = LenB(frText)
End With
End Sub
(4)在程序中调用关闭Windows对话框
这个对话框比较简单只用一句话就搞定。
Private Declare Function SHShutDownDialog Lib "shell32" Alias "#60" (ByVal YourGuess As Long) As Long
注释:调用
SHShutDownDialog 0
- VB 对话框窗口的使用
- VB使用堆叠对话框的一个方法
- VB代码窗口鼠标滚轮的使用
- 用vb使用对话框资源创建对话框
- iLogic中使用VB.NET定制的对话框
- 对话框风格的窗口以及使用PopupWindow创建对话框风格窗口
- 对话框风格的窗口
- 使用对话框作为子窗口
- ASP.NET使用弹出窗口(对话框)的体会
- 有效的隐藏对话框窗口
- 定时关闭的对话框窗口
- Android对话框风格的窗口
- 关于主对话框窗口嵌入子对话框窗口的说明
- 在VB中使用API关闭窗口
- 在VB中使用API关闭窗口
- 在VB中使用API关闭窗口
- 在Vb.Net中弹出对话框的简单方法。使用Messagebox
- 在VC对话框中使用分割窗口
- -学习日记-线程的总结
- Setup the SSH server to use keys for authentication
- Linux 视频设备驱动V4L2最常用的控制命令使用说明(1.02)
- access 2007连接字符串
- 取百度北京时间
- VB 对话框窗口的使用
- 关于 !define /date
- Problem:"Invalid command: ${GetTime}"
- Trac - 为Tickets增加自定义字段
- SQLSERVER2008安装问题(挂起重新启动会导致安装程序失败 )
- [ZOJ1301][POJ1137] The New Villa
- ASP.NET 发布水晶报表(vs2008 en)
- linux setlocale用法
- javascript是大小写敏感的