大家在写程序的时候,难免会用到WINDOWS的通用对话框,如打开、保存、字体、颜色、打印等。这些通用对话框在外部控件里可以加载,不过打包的时候还要带上控件,所以会很麻烦,并且会加大安装程序的大小。笔者通过实践,总结出了通过API实现这些对话框的方法,写出来与大家分享。
崔占民
EMAIL:CUIZM@163.COM
定义一个类模块,方法:工程->添加类模块。代码如下:
Option Explicit
Private Type POINTAPI
x As Long
y As Long
End Type
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
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 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 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 Type LOGFONT
lfHeight As Long
lfWidth As Long
lfEscapement As Long
lfOrientation As Long
lfWeight As Long
lfItalic As Byte
lfUnderline As Byte
lfStrikeOut As Byte
lfCharSet As Byte
lfOutPrecision As Byte
lfClipPrecision As Byte
lfQuality As Byte
lfPitchAndFamily As Byte
lfFaceName As String * 31
End Type
Private Type CHOOSEFONT
lStructSize As Long
hwndOwner As Long ' caller's window handle
hdc As Long ' printer DC/IC or NULL
lpLogFont As Long
iPointSize As Long ' 10 * size in points of selected font
Flags As Long ' enum. type flags
rgbColors As Long ' returned text color
lCustData As Long ' data passed to hook fn.
lpfnHook As Long ' ptr. to hook function
lpTemplateName As String ' custom template name
hInstance As Long ' instance handle of.EXE that
' contains cust. dlg. template
lpszStyle As String ' return the style field here
' must be LF_FACESIZE or bigger
nFontType As Integer ' same value reported to the EnumFonts
' call back with the extra FONTTYPE_
' bits added
MISSING_ALIGNMENT As Integer
nSizeMin As Long ' minimum pt size allowed &
nSizeMax As Long ' max pt size allowed if
' CF_LIMITSIZE is used
End Type
Private Type FINDREPLACE
lStructSize As Long ' size of this struct 0x20
hwndOwner As Long ' handle to owner's window
hInstance As Long ' instance handle of.EXE that
' contains cust. dlg. template
Flags As Long ' one or more of the FR_??
lpstrFindWhat As String ' ptr. to search string
lpstrReplaceWith As String ' ptr. to replace string
wFindWhatLen As Integer ' size of find buffer
wReplaceWithLen As Integer ' size of replace buffer
lCustData As Long ' data passed to hook fn.
lpfnHook As Long ' ptr. to hook fn. or NULL
lpTemplateName As String ' custom template name
End Type
Private Type PAGESETUPDLG
lStructSize As Long
hwndOwner As Long
hDevMode As Long
hDevNames As Long
Flags As Long
ptPaperSize As POINTAPI
rtMinMargin As RECT
rtMargin As RECT
hInstance As Long
lCustData As Long
lpfnPageSetupHook As Long
lpfnPagePaintHook As Long
lpPageSetupTemplateName As String
hPageSetupTemplate As Long
End Type
Public Enum FileFlags
OFN_ALLOWMULTISELECT = &H200
OFN_CREATEPROMPT = &H2000
OFN_ENABLEHOOK = &H20
OFN_ENABLETEMPLATE = &H40
OFN_ENABLETEMPLATEHANDLE = &H80
OFN_EXPLORER = &H80000 ' new look commdlg
OFN_EXTENSIONDIFFERENT = &H400
OFN_FILEMUSTEXIST = &H1000
OFN_HIDEREADONLY = &H4
OFN_LONGNAMES = &H200000 ' force long names for 3.x modules
OFN_NOCHANGEDIR = &H8
OFN_NODEREFERENCELINKS = &H100000
OFN_NOLONGNAMES = &H40000 ' force no long names for 4.x modules
OFN_NONETWORKBUTTON = &H20000
OFN_NOREADONLYRETURN = &H8000
OFN_NOTESTFILECREATE = &H10000
OFN_NOVALIDATE = &H100
OFN_OVERWRITEPROMPT = &H2
OFN_PATHMUSTEXIST = &H800
OFN_READONLY = &H1
OFN_SHAREAWARE = &H4000
OFN_SHAREFALLTHROUGH = 2
OFN_SHARENOWARN = 1
OFN_SHAREWARN = 0
OFN_SHOWHELP = &H10
PD_ALLPAGES = &H0
PD_COLLATE = &H10
PD_DISABLEPRINTTOFILE = &H80000
PD_ENABLEPRINTHOOK = &H1000
PD_ENABLEPRINTTEMPLATE = &H4000
PD_ENABLEPRINTTEMPLATEHANDLE = &H10000
PD_ENABLESETUPHOOK = &H2000
PD_ENABLESETUPTEMPLATE = &H8000
PD_ENABLESETUPTEMPLATEHANDLE = &H20000
PD_HIDEPRINTTOFILE = &H100000
PD_NONETWORKBUTTON = &H200000
PD_NOPAGENUMS = &H8
PD_NOSELECTION = &H4
PD_NOWARNING = &H80
PD_PAGENUMS = &H2
PD_PRINTSETUP = &H40
PD_PRINTTOFILE = &H20
PD_RETURNDC = &H100
PD_RETURNDEFAULT = &H400
PD_RETURNIC = &H200
PD_SELECTION = &H1
PD_SHOWHELP = &H800
PD_USEDEVMODECOPIES = &H40000
PD_USEDEVMODECOPIESANDCOLLATE = &H40000
End Enum
Const FW_NORMAL = 400
Const DEFAULT_CHARSET = 1
Const OUT_DEFAULT_PRECIS = 0
Const CLIP_DEFAULT_PRECIS = 0
Const DEFAULT_QUALITY = 0
Const DEFAULT_PITCH = 0
Const FF_ROMAN = 16
Const GMEM_MOVEABLE = &H2
Const GMEM_ZEROINIT = &H40
Const CF_PRINTERFONTS = &H2
Const CF_SCREENFONTS = &H1
Const CF_BOTH = (CF_SCREENFONTS Or CF_PRINTERFONTS)
Const CF_EFFECTS = &H100&
Const CF_FORCEFONTEXIST = &H10000
Const CF_INITTOLOGFONTSTRUCT = &H40&
Const CF_LIMITSIZE = &H2000&
Const REGULAR_FONTTYPE = &H400
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Declare Function PrintDialog Lib "comdlg32.dll" Alias "PrintDlgA" (pPrintdlg As PRINTDLG) As Long
Private Declare Function ChooseColorDialog Lib "comdlg32.dll" Alias "ChooseColorA" (pChoosecolor As CHOOSECOLOR) As Long
Private Declare Function CHOOSEFONT Lib "comdlg32.dll" Alias "ChooseFontA" (pChoosefont As CHOOSEFONT) As Long
Private Declare Function FindText Lib "comdlg32.dll" Alias "FindTextA " (pFindreplace As FINDREPLACE) As Long
Private Declare Function PAGESETUPDLG Lib "comdlg32.dll" Alias "PageSetupDlgA" (pPagesetupdlg As PAGESETUPDLG) As Long
Private Declare Function ReplaceText Lib "comdlg32.dll" Alias "ReplaceTextA" (pFindreplace As FINDREPLACE) As Long
Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
' FileOpen 类成员变量 =====================================================
Private m_lngHwnd As Long
Private m_lngInstance As Long
Private m_strFileName As String
Private m_strFileTitle As String
Private m_strInitDir As String
Private m_strDialogTitle As String
Private m_strFilter As String
Private m_lngFlags As Long
' Print 类成员变量 =====================================================
Private m_lngCopies As Long
Private m_lngFromPage As Long
Private m_lngToPage As Long
Private m_lngMaxPage As Long
Private m_lngMinPage As Long
' Print 类成员变量 =====================================================
Private m_lngColor As Long
' Font 类成员变量 =====================================================
Private m_strFontName As String
Private m_lngFontColor As Long
Private m_lngFontSize As Long
Private m_lngCharSet As Long
Private m_bolItalic As Boolean
Private m_bolStrikeOut As Boolean
Private m_bolUnderline As Boolean
Private m_bolBlob As Boolean
' PageSetup 类成员变量 =====================================================
Private m_lngPaperWidth As Long
Private m_lngPaperHeight As Long
Private m_lngMarginLeft As Long
Private m_lngMarginTop As Long
Private m_lngMarginRight As Long
Private m_lngMarginBottom As Long
' FileOpen 类实现 =========================================================
Public Function ShowOpen() As Boolean
Dim fName As String, sName As String, OfName As OPENFILENAME
OfName.lStructSize = Len(OfName)
OfName.hwndOwner = m_lngHwnd
OfName.hInstance = m_lngInstance
OfName.lpstrInitialDir = m_strInitDir
OfName.lpstrFilter = m_strFilter
OfName.lpstrFile = Space(255) & Chr(0)
OfName.nMaxFile = 256
OfName.lpstrFileTitle = Space(255) & Chr(0)
OfName.nMaxFileTitle = 256
OfName.lpstrTitle = m_strDialogTitle
OfName.Flags = m_lngFlags
If GetOpenFileName(OfName) Then
m_strFileName = OfName.lpstrFile
m_strFileTitle = OfName.lpstrFileTitle
ShowOpen = True
Else
ShowOpen = False
End If
End Function
Public Property Get Filter() As String
Filter = m_strFilter
End Property
Public Property Let Filter(ByVal vNewValue As String)
m_strFilter = Replace(vNewValue, "|", Chr(0)) & Chr(0)
End Property
Public Property Get Flags() As FileFlags
Flags = m_lngFlags
End Property
Public Property Let Flags(ByVal vNewValue As FileFlags)
m_lngFlags = vNewValue
End Property
Public Property Get DialogTitle() As String
DialogTitle = m_strDialogTitle
End Property
Public Property Let DialogTitle(ByVal vNewValue As String)
m_strDialogTitle = vNewValue
End Property
Public Property Get InitDir() As String
InitDir = m_strInitDir
End Property
Public Property Let InitDir(ByVal vNewValue As String)
m_strInitDir = vNewValue
End Property
Public Property Get FileTitle() As String
FileTitle = m_strFileTitle
End Property
Public Property Let FileTitle(ByVal vNewValue As String)
m_strFileTitle = vNewValue
End Property
Public Property Get FileName() As String
FileName = m_strFileName
End Property
Public Property Let FileName(ByVal vNewValue As String)
m_strFileName = vNewValue
End Property
Public Property Get Hwnd() As Long
Hwnd = m_lngHwnd
End Property
Public Property Let Hwnd(ByVal vNewValue As Long)
m_lngHwnd = vNewValue
End Property
Public Property Get Instance() As Long
Instance = m_lngInstance
End Property
Public Property Let Instance(ByVal vNewValue As Long)
m_lngInstance = vNewValue
End Property
' FileSave 类实现 =========================================================
Public Function ShowSave() As Boolean
Dim fName As String, sName As String, OfName As OPENFILENAME
OfName.lStructSize = Len(OfName)
OfName.hwndOwner = m_lngHwnd
OfName.hInstance = m_lngInstance
OfName.lpstrInitialDir = m_strInitDir
OfName.lpstrFilter = m_strFilter
OfName.lpstrFile = Space(255) & Chr(0)
OfName.nMaxFile = 256
OfName.lpstrFileTitle = Space(255) & Chr(0)
OfName.nMaxFileTitle = 256
OfName.lpstrTitle = m_strDialogTitle
OfName.Flags = m_lngFlags
If GetSaveFileName(OfName) Then
m_strFileName = OfName.lpstrFile
m_strFileTitle = OfName.lpstrFileTitle
ShowSave = True
Else
ShowSave = False
End If
End Function
' Print 类实现 =========================================================
Public Function ShowPrint() As Boolean
Dim PrtDlg As PRINTDLG
PrtDlg.lStructSize = Len(PrtDlg)
PrtDlg.hwndOwner = m_lngHwnd
PrtDlg.hInstance = m_lngInstance
PrtDlg.nCopies = m_lngCopies
PrtDlg.nFromPage = m_lngFromPage
PrtDlg.nMaxPage = m_lngMaxPage
PrtDlg.nMinPage = m_lngMinPage
PrtDlg.nToPage = m_lngToPage
PrtDlg.Flags = m_lngFlags
If PrintDialog(PrtDlg) Then
m_lngCopies = PrtDlg.nCopies
m_lngFromPage = PrtDlg.nFromPage
m_lngMaxPage = PrtDlg.nMaxPage
m_lngMinPage = PrtDlg.nMinPage
m_lngToPage = PrtDlg.nToPage
ShowPrint = True
Else
ShowPrint = False
End If
End Function
Public Property Get Copies() As Long
Copies = m_lngCopies
End Property
Public Property Let Copies(ByVal vNewValue As Long)
m_lngCopies = vNewValue
End Property
Public Property Get FromPage() As Long
FromPage = m_lngFromPage
End Property
Public Property Let FromPage(ByVal vNewValue As Long)
m_lngFromPage = vNewValue
End Property
Public Property Get ToPage() As Long
ToPage = m_lngToPage
End Property
Public Property Let ToPage(ByVal vNewValue As Long)
m_lngToPage = vNewValue
End Property
Public Property Get MaxPage() As Long
MaxPage = m_lngMaxPage
End Property
Public Property Let MaxPage(ByVal vNewValue As Long)
m_lngMaxPage = vNewValue
End Property
Public Property Get MinPage() As Long
MinPage = m_lngMinPage
End Property
Public Property Let MinPage(ByVal vNewValue As Long)
m_lngMinPage = vNewValue
End Property
' ChooseColorDialog 类实现 =========================================================
Public Function ShowColor() As Boolean
Dim i As Integer
Dim ClrDlg As CHOOSECOLOR, CustomColors() As Byte
ReDim CustomColors(0 To 63) As Byte
For i = LBound(CustomColors) To UBound(CustomColors)
CustomColors(i) = 0
Next i
ClrDlg.lStructSize = Len(ClrDlg)
ClrDlg.hwndOwner = m_lngHwnd
ClrDlg.hInstance = m_lngInstance
ClrDlg.lpCustColors = StrConv(CustomColors, vbUnicode)
If ChooseColorDialog(ClrDlg) Then
m_lngColor = ClrDlg.rgbResult
CustomColors = StrConv(ClrDlg.lpCustColors, vbFromUnicode)
ShowColor = True
Else
ShowColor = False
End If
End Function
Public Property Get Color() As Long
Color = m_lngColor
End Property
Public Property Let Color(ByVal vNewValue As Long)
m_lngColor = vNewValue
End Property
' Font 类实现 =========================================================
Public Function ShowFont() As Boolean
Dim cf As CHOOSEFONT, lfont As LOGFONT, hMem As Long, pMem As Long
Dim FontName As String, retval As Long
lfont.lfHeight = 0 ' determine default height
lfont.lfWidth = 0 ' determine default width
lfont.lfEscapement = 0 ' angle between baseline and escapement vector
lfont.lfOrientation = 0 ' angle between baseline and orientation vector
lfont.lfWeight = FW_NORMAL ' normal weight I.e. Not bold
lfont.lfCharSet = DEFAULT_CHARSET ' use default character set
lfont.lfOutPrecision = OUT_DEFAULT_PRECIS ' default precision mapping
lfont.lfClipPrecision = CLIP_DEFAULT_PRECIS ' default clipping precision
lfont.lfQuality = DEFAULT_QUALITY ' default quality setting
lfont.lfPitchAndFamily = DEFAULT_PITCH Or FF_ROMAN ' default pitch, proportional with serifs
lfont.lfFaceName = "Times New Roman" & vbNullChar ' string must be null-terminated
' Create the memory block which will act as the LOGFONT structure buffer.
hMem = GlobalAlloc(GMEM_MOVEABLE Or GMEM_ZEROINIT, Len(lfont))
pMem = GlobalLock(hMem) ' lock and get pointer
CopyMemory ByVal pMem, lfont, Len(lfont) ' copy structure's contents into block
' Initialize dialog box: Screen and printer fonts, point size between 10 and 72.
cf.lStructSize = Len(cf) ' size of structure
cf.hwndOwner = m_lngHwnd ' window Form1 is opening this dialog box
cf.hdc = Printer.hdc ' device context of default printer (using VB's mechanism)
cf.lpLogFont = pMem ' pointer to LOGFONT memory block buffer
cf.iPointSize = 120 ' 12 point font (in units of 1/10 point)
cf.Flags = CF_BOTH Or CF_EFFECTS Or CF_FORCEFONTEXIST Or CF_INITTOLOGFONTSTRUCT Or CF_LIMITSIZE
cf.rgbColors = RGB(0, 0, 0) ' black
cf.nFontType = REGULAR_FONTTYPE ' regular font type I.e. Not bold or anything
cf.nSizeMin = 1 ' minimum point size
cf.nSizeMax = 72 ' maximum point size
' Now, call the function. If successful, copy the LOGFONT structure back into the structure
' and then print out the attributes we mentioned earlier that the user selected.
If CHOOSEFONT(cf) Then ' success
CopyMemory lfont, ByVal pMem, Len(lfont) ' copy memory back
' Now make the fixed-length string holding the font name into a "normal" string.
m_strFontName = Left(lfont.lfFaceName, InStr(lfont.lfFaceName, vbNullChar) - 1)
m_lngFontColor = cf.rgbColors
m_lngFontSize = cf.iPointSize / 10
m_lngCharSet = lfont.lfCharSet
m_bolItalic = lfont.lfItalic = 255
m_bolStrikeOut = lfont.lfStrikeOut = 1
m_bolUnderline = lfont.lfUnderline = 1
m_bolBlob = lfont.lfWeight >= 700
ShowFont = True
Else
ShowFont = False
End If
' Deallocate the memory block we created earlier. Note that this must
' be done whether the function succeeded or not.
retval = GlobalUnlock(hMem) ' destroy pointer, unlock block
retval = GlobalFree(hMem) ' free the allocated memory
End Function
Public Property Get FontName() As String
FontName = m_strFontName
End Property
Public Property Let FontName(ByVal vNewValue As String)
m_strFontName = vNewValue
End Property
Public Property Get FontColor() As Long
FontColor = m_lngFontColor
End Property
Public Property Let FontColor(ByVal vNewValue As Long)
m_lngFontColor = vNewValue
End Property
Public Property Get FontSize() As Long
FontSize = m_lngFontSize
End Property
Public Property Let FontSize(ByVal vNewValue As Long)
m_lngFontSize = vNewValue
End Property
Public Property Get CharSet() As Long
CharSet = m_lngCharSet
End Property
Public Property Let CharSet(ByVal vNewValue As Long)
m_lngCharSet = vNewValue
End Property
Public Property Get Italic() As Boolean
Italic = m_bolItalic
End Property
Public Property Let Italic(ByVal vNewValue As Boolean)
m_bolItalic = vNewValue
End Property
Public Property Get StrikeOut() As Boolean
StrikeOut = m_bolStrikeOut
End Property
Public Property Let StrikeOut(ByVal vNewValue As Boolean)
m_bolStrikeOut = vNewValue
End Property
Public Property Get Underline() As Boolean
Underline = m_bolUnderline
End Property
Public Property Let Underline(ByVal vNewValue As Boolean)
m_bolUnderline = vNewValue
End Property
Public Property Get FontBlob() As Boolean
FontBlob = m_bolBlob
End Property
Public Property Let FontBlob(ByVal vNewValue As Boolean)
m_bolBlob = vNewValue
End Property
' Find 类实现 =========================================================
Public Function ShowFind() As Boolean
Dim lFind As FINDREPLACE
lFind.lStructSize = Len(lFind)
lFind.hwndOwner = m_lngHwnd
lFind.hInstance = m_lngInstance
lFind.wFindWhatLen = 255
' If FindText(lFind) Then
' ShowFind = True
' Else
' ShowFind = False
' End If
End Function
' Replace 类实现 =========================================================
Public Function ShowReplace() As Boolean
Dim lFind As FINDREPLACE
lFind.lStructSize = Len(lFind)
lFind.hwndOwner = m_lngHwnd
lFind.hInstance = m_lngInstance
lFind.wFindWhatLen = 255
If ReplaceText(lFind) Then
ShowReplace = True
Else
ShowReplace = False
End If
End Function
' Replace 类实现 =========================================================
Public Function ShowPageSetup() As Boolean
Dim lPageSetup As PAGESETUPDLG
lPageSetup.lStructSize = Len(lPageSetup)
lPageSetup.hwndOwner = m_lngHwnd
lPageSetup.hInstance = m_lngInstance
If PAGESETUPDLG(lPageSetup) Then
m_lngPaperWidth = lPageSetup.ptPaperSize.x
m_lngPaperHeight = lPageSetup.ptPaperSize.y
m_lngMarginLeft = lPageSetup.rtMargin.Left
m_lngMarginTop = lPageSetup.rtMargin.Top
m_lngMarginRight = lPageSetup.rtMargin.Right
m_lngMarginBottom = lPageSetup.rtMargin.Bottom
ShowPageSetup = True
Else
ShowPageSetup = False
End If
End Function
Public Property Get PaperWidth() As Long
PaperWidth = m_lngPaperWidth
End Property
Public Property Let PaperWidth(ByVal vNewValue As Long)
m_lngPaperWidth = vNewValue
End Property
Public Property Get PaperHeight() As Long
PaperHeight = m_lngPaperHeight
End Property
Public Property Let PaperHeight(ByVal vNewValue As Long)
m_lngPaperHeight = vNewValue
End Property
Public Property Get MarginLeft() As Long
MarginLeft = m_lngMarginLeft
End Property
Public Property Let MarginLeft(ByVal vNewValue As Long)
m_lngMarginLeft = vNewValue
End Property
Public Property Get MarginTop() As Long
MarginTop = m_lngMarginTop
End Property
Public Property Let MarginTop(ByVal vNewValue As Long)
m_lngMarginTop = vNewValue
End Property
Public Property Get MarginRight() As Long
MarginRight = m_lngMarginRight
End Property
Public Property Let MarginRight(ByVal vNewValue As Long)
m_lngMarginRight = vNewValue
End Property
Public Property Get MarginBottom() As Long
MarginBottom = m_lngMarginBottom
End Property
Public Property Let MarginBottom(ByVal vNewValue As Long)
m_lngMarginBottom = vNewValue
End Property
在窗口中添加六个按钮,分别用来实现调用这几个通用对话框,代码如下:
Option Explicit
Dim dlg As CDialog
Private Sub Command1_Click()
dlg.Hwnd = Hwnd
dlg.Filter = "WORD文档|*.doc;*.html"
dlg.Flags = OFN_ALLOWMULTISELECT + OFN_EXPLORER + OFN_PATHMUSTEXIST
dlg.InitDir = "D:\"
dlg.DialogTitle = "(昱豪)打开文件..."
If dlg.ShowOpen Then
MsgBox dlg.FileName
MsgBox dlg.FileTitle
End If
End Sub
Private Sub Command2_Click()
dlg.Hwnd = Hwnd
dlg.Filter = "WORD文档|*.doc;*.html"
dlg.Flags = OFN_ALLOWMULTISELECT + OFN_EXPLORER + OFN_PATHMUSTEXIST
dlg.InitDir = "D:\"
dlg.DialogTitle = "(昱豪)保存文件..."
If dlg.ShowSave Then
MsgBox dlg.FileName
MsgBox dlg.FileTitle
End If
End Sub
Private Sub Command3_Click()
dlg.Hwnd = Hwnd
dlg.Flags = PD_SELECTION + PD_USEDEVMODECOPIES
If dlg.ShowPrint Then
MsgBox "Copies:" & dlg.Copies & vbCrLf & _
"FromPage:" & dlg.FromPage & vbCrLf & _
"ToPage:" & dlg.ToPage & vbCrLf & _
"MaxPage:" & dlg.MaxPage & vbCrLf & _
"MinPage:" & dlg.MinPage
End If
End Sub
Private Sub Command4_Click()
dlg.Hwnd = Hwnd
If dlg.ShowColor Then
BackColor = dlg.Color
End If
End Sub
Private Sub Command5_Click()
dlg.Hwnd = Hwnd
If dlg.ShowFont Then
MsgBox "FontName:" & dlg.FontName & vbCrLf & _
"FontColor:" & dlg.FontColor & vbCrLf & _
"FontSize:" & dlg.FontSize & vbCrLf & _
"CharSet:" & dlg.CharSet & vbCrLf & _
"Italic:" & dlg.Italic & vbCrLf & _
"StrikeOut:" & dlg.StrikeOut & vbCrLf & _
"Underline:" & dlg.Underline & vbCrLf & _
"Blob:" & dlg.FontBlob
End If
End Sub
Private Sub Command6_Click()
dlg.Hwnd = Hwnd
If dlg.ShowFind Then
End If
End Sub
Private Sub Command7_Click()
dlg.Hwnd = Hwnd
If dlg.ShowPageSetup Then
MsgBox "PageWeight:" & dlg.PaperWidth & vbCrLf & _
"PageHeight:" & dlg.PaperHeight & vbCrLf & _
"MarginLeft:" & dlg.MarginLeft & vbCrLf & _
"MarginTop:" & dlg.MarginTop & vbCrLf & _
"MarginRight:" & dlg.MarginRight & vbCrLf & _
"MarginBottom:" & dlg.MarginBottom
End If
End Sub
Private Sub Command8_Click()
dlg.Hwnd = Hwnd
If dlg.ShowReplace Then
End If
End Sub
Private Sub Form_Load()
Set dlg = New CDialog
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Set dlg = Nothing
End Sub
只要在工程中把这前面介绍的类文件加进去就可以使用了,不用外部的控件,安装的时候也省了一些控件,结省了空间!!