home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 5_2007-2008.ISO / data / Zips / Image_File2120887172008.psc / ImageFilelist07-17-08 / cDlg.cls next >
Text File  |  2008-06-08  |  21KB  |  694 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "cDlg"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. Option Explicit
  15.  
  16. ' this is a striped down version of the code at
  17. 'http://www.Planet-Source-Code.com/vb/scripts/ShowCode.asp?txtCodeId=9260&lngWId=1
  18. 'It has show open, show save, show color, and font. The code at the above address also has many other
  19. 'windows dialogs including the browse folder dialogs however the browse folder code included here
  20. 'is from another source.
  21. '
  22. 'Update:
  23. '   I have added Browse folder to this class.
  24. '
  25. '   added: copy,move,delete, and rename. delete will allow you to send to recycle or not
  26. '
  27. '   added: file properties dialog
  28. '
  29. '   added: a callback function found in mDlg to allow the user to select the
  30. '       start directory and also set the status text of the dialog.
  31. '
  32. 'NOTE: this needs "mDlg" module to function. This dialog class is defined as CD in the module
  33. 'and can be used by calling folder = cd.BrowseForFolder or cd.ShowSave to choose
  34. 'a name and directory and CD.FileName would contain your selection.
  35. '
  36. '
  37. Private Type OPENFILENAME 'Open & Save Dialog
  38.     lStructSize As Long
  39.     hWndOwner As Long
  40.     hInstance As Long
  41.     lpstrFilter As String
  42.     lpstrCustomFilter As String
  43.     nMaxCustFilter As Long
  44.     nFilterIndex As Long
  45.     lpstrFile As String
  46.     nMaxFile As Long
  47.     lpstrFileTitle As String
  48.     nMaxFileTitle As Long
  49.     lpstrInitialDir As String
  50.     lpstrTitle As String
  51.     flags As Long
  52.     nFileOffset As Integer
  53.     nFileExtension As Integer
  54.     lpstrDefExt As String
  55.     lCustData As Long
  56.     lpfnHook As Long
  57.     lpTemplateName As String
  58. End Type
  59.  
  60. Private Type CHOOSECOLOR 'Color Dialog
  61.     lStructSize As Long
  62.     hWndOwner As Long
  63.     hInstance As Long
  64.     RGBResult As Long
  65.     lpCustColors As String
  66.     flags As Long
  67.     lCustData As Long
  68.     lpfnHook As Long
  69.     lpTemplateName As String
  70. End Type
  71.  
  72. Const LF_FACESIZE = 32 'Font Dialog
  73. Private Type LOGFONT 'Font Dialog
  74.     lfHeight As Long
  75.     lfWidth As Long
  76.     lfEscapement As Long
  77.     lfOrientation As Long
  78.     lfWeight As Long
  79.     lfItalic As Byte
  80.     lfUnderline As Byte
  81.     lfStrikeOut As Byte
  82.     lfCharSet As Byte
  83.     lfOutPrecision As Byte
  84.     lfClipPrecision As Byte
  85.     lfQuality As Byte
  86.     lfPitchAndFamily As Byte
  87.     lfFaceName(LF_FACESIZE) As Byte
  88. End Type
  89.  
  90. Private Type ChooseFont 'Font Dialog
  91.     lStructSize As Long
  92.     hWndOwner As Long
  93.     hdc As Long
  94.     lpLogFont As Long
  95.     iPointSize As Long
  96.     flags As Long
  97.     rgbColors As Long
  98.     lCustData As Long
  99.     lpfnHook As Long
  100.     lpTemplateName As String
  101.     hInstance As Long
  102.     lpszStyle As String
  103.     nFontType As Integer
  104.     MISSING_ALIGNMENT As Integer
  105.     nSizeMin As Long
  106.     nSizeMax As Long
  107. End Type
  108. ' extra font constant
  109. Const CF_INITTOLOGFONTSTRUCT = &H40&
  110. Const SCREEN_FONTTYPE = &H2000
  111. Const BOLD_FONTTYPE = &H100
  112. Const FW_BOLD = 700
  113. Const LOGPIXELSY = 90
  114.  
  115. '------- Dialog calling functions
  116. ' -------------- Standard
  117. Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
  118. Private Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long
  119. Private Declare Function ChooseColorAPI Lib "comdlg32.dll" Alias "ChooseColorA" (pChoosecolor As CHOOSECOLOR) As Long
  120. Private Declare Function ChooseFont Lib "comdlg32.dll" Alias "ChooseFontA" (pChoosefont As ChooseFont) As Long
  121. Private Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long
  122. Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
  123. Private Declare Function GetTextFace Lib "gdi32" Alias "GetTextFaceA" (ByVal hdc As Long, ByVal nCount As Long, ByVal lpFacename As String) As Long
  124. Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
  125. Private Declare Function GetDC Lib "user32" (ByVal hOwner As Long) As Long
  126. Private Declare Function lstrcpy Lib "KERNEL32" Alias "lstrcpyA" (p1 As Any, p2 As Any) As Long
  127. Private Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
  128.  
  129. Public Enum CdlgExt_Actions
  130.        cdlgOpen = 1
  131.        cdlgSave = 2
  132.        cdlgColor = 3
  133.        cdlgFont = 4
  134.  End Enum
  135.  
  136. Public Enum CdlgExt_Flags
  137.  ' Open & Save Dialog
  138.  cdlOFNAllowMultiselect = &H200
  139.  cdlOFNCreatePrompt = &H2000
  140.  cdlOFNExplorer = &H80000
  141.  cdlOFNExtensionDifferent = &H400
  142.  cdlOFNFileMustExist = &H1000
  143.  cdlOFNHelpButton = &H10
  144.  cdlOFNHideReadOnly = &H4
  145.  cdlOFNLongNames = &H200000
  146.  cdlOFNNoChangeDir = &H8
  147.  cdlOFNNoDereferenceLinks = &H100000
  148.  cdlOFNNoLongNames = &H40000
  149.  cdlOFNNoReadOnlyReturn = &H8000
  150.  cdlOFNNoValidate = &H100
  151.  cdlOFNOverwritePrompt = &H2
  152.  cdlOFNPathMustExist = &H800
  153.  cdlOFNReadOnly = &H1
  154.  cdlOFNShareAware = &H4000
  155.  'Color Dialog
  156.  cdlCCFullOpen = &H2
  157.  cdlCCHelpButton = &H8
  158.  cdlCCPreventFullOpen = &H4
  159.  cdlCCRGBInit = &H1
  160. ' Font Dialog
  161.  cdlCFANSIOnly = &H400
  162.  cdlCFApply = &H200
  163.  cdlCFBoth = &H3
  164.  cdlCFEffects = &H100
  165.  cdlCFFixedPitchOnly = &H4000
  166.  cdlCFForceFontExist = &H10000
  167.  cdlCFHelpButton = &H4
  168.  cdlCFLimitSize = &H2000
  169.  cdlCFNoFaceSel = &H80000
  170.  cdlCFNoSimulations = &H1000
  171.  cdlCFNoSizeSel = &H200000
  172.  cdlCFNoStyleSel = &H100000
  173.  cdlCFNoVectorFonts = &H800
  174.  cdlCFPrinterFonts = &H2
  175.  cdlCFScalableOnly = &H20000
  176.  cdlCFScreenFonts = &H1
  177.  cdlCFTTOnly = &H40000
  178.  cdlCFWYSIWYG = &H8000
  179. End Enum
  180.  
  181. Private RetValue As Long 'General
  182. Const MAX_PATH = 260 'General
  183. Private OFN As OPENFILENAME ' Open & Save Dialog
  184.  
  185. 'Inner variables for properties
  186. Private mFileName As String
  187. Private mFileTitle As String
  188. Private mhOwner As Long
  189. Private mDialogTitle As String
  190. Private mFilter As String
  191. Private mInitDir As String
  192. Private mSelDir As String
  193. Private mDefaultExt As String
  194. Private mFilterIndex As Long
  195. Private mHelpFile As String
  196. Private mHelpKey As Long
  197. Private mRGBResult As Long
  198. Private mItalic As Boolean
  199. Private mUnderline As Boolean
  200. Private mStrikethru As Boolean
  201. Private mFontName As String
  202. Private mFontSize As Long
  203. Private mBold As Boolean
  204. Private mDialogPrompt As String
  205. Private mFlags As CdlgExt_Flags
  206. Private mCancelError As Boolean
  207. Private mhIcon As Long
  208. Private mAppName As String
  209. Private i As Integer
  210.  
  211. Private Type BrowseInfo
  212.     hWndOwner As Long
  213.     pIDLRoot As Long
  214.     pszDisplayName As Long
  215.     lpszTitle As String
  216.     ulFlags As Long
  217.     lpfnCallback As Long
  218.     lParam As Long
  219.     iImage As Long
  220. End Type
  221. 'File operations
  222. Const FO_COPY = &H2
  223. Const FO_DELETE = &H3
  224. Const FO_MOVE = &H1
  225. Const FO_RENAME = &H4
  226. Const FOF_ALLOWUNDO = &H40
  227. Const FOF_SILENT = &H4
  228. Const FOF_NOCONFIRMATION = &H10
  229. Const FOF_RENAMEONCOLLISION = &H8
  230. Const FOF_NOCONFIRMMKDIR = &H200
  231. Const FOF_FILESONLY = &H80
  232.  
  233. Private Type SHFILEOPSTRUCT
  234.     hWnd      As Long
  235.     wFunc     As Long
  236.     pFrom     As String
  237.     pTo       As String
  238.     fFlags    As Integer
  239.     fAborted  As Boolean
  240.     hNameMaps As Long
  241.     sProgress As String
  242. End Type
  243.  
  244. Private Type SHELLEXECUTEINFO
  245.     cbSize As Long
  246.     fMask As Long
  247.     hWnd As Long
  248.     lpVerb As String
  249.     lpFile As String
  250.     lpParameters As String
  251.     lpDirectory As String
  252.     nShow As Long
  253.     hInstApp As Long
  254.     lpIDList As Long
  255.     lpClass As String
  256.     hkeyClass As Long
  257.     dwHotKey As Long
  258.     hIcon As Long
  259.     hProcess As Long
  260. End Type
  261.  
  262. Private Const SEE_MASK_INVOKEIDLIST = &HC
  263. Private Const SEE_MASK_NOCLOSEPROCESS = &H40
  264. Private Const SEE_MASK_FLAG_NO_UI = &H400
  265.  
  266. Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)
  267. Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
  268. Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
  269. Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
  270. Private Declare Function ShellExecuteEX Lib "shell32.dll" Alias "ShellExecuteEx" (SEI As SHELLEXECUTEINFO) As Long
  271. Private Declare Function SHSimpleIDListFromPath Lib "shell32" Alias "#162" (ByVal szPath As String) As Long
  272.  
  273. Public Sub FileProperties(FileName As String)
  274.     Dim SEI As SHELLEXECUTEINFO
  275.     Dim lngReturn As Long
  276.         With SEI
  277.             .cbSize = Len(SEI)
  278.             .fMask = SEE_MASK_NOCLOSEPROCESS Or SEE_MASK_INVOKEIDLIST Or SEE_MASK_FLAG_NO_UI
  279.             .hWnd = hOwner
  280.             .lpVerb = "properties"
  281.             .lpFile = FileName
  282.             .lpParameters = vbNullChar
  283.             .lpDirectory = vbNullChar
  284.             .nShow = 0
  285.             .hInstApp = 0
  286.             .lpIDList = 0
  287.         End With
  288.     lngReturn = ShellExecuteEX(SEI)
  289. End Sub
  290.  
  291. Public Sub Copy(file As String, Optional Dest As String)
  292.     doFileOp 0, file, Dest
  293. End Sub
  294. Public Sub Move(file As String, Optional Dest As String)
  295.     doFileOp 1, file, Dest
  296. End Sub
  297. Public Sub Delete(file As String, Optional Recyc As Boolean = True)
  298.     doFileOp 3, file, , , Recyc
  299. End Sub
  300. Public Sub Rename(file As String, Optional Dest As String)
  301.     doFileOp 2, file, Dest
  302. End Sub
  303.  
  304. Private Sub doFileOp(op As Integer, txtSource As String, Optional txtDestination As String = vbNullString, Optional conf As Boolean = False, Optional recy As Boolean = True)
  305. Dim lFileOp  As Long
  306. Dim Prompt   As String
  307. Dim lresult  As Long
  308. Dim lFlags   As Long
  309. Dim SHFileOp As SHFILEOPSTRUCT
  310.         Select Case op
  311.             Case 0
  312.                 lFileOp = FO_COPY: lFlags = lFlags Or FOF_FILESONLY Or FOF_NOCONFIRMMKDIR Or FOF_RENAMEONCOLLISION
  313.             Case 1
  314.                 lFileOp = FO_MOVE: lFlags = lFlags Or FOF_NOCONFIRMMKDIR
  315.             Case 2
  316.                 lFileOp = FO_RENAME: lFlags = lFlags Or FOF_RENAMEONCOLLISION Or FOF_FILESONLY
  317.             Case 3
  318.                 lFileOp = FO_DELETE
  319.                     If recy = "True" Then lFlags = lFlags Or FOF_ALLOWUNDO
  320.         End Select
  321.     'lFlags = lFlags Or FOF_ALLOWUNDO 'recycle files
  322.     lFlags = lFlags Or FOF_SILENT 'no dialogs
  323.     If conf = False Then lFlags = lFlags Or FOF_NOCONFIRMATION 'confirm operation status
  324.         With SHFileOp
  325.             .wFunc = lFileOp
  326.             .pFrom = txtSource & vbNullChar & vbNullChar
  327.             .pTo = txtDestination & vbNullChar & vbNullChar
  328.             .fFlags = lFlags
  329.         End With
  330.     lresult = SHFileOperation(SHFileOp)
  331.         If lresult > 0 Then
  332.             Prompt = "Opeation Failed"
  333.             MsgBox Prompt, vbInformation, "File Operations"
  334. '        ElseIf SHFileOp.fAborted Then
  335. '            Prompt = "Operation Aboted"
  336. '        Else
  337. '            Prompt = "Operation Complete"
  338.         End If
  339. End Sub
  340.  
  341.  
  342. Function BrowseForFolder(Optional sCaption As String = "Select a folder", Optional sDefault As String = "", Optional StartDir As String = "") As String
  343. Const BIF_RETURNONLYFSDIRS = 1
  344. Const MAX_PATH = 260
  345. Dim lPos As Integer, lpIDList As Long, lresult As Long
  346. Dim sPath As String, tBrowse As BrowseInfo
  347.         With tBrowse
  348.             .pIDLRoot = 0 'desktop
  349.             .hWndOwner = mhOwner 'Set the owner window
  350.             .lpszTitle = sCaption
  351.             .ulFlags = BIF_RETURNONLYFSDIRS Or BIF_STATUSTEXT    'Return only if the user selected a directory
  352.             .lpfnCallback = FarProc(AddressOf cDlg_CallBack)
  353.             .lParam = SHSimpleIDListFromPath(StrConv(StartDir, vbUnicode))
  354.         End With
  355.     lpIDList = SHBrowseForFolder(tBrowse) 'Show the dialog
  356.         If lpIDList Then
  357.             sPath = String$(MAX_PATH, 0)
  358.             SHGetPathFromIDList lpIDList, sPath 'Get the path from the IDList
  359.             CoTaskMemFree lpIDList
  360.             lPos = InStr(sPath, vbNullChar)
  361.                 If lPos Then
  362.                     BrowseForFolder = Left$(sPath, lPos - 1)
  363.                         If Right$(BrowseForFolder, 1) <> "\" Then
  364.                             BrowseForFolder = BrowseForFolder & "\"
  365.                         End If
  366.                 End If
  367.         Else
  368.             BrowseForFolder = sDefault 'User cancelled, return default path
  369.         End If
  370. End Function
  371.  
  372. Public Property Let CancelError(ByVal vData As Boolean)
  373.    mCancelError = vData
  374. End Property
  375.  
  376. Public Property Get CancelError() As Boolean
  377.   CancelError = mCancelError
  378. End Property
  379.  
  380. Public Property Get hOwner() As Long
  381.     hOwner = mhOwner
  382. End Property
  383.  
  384. Public Property Let hOwner(ByVal New_hOwner As Long)
  385.     mhOwner = New_hOwner
  386. End Property
  387.  
  388. Public Property Get flags() As CdlgExt_Flags
  389.     flags = mFlags
  390. End Property
  391.  
  392. Public Property Let flags(ByVal New_Flags As CdlgExt_Flags)
  393.     mFlags = New_Flags
  394. End Property
  395.  
  396. Public Property Get DialogTitle() As String
  397.    DialogTitle = mDialogTitle
  398. End Property
  399.  
  400. Public Property Let DialogTitle(sTitle As String)
  401.    mDialogTitle = sTitle
  402. End Property
  403.  
  404. Public Property Get DialogPrompt() As String
  405.     DialogPrompt = mDialogPrompt
  406. End Property
  407.  
  408. Public Property Let DialogPrompt(ByVal New_Prompt As String)
  409.     mDialogPrompt = New_Prompt
  410. End Property
  411.  
  412. Public Property Get AppName() As String
  413.     AppName = mAppName
  414. End Property
  415.  
  416. Public Property Let AppName(ByVal New_AppName As String)
  417.     mAppName = New_AppName
  418. End Property
  419.  
  420. Public Property Let hIcon(ByVal vData As Long)
  421.     mhIcon = vData
  422. End Property
  423.  
  424. Public Property Get hIcon() As Long
  425.    hIcon = mhIcon
  426. End Property
  427.  
  428. ' Font Properties
  429. Public Property Get FontBold() As Boolean
  430.   FontBold = mBold
  431. End Property
  432.  
  433. Public Property Let FontBold(bBold As Boolean)
  434.    mBold = bBold
  435. End Property
  436.  
  437. Public Property Get FontName() As String
  438.    FontName = mFontName
  439. End Property
  440.  
  441. Public Property Let FontName(sName As String)
  442.    mFontName = sName
  443. End Property
  444.  
  445. Public Property Get FontSize() As Long
  446.   FontSize = mFontSize
  447. End Property
  448.  
  449. Public Property Let FontSize(lSize As Long)
  450.    mFontSize = lSize
  451. End Property
  452.  
  453. Public Property Get FontItalic() As Boolean
  454.   FontItalic = mItalic
  455. End Property
  456.  
  457. Public Property Let FontItalic(BItalic As Boolean)
  458.    mItalic = BItalic
  459. End Property
  460.  
  461. Public Property Get FontStrikeThru() As Boolean
  462.    FontStrikeThru = mStrikethru
  463. End Property
  464.  
  465. Public Property Let FontStrikeThru(bStrikethru As Boolean)
  466.    mStrikethru = bStrikethru
  467. End Property
  468.  
  469. Public Property Get FontUnderline() As Boolean
  470.    FontUnderline = mUnderline
  471. End Property
  472.  
  473. Public Property Let FontUnderline(bUnderline As Boolean)
  474.    mUnderline = bUnderline
  475. End Property
  476.  
  477. ' Open , Save
  478. Public Property Get DefaultExt() As String
  479.    DefaultExt = mDefaultExt
  480. End Property
  481.  
  482. Public Property Let DefaultExt(sDefExt As String)
  483.    mDefaultExt = sDefExt
  484. End Property
  485.  
  486. Public Property Get FileName() As String
  487.    FileName = mFileName
  488. End Property
  489.  
  490. Public Property Let FileName(sFileName As String)
  491.    mFileName = sFileName
  492. End Property
  493.  
  494. Public Property Get FileTitle() As String
  495.    FileTitle = mFileTitle
  496. End Property
  497.  
  498. Public Property Let FileTitle(sTitle As String)
  499.    mFileTitle = sTitle
  500. End Property
  501.  
  502. Public Property Get Filter() As String
  503.    Filter = mFilter
  504. End Property
  505.  
  506. Public Property Let Filter(sfilter As String)
  507.    mFilter = sfilter
  508. End Property
  509.  
  510. Public Property Get FilterIndex() As Long
  511.    FilterIndex = mFilterIndex
  512. End Property
  513.  
  514. Public Property Let FilterIndex(lIndex As Long)
  515.     mFilterIndex = lIndex
  516. End Property
  517.  
  518. Public Property Get InitDir() As String
  519.    InitDir = mInitDir
  520. End Property
  521.  
  522. Public Property Let InitDir(sDir As String)
  523.     mInitDir = sDir
  524. End Property
  525.  
  526. Public Property Get SelDir() As String
  527.    SelDir = mSelDir
  528. End Property
  529.  
  530. Public Property Let SelDir(sDir As String)
  531.     mSelDir = sDir
  532. End Property
  533.  
  534. 'Color Dialog
  535. Public Property Get Color() As Long
  536.    Color = mRGBResult
  537. End Property
  538.  
  539. Public Property Let Color(lValue As Long)
  540.    mRGBResult = lValue
  541. End Property
  542.  
  543. Public Sub ShowOpen()
  544.   Dim iDelim As Integer
  545.   InitOFN
  546.   RetValue = GetOpenFileName(OFN)
  547.   If RetValue > 0 Then
  548.      iDelim = InStr(OFN.lpstrFileTitle, vbNullChar)
  549.      If iDelim Then mFileTitle = Left$(OFN.lpstrFileTitle, iDelim - 1)
  550.      iDelim = InStr(OFN.lpstrFile, vbNullChar)
  551.      If iDelim Then mFileName = Left$(OFN.lpstrFile, iDelim - 1)
  552.   Else
  553.      If mCancelError Then Err.Raise 0
  554.   End If
  555. End Sub
  556. Public Sub ShowSave()
  557.   Dim iDelim As Integer
  558.   InitOFN
  559.   RetValue = GetSaveFileName(OFN)
  560.   If RetValue > 0 Then
  561.      iDelim = InStr(OFN.lpstrFileTitle, vbNullChar)
  562.      If iDelim Then mFileTitle = Left$(OFN.lpstrFileTitle, iDelim - 1)
  563.      iDelim = InStr(OFN.lpstrFile, vbNullChar)
  564.      If iDelim Then mFileName = Left$(OFN.lpstrFile, iDelim - 1)
  565.   Else
  566.      If mCancelError Then Err.Raise 0
  567.   End If
  568. End Sub
  569. Private Sub InitOFN()
  570.   Dim sTemp As String, i As Integer
  571.   Dim uFlag As Long
  572.   uFlag = mFlags And (&H1 Or &H2 Or &H4 Or &H8 Or &H10 Or &H100 Or &H200 Or &H400 Or &H800 Or &H1000 Or &H2000 Or &H4000 Or &H8000 Or &H40000 Or &H80000 Or &H100000 Or &H200000)
  573.   With OFN
  574.        .lStructSize = Len(OFN)
  575.        .hWndOwner = mhOwner
  576.        .flags = uFlag
  577.        .lpstrDefExt = mDefaultExt
  578.        sTemp = mInitDir
  579.        If sTemp = "" Then sTemp = App.path
  580.        .lpstrInitialDir = sTemp
  581.        sTemp = mFileName
  582.        .lpstrFile = sTemp & String$(255 - Len(sTemp), 0)
  583.        .nMaxFile = 255
  584.        .lpstrFileTitle = String$(255, 0)
  585.        .nMaxFileTitle = 255
  586.         sTemp = mFilter
  587.         For i = 1 To Len(sTemp)
  588.             If Mid(sTemp, i, 1) = "|" Then
  589.                Mid(sTemp, i, 1) = vbNullChar
  590.             End If
  591.         Next
  592.         sTemp = sTemp & String$(2, 0)
  593.         .lpstrFilter = sTemp
  594.         .nFilterIndex = mFilterIndex
  595.         .lpstrTitle = mDialogTitle
  596.         .hInstance = App.hInstance
  597.  End With
  598. End Sub
  599.  
  600. Public Sub ShowColor()
  601. Dim cc As CHOOSECOLOR
  602. Dim a As Long
  603.     cc.lStructSize = Len(cc)
  604.     cc.hWndOwner = mhOwner
  605.     cc.hInstance = App.hInstance
  606.     cc.flags = mFlags And (&H1 Or &H2 Or &H4 Or &H8)
  607.     'the path to the setting is set to "USER" to allow the custom colors to be used from any app.
  608.     'TODO find where windows stors its color string
  609.     cc.lpCustColors = GetSetting("USER", "Settings", "CustomColors", String$(16 * 4, 0)) 'load custom colors
  610.     a = ChooseColorAPI(cc)
  611.         If (a) Then
  612.             mRGBResult = cc.RGBResult
  613.             SaveSetting "USER", "Settings", "CustomColors", cc.lpCustColors 'save custom colors
  614.         Else
  615.             If mCancelError Then Err.Raise (RetValue)
  616.         End If
  617. End Sub
  618.  
  619. Public Sub ShowFont()
  620.   Dim CF As ChooseFont
  621.   Dim LF As LOGFONT
  622.   Dim TempByteArray() As Byte
  623.   Dim ByteArrayLimit As Long
  624.   Dim OldhDC As Long
  625.   Dim FontToUse As Long
  626.   Dim tbuf As String * 80
  627.   Dim x As Long
  628.   Dim uFlag As Long
  629.   uFlag = mFlags And (&H1 Or &H2 Or &H3 Or &H4 Or &H100 Or &H200 Or &H400 Or &H800 Or &H1000 Or &H2000 Or &H4000 Or &H8000 Or &H10000 Or &H20000 Or &H40000 Or &H80000 Or &H100000 Or &H200000)
  630.   TempByteArray = StrConv(mFontName & vbNullChar, vbFromUnicode)
  631.   ByteArrayLimit = UBound(TempByteArray)
  632.   With LF
  633.         For x = 0 To ByteArrayLimit
  634.            .lfFaceName(x) = TempByteArray(x)
  635.         Next
  636.     .lfHeight = mFontSize / 72 * GetDeviceCaps(GetDC(mhOwner), LOGPIXELSY)
  637.     .lfItalic = mItalic * -1
  638.     .lfUnderline = mUnderline * -1
  639.     .lfStrikeOut = mStrikethru * -1
  640.     If mBold Then .lfWeight = FW_BOLD
  641.   End With
  642.   With CF
  643.       .lStructSize = Len(CF)
  644.       .hWndOwner = mhOwner
  645.       .hdc = GetDC(mhOwner)
  646.       .lpLogFont = lstrcpy(LF, LF)
  647.       If Not uFlag Then
  648.          .flags = cdlCFScreenFonts
  649.       Else
  650.          .flags = uFlag Or cdlCFWYSIWYG
  651.       End If
  652.      .flags = .flags Or cdlCFEffects Or CF_INITTOLOGFONTSTRUCT
  653.      .rgbColors = mRGBResult
  654.      .lCustData = 0
  655.      .lpfnHook = 0
  656.      .lpTemplateName = 0
  657.      .hInstance = 0
  658.      .lpszStyle = 0
  659.      .nFontType = SCREEN_FONTTYPE
  660.      .nSizeMin = 0
  661.      .nSizeMax = 0
  662.      .iPointSize = mFontSize * 10
  663.     End With
  664.     RetValue = ChooseFont(CF)
  665.     If RetValue = 0 Then
  666.        If mCancelError Then Err.Raise (RetValue)
  667.     Else
  668.        With LF
  669.             mItalic = .lfItalic * -1
  670.             mUnderline = .lfUnderline * -1
  671.             mStrikethru = .lfStrikeOut * -1
  672.        End With
  673.        With CF
  674.             mFontSize = .iPointSize \ 10
  675.             mRGBResult = .rgbColors
  676.             If .nFontType And BOLD_FONTTYPE Then
  677.                 mBold = True
  678.             Else
  679.                 mBold = False
  680.             End If
  681.        End With
  682.        FontToUse = CreateFontIndirect(LF)
  683.        If FontToUse = 0 Then Exit Sub
  684.           OldhDC = SelectObject(CF.hdc, FontToUse)
  685.           RetValue = GetTextFace(CF.hdc, 79, tbuf)
  686.           mFontName = Mid$(tbuf, 1, RetValue)
  687.        End If
  688. End Sub
  689.  
  690.  
  691. '<*END*>
  692.  
  693.  
  694.