说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

通用对话框专辑(全) -VB资料

HTML文档下载 WORD文档下载 PDF文档下载
通用对话框专辑(全) -VB资料
使用API调用Winodws各种通用对话框(Common Diaglog)的方法(一)

1.文件属性对话框
Type SHELLEXECUTEINFO
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

Const SEE_MASK_INVOKEIDLIST = &HC
Const SEE_MASK_NOCLOSEPROCESS = &H40
Const SEE_MASK_FLAG_NO_UI = &H400

Declare Function ShellExecuteEX Lib "shell32.dll" Alias "ShellExecuteEx" _
(SEI As SHELLEXECUTEINFO) As Long
Public Function ShowProperties(filename As String, OwnerhWnd As Long) As Long
'打开指定文件的属性对话框,如果返回值<=32则出错
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)
ShowProperties = SEI.hInstApp
End Function

新建一个工程,添加一个按钮和名为Text1的文本框
把以下代码置入CommandbButton_Click 中
Dim r As Long
Dim fname As String
'从Text1 中获取文件名及路径
fname = (Text1)
r = ShowProperties(fname, Me.hwnd)
If r <= 32 Then MsgBox "Error"

2.使用Win95的关于对话框
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
示例:
Dim x As Long
x = shellabout (Form1.hwnd, "Visual Basic 6.0", _
"Alp Studio MouseTracker Ver 1.0", Form1.icon)

2.调用"捕获打印机端口"对话框
Private Declare Function WNetConnectionDialog Lib "mpr.dll" _
(ByVal hwnd As Long, ByVal dwType As Long) As Long
示例:
Dim x As Long
x = WNetConnectionDialog(Me.hwnd, 2)

3.调用颜色对话框
Private Type ChooseColor
lStructSize As Long
hwndOwner As Long
hInstance As Long
rgbResult As Long
lpCustColors As String
flags As Long
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Private Declare Function ChooseColor Lib "comdlg32.dll" Alias "ChooseColorA" (pChoosecolor As ChooseColor) As Long

将以下代码置入某一事件中:
Dim cc As ChooseColor
Dim CustColor(16) As Long
cc.lStructSize = Len(cc)
cc.hwndOwner = Form1.hWnd
cc.hInstance = App.hInstance
cc.flags = 0
cc.lpCustColors = String$(16 * 4, 0)
Dim a
Dim x
Dim c1
Dim c2
Dim c3
Dim c4
a = ChooseColor(cc)
Cls
If (a) Then
MsgBox "Color chosen:" & Str$(cc.rgbResult)

For x = 1 To Len(cc.lpCustColors) Step 4
c1 = Asc(Mid$(cc.lpCustColors, x, 1))
c2 = Asc(Mid$(cc.lpCustColors, x + 1, 1))
c3 = Asc(Mid$(cc.lpCustColors, x + 2, 1))
c4 = Asc(Mid$(cc.lpCustColors, x + 3, 1))
CustColor(x / 4) = (c1) + (c2 * 256) + (c3 * 65536) + (c4 * 16777216)
MsgBox "Custom Color " & Int(x / 4) & " = " & CustColor(x / 4)
Next x
Else
MsgBox "Cancel was pressed"
End If

4.调用复制磁盘对话框
Private Declare Function SHFormatDrive Lib "shell32" (ByVal hwnd As Long, ByVal Drive As Long, ByVal fmtID As Long, ByVal options As Long) As Long
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

示例:
向窗体中添加一个名为Drive1的DriveListBox,将以下代码置入某一事件中
Dim DriveLetter$, DriveNumber&, DriveType&
Dim RetVal&, RetFromMsg&
DriveLetter = UCase(Drive1.Drive)
DriveNumber = (Asc(DriveLetter) - 65)
DriveType = GetDriveType(DriveLetter)
If DriveType = 2 Then 'Floppies, etc
RetVal = Shell("rundll32.exe diskcopy.dll,DiskCopyRunDll " _
& DriveNumber & "," & DriveNumber, 1) 'Notice space after
Else ' Just in case 'DiskCopyRunDll
RetFromMsg = MsgBox("Only floppies can" & vbCrLf & _
"be diskcopied!", 64, "DiskCopy Example")
End If

5.调用格式化软盘对话框
Private Declare Function SHFormatDrive Lib "shell32" (ByVal hwnd As Long, ByVal Drive As Long, ByVal fmtID As Long, ByVal options As Long) As Long
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
参数设置:
fmtID-
3.5" 5.25"
-------------------------
0 1.44M 1.2M
1 1.44M 1.2M
2 1.44M 1.2M
3 1.44M 360K
4 1.44M 1.2M
5 720K 1.2M
6 1.44M 1.2M
7 1.44M 1.2M
8 1.44M 1.2M
9 1.44M 1.2M

选项
0 快速
1 完全
2 只复制系统文件
3 只复制系统文件
4 快速
5 完全
6 只复制系统文件
7 只复制系统文件
8 快速
9 完全
示例:要求同上
Dim DriveLetter$, DriveNumber&, DriveType&
Dim RetVal&, RetFromMsg%
DriveLetter = UCase(Drive1.Drive)
DriveNumber = (Asc(DriveLetter) - 65) ' Change letter to Number: A=0
DriveType = GetDriveType(DriveLetter)
If DriveType = 2 Then 'Floppies, etc
RetVal = SHFormatDrive(Me.hwnd, DriveNumber, 0&, 0&)
Else
RetFromMsg = MsgBox("This drive is NOT a removeable" & vbCrLf & _
"drive! Format this drive?", 276, "SHFormatDrive Example")
Select Case RetFromMsg
Case 6 'Yes
' UnComment to do it...
'RetVal = SHFormatDrive(Me.hwnd, DriveNumber, 0&, 0&)
Case 7 'No
' Do nothing
End Select
End If
-----------------------------------------------------------------------------
使用API调用Winodws各种通用对话框(Common Diaglog)的方法(二)

1.选择目录/文件夹对话框
将以下代码置于一模块中
Option Explicit
' 调用方式:: string = BrowseForFolders(Hwnd,TitleOfDialog)
' 例如:String1 = BrowseForFolders(Hwnd, "Select target folder...")
Public Type BrowseInfo
hwndOwner As Long
pIDLRoot As Long
pszDisplayName As Long
lpszTitle As Long
ulFlags As Long
lpfnCallback As Long
lParam As Long
iImage As Long
End Type
Public Const BIF_RETURNONLYFSDIRS = 1
Public Const MAX_PATH = 260
Public Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)
Public Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Public Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Public Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long

Public Function BrowseForFolder(hwndOwner As Long, sPrompt As String) As String
Dim iNull As Integer
Dim lpIDList As Long
Dim lResult As Long
Dim sPath As String
Dim udtBI As BrowseInfo
'初始化变量
With udtBI
.hwndOwner = hwndOwner
.lpszTitle = lstrcat(sPrompt, "")
.ulFlags = BIF_RETURNONLYFSDIRS
End With
'调用 API
lpIDList = SHBrowseForFolder(udtBI)
If lpIDList Then
sPath = String$(MAX_PATH, 0)
lResult = SHGetPathFromIDList(lpIDList, sPath)
Call CoTaskMemFree(lpIDList)
iNull = InStr(sPath, vbNullChar)
If iNull Then sPath = Left$(sPath, iNull - 1)
End If
'如果选择取消, sPath = ""
BrowseForFolder = sPath
End Function
2.调用"映射网络驱动器"对话框
Private/Public Declare Function WNetConnectionDialog Lib "mpr.dll" _
(ByVal hwnd As Long, ByVal dwType As Long) As Long
x% = WNetConnectionDialog(Me.hwnd, 1)
3.调用"打开文件"对话框
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
将以下代码置于某一事件中
Dim ofn As OPENFILENAME
ofn.lStructSize = Len(ofn)
ofn.hwndOwner = Form1.hWnd
ofn.hInstance = App.hInstance
ofn.lpstrFilter = "Text Files (*.txt)" + Chr$(0) + "*.txt" + Chr$(0) + "Rich Text Files (*.rtf)" + Chr$(0) + "*.rtf" + Chr$(0)
ofn.lpstrFile = Space$(254)
ofn.nMaxFile = 255
ofn.lpstrFileTitle = Space$(254)
ofn.nMaxFileTitle = 255
ofn.lpstrInitialDir = curdir
ofn.lpstrTitle = "Our File Open Title"
ofn.flags = 0
Dim a
a = GetOpenFileName(ofn)
If (a) Then
MsgBox "File to Open: " + Trim$(ofn.lpstrFile)
Else
MsgBox "Cancel was pressed"
End If
4.调用"打印"对话框
Private Type PrintDlg
lStructSize As Long
hwndOwner As Long
hDevMode As Long
hDevNames As Long
hdc As Long
flags As Long
nFromPage As Integer
nToPage As Integer
nMinPage As Integer
nMaxPage As Integer
nCopies As Integer
hInstance As Long
lCustData As Long
lpfnPrintHook As Long
lpfnSetupHook As Long
lpPrintTemplateName As String
lpSetupTemplateName As String
hPrintTemplate As Long
hSetupTemplate As Long
End Type
Private Declare Function PrintDlg Lib "comdlg32.dll" Alias "PrintDlgA" (pPrintdlg As PrintDlg) As Long
'将以下代码置于某一事件中
Dim tPrintDlg As PrintDlg
tPrintDlg.lStructSize = Len(tPrintDlg)
tPrintDlg.hwndOwner = Me.hwnd
tPrintDlg.hdc = hdc
tPrintDlg.flags = 0
tPrintDlg.nFromPage = 0
tPrintDlg.nToPage = 0
tPrintDlg.nMinPage = 0
tPrintDlg.nMaxPage = 0
tPrintDlg.nCopies = 1
tPrintDlg.hInstance = App.hInstance
lpPrintTemplateName = "Print Page"
Dim a
a = PrintDlg(tPrintDlg)
If a Then
lFromPage = tPrintDlg.nFromPage
lToPage = tPrintDlg.nToPage
lMin = tPrintDlg.nMinPage
lMax = tPrintDlg.nMaxPage
lCopies = tPrintDlg.nCopies
PrintMyPage 'Custom printing Subroutine
End If
列出 SQL Server 数据库中所有的存储过程-VB资料 列出MDB档当中所有table的名称-VB资料 您想知道有谁正在使用您的 Access 文件吗?(多人环境中)-VB资料 主题:浅谈Excel 的VB编程 巧用VB6的DataGrid实现通用电子表格 VB取得正确的 RecordCount 值 主題:如何动态新增、移除 ODBC DSN? -VB资料 VB如何将表中的数据导出到电子表格中 VB如何将文本文件转换为ACCESS数据库 VB如何將 Excel 的文件导入 Access文件? VB如何判断数据中是否存在某一表或查询 VB如何删除FoxPro数据库的数据? VB如何设置对VB数据库连接的动态路径 VB如何使用 ADO 來压缩或修复 Microsoft Access 文件 VB如何修改Foxpro数据库(不是用VB实现的,不过也可以看看) VB如何在 SQL 语句中使用日期? 返回 VB如何在表中保存单引号? VB如何抓出 Access 的 Table 欄位中的【敘述】部份呢? 实现Access数据库的Web查询-VB资料 使用Visual Basic访问数据库几个注意的问题 数据库查询-VB资料 数据约束控件和 RecordSet-VB资料 锁住数据库中的表 -VB资料 谈谈VB的数据库编程方式 为VB5辩解: VB处理数据库时求数据表记录总数的最佳方法 为什么安装后的数据库应用总是路径不对或找不到? 返回 -VB资料 无论如何,就是只能输入数字-VB资料 VB用 DAO 或 ADO 正确访问 Access 2000 VB用CELL组件显示Access数据库的图片对象 VB用DAO打开Excel文件 VB用DATA控件绑定报表控件打印报表 一个VFP的打印问题! 关于基于单文档应用程序的问题 怎样在Exchange Server上部署应用,拦截所有通过outlook发给该Exchange的邮件,提供一个思路也行! wolfAone (黑色的狼(WOLF))你给我进来,有消息了! 请问JAVA如何读写注册表 经典图书??? 请问一个关于窗体置前的问题 HELP!关于STRUCT的问题! 请问,怎样知道光驱里面的光盘是不是已被更换? 在Delphi如何进行包的调用,本人将无比感谢 关于exchange的几个问题? sdk中怎样在客户区中播放视频文件(从通用对话框中) 打印问题 大家帮帮忙看看代码,指点我一下。 请问如何让浏览器中的COM组件得到当前浏览器的IDsipach接口(或IWebBrowser2接口)? 控件打印的问题 有关request.getParameter();的奇怪问题! 常见代码,有些地方我不明白帮我详细注解一下以下代码 征求解决方案 裁剪linux后,不能起动 请教MayFlower,asmx文件变成下载的问题 高手难题:SYBASE触发器中如何获取text字段的内容 珠海程序员薪金调查!(决定了我的前途)谢谢! 对利用Telnet进行自动化处理提点意见 强制类型问题 这都啥年代了?CSDN还在卖VS.net beta2!!! 请问在一个基于对话框的应用程序中,怎样实现打印功能?同时要求不弹出打印对话框,而且将纸张大小设为A4,打印方向设为横向? 小问题 SQL Server 7.0有for Alpha的吗? JIT究竟是什么东西?能否详细叙述,谢谢!另外,由于Java的跨平台技术,编译后的Java程序速度相对较慢,那么速度究竟慢到什么程度?通过什么能提 请教各位高手,关于CDONTS.Newmail对象的一些疑问? 我在新建类时为什么找不到CTOOLBAR基类,怎么新建基于CTOOLBAR的类? 用goto语句如何调用另外一个过程中的标签?急!急!急! 我仍然不能打开第二个光驱? 500分求一份关于工资管理系统的分析报告 如何得知一个字符是中文还是英文? help:画一个点的CDC member function is ....? linux下的编译机制与VC的编译机制是不是相差很多,好像LINUX下的慢很多,WHY? 如何导入一个数据文件 RMACreateRMBuildEngine调用失败---real VFP6。0中如何做图,我怎么找不到gengraph.app??? datawindow怎么做打印预览? 一个有关FORMVIEW的问题???? OLE DB的 ICommandText 访问SQL server 2k的问题 .net Enterprise是不是仍有很多bug? 有关ds1820传感器的问题?? 谁有中国电信的邮件EMAIL,我要上一个BBS,它要求必须是中国电信或是教育 MFC网络编程中的奇怪现象??? 招网站及数据库系统维护人员两名! 关于wchar_t的问题 CPalette到底起到了什么作用? 求过点p(2,3)且在两坐标轴上截距相等的直线的方程 一个圆柱形容器内装有水,从里面量,内半径为10cm.容器中有一底面半径5cm的圆锥形铅锤(沉浸在水中).补充:当铅锤从容器中取出时,水面下降了5mm,求铅锤的高. 全世界最美的100个地方中国有哪些? 过点P(1,4)的直线与两坐标轴的正半轴相交,当直线在两坐标轴上的截距之和最小时,求直线的方程我要详解,请尽快. 在一个底面半径为10cm的圆柱形杯中装一些水,把一个底面半径是5cm的圆锥形铁锤完请给我说说.急 全世界有哪一百个最美的地方? 高中必修2,经过p(1,4)的直线在两坐标轴上的截距都是正值,且截距之和最小,则直线的方程是()这题先用斜截式y=kx+b.然后将点p代入上式,求出在y轴上的截距b=4-k,再将b值代入求出在x轴上的 一道关于柏松随机过程的题一台机器检测每一个到达的货物,这些货物的到达过程是个柏松随机过程,参数是a,如果两个相邻货物到达的时间间距小于等于b的话这台机器将停止工作,让T作为机器 数学物理方程怎么学 金刚石是晶体吗 柏松分布的公式是怎么来的,凭空捏造?概率论的书上面柏松分布直接给出了一个式子,这个式子到底是怎么出来的? Uxx+5Uxy-6Uyy=0的化简,包括步骤和结果, 放大1200倍的显微镜能看到叶绿素吗? 放大镜下看到的面积或区域叫做透镜的()快 数学物理方程怎么学啊谁有好的建议 假如在一个简单电路中,并联一个电阻和电容,那么在开关闭合时,是电容优先充电,还是电流优先通过电阻 通过透镜看到的面积或区域叫做透镜的视野,请问不同放大倍数的放大镜,他们的透镜视野有什么不同 怎么学数学物理方程? 证明叶绿素的形成与阳光有关的实验要把五个步骤写全 1 2做出假设 3制定计划 4实施计划 5得出结论 通过透镜看到的面积或区域叫做透镜的? 研磨机、研磨机厂家,保定研磨机哪家的产品好? 当一个电容器和一个电阻并联在电路中时,电容器和电阻的电流电压分别是怎么样变化的? 通过放大镜看到的面积或区域叫做什么?只要答出了,@ 放大镜的放大倍数越大范围就越大吗 4、一个半径为R的薄球壳,球表面均匀分布正电荷q,试求(1)球壳外电场强度分布(2)球壳内电场强度分布 英语翻译3Q 在一定范围内,放大镜离物体越远,放大倍数越大 请问蔬菜里的叶绿素对人体有什么好处呢?人体细胞也不合成叶绿素,感觉它只是和植物的光合作用有关,不知道它对人体有什么作用呢请大家多多指教哈~ 数学物理方程中,弦横振动的边界条件:一端固定,一端自由.请问表达式应该是什么?非知勿扰! 离子化合物有键能吗?晶格能就是键能吗?只有共价化合物才有键能? “电压是使自由电荷定向移动形成电流的原因 杆的纵向振动是怎么个振动方向?数理方程书上没说清楚的一些问题.一个横放的弦的横向振动能理解,是上上下下.一个横放的杆,纵向振动是怎么个振法?难不成左右晃?还有弹性支承,对弦来讲 离子晶体的晶格能比较-----高手进我知道有三个影响因素,但比较时哪个占主导地位,哪个是相对次要的?为什么? 什么蔬菜里含有叶绿素包括水果 试以下面的方程为例,叙述用分离变量法求解方程的步骤.{Utt-a^2Uxx=0,Q={00U|t=0=φ(x),0= 想问下数学物理方法与数理方程有什么区别? 电压是使电路中额额自由电荷定向移动形成的( )的原因 数理方程怎么学更容易? 清华数学物理方程与北大数学物理方法哪个好 二维晶格的基元由一个原子组成,问有多少支格波,声学支和光学支各有多少?详细说明理由, 有谁知道二元振动研磨机和三元振动研磨机的区别在哪儿?三元振动研磨机的工作原理是什么? 电气工程学不学数学物理方程或数学物理方法,我指的是除了复变函数剩下的那些我对你们无语了,数学物理方法是一门课程, 传统的测量叶绿素的方法与叶绿素测定仪的原理有什么区别没? 一般振动研磨机的价格是多少?隆鑫振动研磨机多少钱,樟木头隆鑫的那个厂 正电荷究竟能不能移动,为什么物理书说带正电的电荷定向移动,也能产生电流 SPAD-502叶绿素仪测定的叶绿素含量单位是什么?比如说测得数据为35.6,单位是什么呢 如何选择振动研磨机 卧式振动研磨机生产厂家有妙招 一个底面半径是10cm,高14cm的圆柱形容器中盛有一些水,水面高10cm.现在将一个底面半径是5cm的圆锥形铁块完全浸没在水中,此时水面高11cm,这个圆锥形铁块的高是多少厘米? spad-502叶绿素仪的测量结果的单位是什么? 哪里的振动研磨机比较好我公司因生产需要,准备购买2台振动研磨机,麻烦告诉我哪个生产厂家比较好 晶体的晶格能与什么有关? 物理凸透镜成像规律帮我把关于这里的知识点全写出来吧,至少2000字最好是复制的! 叶绿素测量值spad值是什么意思叶绿素测量所得的spad相对值具体是什么意思?是哪两个值的比值? 振动研磨机用的三角磨料是什么成分? 物理凸透镜成像的规律一倍焦距分虚实二倍焦距分大小物距像距相矛盾像与像距相一致这 几 句 话 是 什 么 意 促使金属导体的自由电子发生定向移动形成电流的是?A电荷 B电压 C电流 D电阻 3、把凸透镜当作放大镜来观察物体时,必须把物体放在凸透镜的 ()3 、把凸透镜当作放大镜来观察物体时,必须把物体放在凸透镜的 ( ) A .焦点以内 B .2 倍焦距处 C .焦点上 D .2 倍焦 电源12V接一个开关,再接一个电阻,在接一个电容,最后接地.请问一下闭合开关瞬间,求电容两端电势 一只底面半径为10cm的圆柱形水桶中盛有水 当在桶内浸没一个底面半径为5cm高 为18cm的圆柱形零件后 水面上一只底面半径为10cm的圆柱形水桶中盛有水,当在桶内浸没一个底面半径为5cm高,为18cm 一凸透镜的焦距为10cm,作放大镜使用时,被观察的物体到凸透镜的距离应满足()要想使它得到物体放大的实像,该物体到凸透镜的距离满足();要想使它得到物体缩小的实像,该物体到凸透
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘