CommonDialogs.bas
上传用户:shwyly
上传日期:2007-01-07
资源大小:49k
文件大小:26k
源码类别:

棋牌游戏

开发平台:

Visual Basic

  1. Attribute VB_Name = "CommDlgs"
  2. Option Explicit
  3. Private Type OPENFILENAME
  4.     lStructSize As Long
  5.     hWnd As Long
  6.     hInstance As Long
  7.     lpstrFilter As String
  8.     lpstrCustomFilter As String
  9.     nMaxCustFilter As Long
  10.     nFilterIndex As Long
  11.     lpstrFile As String
  12.     nMaxFile As Long
  13.     lpstrFileTitle As String
  14.     nMaxFileTitle As Long
  15.     lpstrInitialDir As String
  16.     lpstrTitle As String
  17.     Flags As Long
  18.     nFileOffset As Integer
  19.     nFileExtension As Integer
  20.     lpstrDefExt As String
  21.     lCustData As Long
  22.     lpfnHook As Long
  23.     lpTemplateName As String
  24. End Type
  25. Private Type COLORSTRUC
  26.     lStructSize As Long
  27.     hWnd As Long
  28.     hInstance As Long
  29.     rgbResult As Long
  30.     lpCustColors As String
  31.     Flags As Long
  32.     lCustData As Long
  33.     lpfnHook As Long
  34.     lpTemplateName As String
  35. End Type
  36. Private Const LF_FACESIZE = 32
  37. Private Type LOGFONT
  38.     lfHeight As Long
  39.     lfWidth As Long
  40.     lfEscapement As Long
  41.     lfOrientation As Long
  42.     lfWeight As Long
  43.     lfItalic As Byte
  44.     lfUnderline As Byte
  45.     lfStrikeOut As Byte
  46.     lfCharSet As Byte
  47.     lfOutPrecision As Byte
  48.     lfClipPrecision As Byte
  49.     lfQuality As Byte
  50.     lfPitchAndFamily As Byte
  51.     lfFaceName(LF_FACESIZE) As Byte
  52. End Type
  53. Private Type FONTSTRUC
  54.     lStructSize As Long
  55.     hWnd As Long
  56.     hDC As Long
  57.     lpLogFont As Long
  58.     iPointSize As Long
  59.     Flags As Long
  60.     rgbColors As Long
  61.     lCustData As Long
  62.     lpfnHook As Long
  63.     lpTemplateName As String
  64.     hInstance As Long
  65.     lpszStyle As String
  66.     nFontType As Integer
  67.     MISSING_ALIGNMENT As Integer
  68.     nSizeMin As Long
  69.     nSizeMax As Long
  70. End Type
  71. Public Type DEVMODE
  72.     dmDeviceName As String * 32
  73.     dmSpecVersion As Integer
  74.     dmDriverVersion As Integer
  75.     dmSize As Integer
  76.     dmDriverExtra As Integer
  77.     dmFields As Long
  78.     dmOrientation As Integer
  79.     dmPaperSize As Integer
  80.     dmPaperLength As Integer
  81.     dmPaperWidth As Integer
  82.     dmScale As Integer
  83.     dmCopies As Integer
  84.     dmDefaultSource As Integer
  85.     dmPrintQuality As Integer
  86.     dmColor As Integer
  87.     dmDuplex As Integer
  88.     dmYResolution As Integer
  89.     dmTTOption As Integer
  90.     dmCollate As Integer
  91.     dmFormName As String * 32
  92.     dmUnusedPadding As Integer
  93.     dmBitsPerPel As Integer
  94.     dmPelsWidth As Long
  95.     dmPelsHeight As Long
  96.     dmDisplayFlags As Long
  97.     dmDisplayFreq As Long
  98. End Type
  99. Private Type PRINTDLGSTRUC
  100.     lStructSize As Long
  101.     hWnd As Long
  102.     hDevMode As Long
  103.     hDevNames As Long
  104.     hDC As Long
  105.     Flags As Long
  106.     nFromPage As Integer
  107.     nToPage As Integer
  108.     nMinPage As Integer
  109.     nMaxPage As Integer
  110.     nCopies As Integer
  111.     hInstance As Long
  112.     lCustData As Long
  113.     lpfnPrintHook As Long
  114.     lpfnSetupHook As Long
  115.     lpPrintTemplateName As String
  116.     lpSetupTemplateName As String
  117.     hPrintTemplate As Long
  118.     hSetupTemplate As Long
  119. End Type
  120. Public Type PRINTPROPS
  121.     Cancel As Boolean
  122.     Device As String
  123.     Copies As Integer
  124.     Collate As Boolean
  125.     File As Boolean
  126.     All As Boolean
  127.     Pages As Boolean
  128.     Selection As Boolean
  129.     FromPage As Integer
  130.     ToPage As Integer
  131.     DM As DEVMODE
  132. End Type
  133. Private Type SHITEMID
  134.     cb As Long
  135.     abID As Byte
  136. End Type
  137. Private Type ITEMIDLIST
  138.     mkid As SHITEMID
  139. End Type
  140. Private Type BROWSEINFO
  141.     hOwner As Long
  142.     pidlRoot As Long
  143.     pszDisplayName As String
  144.     lpszTitle As String
  145.     ulFlags As Long
  146.     lpfn As Long
  147.     lParam As Long
  148.     iImage As Long
  149. End Type
  150. '//
  151. '// Win32s (Private Functions for Wrappers Below)
  152. '//
  153. Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
  154. Private Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long
  155. Private Declare Function PrintDlg Lib "comdlg32.dll" Alias "PrintDlgA" (pPrintdlg As PRINTDLGSTRUC) As Long
  156. Private Declare Function ChooseColor Lib "comdlg32.dll" Alias "ChooseColorA" (pChoosecolor As COLORSTRUC) As Long
  157. Private Declare Function ChooseFont Lib "comdlg32.dll" Alias "ChooseFontA" (pChoosefont As FONTSTRUC) As Long
  158. Private Declare Function GlobalAlloc Lib "Kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
  159. Private Declare Function GlobalFree Lib "Kernel32" (ByVal hMem As Long) As Long
  160. Private Declare Function GlobalLock Lib "Kernel32" (ByVal hMem As Long) As Long
  161. Private Declare Function GlobalUnlock Lib "Kernel32" (ByVal hMem As Long) As Long
  162. Private Declare Sub CopyMemory Lib "Kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
  163. Private Declare Function SHGetPathFromIDList Lib "SHELL32.DLL" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
  164. Private Declare Function SHGetSpecialFolderLocation Lib "SHELL32.DLL" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
  165. Private Declare Function SHBrowseForFolder Lib "SHELL32.DLL" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long 'ITEMIDLIST
  166. Private Declare Function WriteProfileString Lib "Kernel32" Alias "WriteProfileStringA" (ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lpszString As String) As Long
  167. Private Declare Function GetProfileString Lib "Kernel32" Alias "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long
  168. Private Declare Function SendMessageByString Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
  169. '//
  170. '// Win32s (Public)
  171. '//
  172. Declare Function WinHelp Lib "user32" Alias "WinHelpA" (ByVal hWnd As Long, ByVal lpHelpFile As String, ByVal wCommand As Long, ByVal dwData As Any) As Long
  173. Declare Function HTMLHelp Lib "hhctrl.ocx" Alias "HtmlHelpA" (ByVal hWnd As Long, ByVal szFilename As String, ByVal dwCommand As Long, ByVal dwData As Any) As Long
  174. '//
  175. '// Constants (Public for Print Dialog Box)
  176. '//
  177. Public Const PD_NOSELECTION = &H4
  178. Public Const PD_DISABLEPRINTTOFILE = &H80000
  179. Public Const PD_PRINTTOFILE = &H20
  180. Public Const PD_RETURNDC = &H100
  181. Public Const PD_RETURNDEFAULT = &H400
  182. Public Const PD_RETURNIC = &H200
  183. Public Const PD_SELECTION = &H1
  184. Public Const PD_SHOWHELP = &H800
  185. Public Const PD_NOPAGENUMS = &H8
  186. Public Const PD_PAGENUMS = &H2
  187. Public Const PD_ALLPAGES = &H0
  188. Public Const PD_COLLATE = &H10
  189. Public Const PD_HIDEPRINTTOFILE = &H100000
  190. '//
  191. '// Constants (Public for WinHelp)
  192. '//
  193. Public Const HELP_COMMAND = &H102&
  194. Public Const HELP_CONTENTS = &H3&
  195. Public Const HELP_CONTEXT = &H1
  196. Public Const HELP_CONTEXTPOPUP = &H8&
  197. Public Const HELP_FORCEFILE = &H9&
  198. Public Const HELP_HELPONHELP = &H4
  199. Public Const HELP_INDEX = &H3
  200. Public Const HELP_KEY = &H101
  201. Public Const HELP_MULTIKEY = &H201&
  202. Public Const HELP_PARTIALKEY = &H105&
  203. Public Const HELP_QUIT = &H2
  204. Public Const HELP_SETCONTENTS = &H5&
  205. Public Const HELP_SETINDEX = &H5
  206. Public Const HELP_SETWINPOS = &H203&
  207. '//
  208. '// Constants (Public for HTMLHelp)
  209. '//
  210. Public Const HH_DISPLAY_TOPIC = &H0&
  211. Public Const HH_HELP_FINDER = &H0&
  212. Public Const HH_DISPLAY_TOC = &H1&    '// Currently Not Implemented
  213. Public Const HH_DISPLAY_INDEX = &H2&  '// Currently Not Implemented
  214. Public Const HH_DISPLAY_SEARCH = &H3& '// Currently Not Implemented
  215. Public Const HH_SET_WIN_TYPE = &H4&
  216. Public Const HH_GET_WIN_TYPE = &H5&
  217. Public Const HH_GET_WIN_HANDLE = &H6&
  218. Public Const HH_ENUM_INFO_TYPE = &H7&
  219. Public Const HH_SET_INFO_TYPE = &H8&
  220. Public Const HH_SYNC = &H9&
  221. Public Const HH_ADD_NAV_UI = &H10&     '// Currently Not Implemented
  222. Public Const HH_ADD_BUTTON = &H11&     '// Currently Not Implemented
  223. Public Const HH_GETBROWSER_APP = &H12& '// Currently Not Implemented
  224. Public Const HH_KEYWORD_LOOKUP = &H13&
  225. Public Const HH_DISPLAY_TEXT_POPUP = &H14&
  226. Public Const HH_HELP_CONTEXT = &H15&
  227. Public Const HH_TP_HELP_CONTEXTMENU = &H16&
  228. Public Const HH_TP_HELP_WM_HELP = &H17&
  229. Public Const HH_CLOSE_ALL = &H18&
  230. Public Const HH_ALINK_LOOKUP = &H19&
  231. Public Const HH_GET_LAST_ERROR = &H20&       '// Currently Not Implemented
  232. Public Const HH_ENUM_CATEGORY = &H21&
  233. Public Const HH_ENUM_CATEGORY_IT = &H22&
  234. Public Const HH_RESET_IT_FILTER = &H23&
  235. Public Const HH_SET_INCLUSIVE_FILTER = &H24&
  236. Public Const HH_SET_EXCLUSIVE_FILTER = &H25&
  237. Public Const HH_SET_GUID = &H26&
  238. Public Const HH_INTERNAL = &H255&
  239. '//
  240. '// Constants (Private)
  241. '//
  242. Private Const FW_BOLD = 700
  243. Private Const GMEM_MOVEABLE = &H2
  244. Private Const GMEM_ZEROINIT = &H40
  245. Private Const GHND = (GMEM_MOVEABLE Or GMEM_ZEROINIT)
  246. Private Const OFN_ALLOWMULTISELECT = &H200
  247. Private Const OFN_CREATEPROMPT = &H2000
  248. Private Const OFN_ENABLEHOOK = &H20
  249. Private Const OFN_ENABLETEMPLATE = &H40
  250. Private Const OFN_ENABLETEMPLATEHANDLE = &H80
  251. Private Const OFN_EXPLORER = &H80000
  252. Private Const OFN_EXTENSIONDIFFERENT = &H400
  253. Private Const OFN_FILEMUSTEXIST = &H1000
  254. Private Const OFN_HIDEREADONLY = &H4
  255. Private Const OFN_LONGNAMES = &H200000
  256. Private Const OFN_NOCHANGEDIR = &H8
  257. Private Const OFN_NODEREFERENCELINKS = &H100000
  258. Private Const OFN_NOLONGNAMES = &H40000
  259. Private Const OFN_NONETWORKBUTTON = &H20000
  260. Private Const OFN_NOREADONLYRETURN = &H8000
  261. Private Const OFN_NOTESTFILECREATE = &H10000
  262. Private Const OFN_NOVALIDATE = &H100
  263. Private Const OFN_OVERWRITEPROMPT = &H2
  264. Private Const OFN_PATHMUSTEXIST = &H800
  265. Private Const OFN_READONLY = &H1
  266. Private Const OFN_SHAREAWARE = &H4000
  267. Private Const OFN_SHAREFALLTHROUGH = 2
  268. Private Const OFN_SHARENOWARN = 1
  269. Private Const OFN_SHAREWARN = 0
  270. Private Const OFN_SHOWHELP = &H10
  271. Private Const PD_ENABLEPRINTHOOK = &H1000
  272. Private Const PD_ENABLEPRINTTEMPLATE = &H4000
  273. Private Const PD_ENABLEPRINTTEMPLATEHANDLE = &H10000
  274. Private Const PD_ENABLESETUPHOOK = &H2000
  275. Private Const PD_ENABLESETUPTEMPLATE = &H8000
  276. Private Const PD_ENABLESETUPTEMPLATEHANDLE = &H20000
  277. Private Const PD_NONETWORKBUTTON = &H200000
  278. Private Const PD_PRINTSETUP = &H40
  279. Private Const PD_USEDEVMODECOPIES = &H40000
  280. Private Const PD_USEDEVMODECOPIESANDCOLLATE = &H40000
  281. Private Const PD_NOWARNING = &H80
  282. Private Const CF_ANSIONLY = &H400&
  283. Private Const CF_APPLY = &H200&
  284. Private Const CF_BITMAP = 2
  285. Private Const CF_PRINTERFONTS = &H2
  286. Private Const CF_PRIVATEFIRST = &H200
  287. Private Const CF_PRIVATELAST = &H2FF
  288. Private Const CF_RIFF = 11
  289. Private Const CF_SCALABLEONLY = &H20000
  290. Private Const CF_SCREENFONTS = &H1
  291. Private Const CF_BOTH = (CF_SCREENFONTS Or CF_PRINTERFONTS)
  292. Private Const CF_DIB = 8
  293. Private Const CF_DIF = 5
  294. Private Const CF_DSPBITMAP = &H82
  295. Private Const CF_DSPENHMETAFILE = &H8E
  296. Private Const CF_DSPMETAFILEPICT = &H83
  297. Private Const CF_DSPTEXT = &H81
  298. Private Const CF_EFFECTS = &H100&
  299. Private Const CF_ENABLEHOOK = &H8&
  300. Private Const CF_ENABLETEMPLATE = &H10&
  301. Private Const CF_ENABLETEMPLATEHANDLE = &H20&
  302. Private Const CF_ENHMETAFILE = 14
  303. Private Const CF_FIXEDPITCHONLY = &H4000&
  304. Private Const CF_FORCEFONTEXIST = &H10000
  305. Private Const CF_GDIOBJFIRST = &H300
  306. Private Const CF_GDIOBJLAST = &H3FF
  307. Private Const CF_INITTOLOGFONTSTRUCT = &H40&
  308. Private Const CF_LIMITSIZE = &H2000&
  309. Private Const CF_METAFILEPICT = 3
  310. Private Const CF_NOFACESEL = &H80000
  311. Private Const CF_NOVERTFONTS = &H1000000
  312. Private Const CF_NOVECTORFONTS = &H800&
  313. Private Const CF_NOOEMFONTS = CF_NOVECTORFONTS
  314. Private Const CF_NOSCRIPTSEL = &H800000
  315. Private Const CF_NOSIMULATIONS = &H1000&
  316. Private Const CF_NOSIZESEL = &H200000
  317. Private Const CF_NOSTYLESEL = &H100000
  318. Private Const CF_OEMTEXT = 7
  319. Private Const CF_OWNERDISPLAY = &H80
  320. Private Const CF_PALETTE = 9
  321. Private Const CF_PENDATA = 10
  322. Private Const CF_SCRIPTSONLY = CF_ANSIONLY
  323. Private Const CF_SELECTSCRIPT = &H400000
  324. Private Const CF_SHOWHELP = &H4&
  325. Private Const CF_SYLK = 4
  326. Private Const CF_TEXT = 1
  327. Private Const CF_TIFF = 6
  328. Private Const CF_TTONLY = &H40000
  329. Private Const CF_UNICODETEXT = 13
  330. Private Const CF_USESTYLE = &H80&
  331. Private Const CF_WAVE = 12
  332. Private Const CF_WYSIWYG = &H8000
  333. Private Const CFERR_CHOOSEFONTCODES = &H2000
  334. Private Const CFERR_MAXLESSTHANMIN = &H2002
  335. Private Const CFERR_NOFONTS = &H2001
  336. Private Const CC_ANYCOLOR = &H100
  337. Private Const CC_CHORD = 4
  338. Private Const CC_CIRCLES = 1
  339. Private Const CC_ELLIPSES = 8
  340. Private Const CC_ENABLEHOOK = &H10
  341. Private Const CC_ENABLETEMPLATE = &H20
  342. Private Const CC_ENABLETEMPLATEHANDLE = &H40
  343. Private Const CC_FULLOPEN = &H2
  344. Private Const CC_INTERIORS = 128
  345. Private Const CC_NONE = 0
  346. Private Const CC_PIE = 2
  347. Private Const CC_PREVENTFULLOPEN = &H4
  348. Private Const CC_RGBINIT = &H1
  349. Private Const CC_ROUNDRECT = 256 '
  350. Private Const CC_SHOWHELP = &H8
  351. Private Const CC_SOLIDCOLOR = &H80
  352. Private Const CC_STYLED = 32
  353. Private Const CC_WIDE = 16
  354. Private Const CC_WIDESTYLED = 64
  355. Private Const CCERR_CHOOSECOLORCODES = &H5000
  356. Private Const LOGPIXELSY = 90
  357. Private Const CCHDEVICENAME = 32
  358. Private Const CCHFORMNAME = 32
  359. Private Const SIMULATED_FONTTYPE = &H8000
  360. Private Const PRINTER_FONTTYPE = &H4000
  361. Private Const SCREEN_FONTTYPE = &H2000
  362. Private Const BOLD_FONTTYPE = &H100
  363. Private Const ITALIC_FONTTYPE = &H200
  364. Private Const REGULAR_FONTTYPE = &H400
  365. Private Const WM_CHOOSEFONT_GETLOGFONT = (&H400 + 1)
  366. Private Const LBSELCHSTRING = "commdlg_LBSelChangedNotify"
  367. Private Const SHAREVISTRING = "commdlg_ShareViolation"
  368. Private Const FILEOKSTRING = "commdlg_FileNameOK"
  369. Private Const COLOROKSTRING = "commdlg_ColorOK"
  370. Private Const SETRGBSTRING = "commdlg_SetRGBColor"
  371. Private Const FINDMSGSTRING = "commdlg_FindReplace"
  372. Private Const HELPMSGSTRING = "commdlg_help"
  373. Private Const CD_LBSELNOITEMS = -1
  374. Private Const CD_LBSELCHANGE = 0
  375. Private Const CD_LBSELSUB = 1
  376. Private Const CD_LBSELADD = 2
  377. Private Const NOERROR = 0
  378. Private Const CSIDL_DESKTOP = &H0
  379. Private Const CSIDL_PROGRAMS = &H2
  380. Private Const CSIDL_CONTROLS = &H3
  381. Private Const CSIDL_PRINTERS = &H4
  382. Private Const CSIDL_PERSONAL = &H5
  383. Private Const CSIDL_FAVORITES = &H6
  384. Private Const CSIDL_STARTUP = &H7
  385. Private Const CSIDL_RECENT = &H8
  386. Private Const CSIDL_SENDTO = &H9
  387. Private Const CSIDL_BITBUCKET = &HA
  388. Private Const CSIDL_STARTMENU = &HB
  389. Private Const CSIDL_DESKTOPDIRECTORY = &H10
  390. Private Const CSIDL_DRIVES = &H11
  391. Private Const CSIDL_NETWORK = &H12
  392. Private Const CSIDL_NETHOOD = &H13
  393. Private Const CSIDL_FONTS = &H14
  394. Private Const CSIDL_TEMPLATES = &H15
  395. Private Const BIF_RETURNONLYFSDIRS = &H1
  396. Private Const BIF_DONTGOBELOWDOMAIN = &H2
  397. Private Const BIF_STATUSTEXT = &H4
  398. Private Const BIF_RETURNFSANCESTORS = &H8
  399. Private Const BIF_BROWSEFORCOMPUTER = &H1000
  400. Private Const BIF_BROWSEFORPRINTER = &H2000
  401. Private Const HWND_BROADCAST = &HFFFF&
  402. Private Const WM_WININICHANGE = &H1A
  403. '//
  404. '// SetDefaultPrinter Function
  405. '//
  406. '// Description:
  407. '// Sets the user's default printer to the printer represented by the passed printer object.
  408. '//
  409. '// Syntax:
  410. '// BOOL = SetDefaultPrinter(object)
  411. '//
  412. '// Example:
  413. '// Dim objNewPrinter As Printer
  414. '// Set objNewPrinter = Printers(2)
  415. '// SetDefaultPrinter objNewPrinter
  416. '//
  417. Public Function SetDefaultPrinter(objPrn As Printer) As Boolean
  418.     Dim X As Long, szTmp As String
  419.     
  420.     szTmp = objPrn.DeviceName & "," & objPrn.DriverName & "," & objPrn.Port
  421.     X = WriteProfileString("windows", "device", szTmp)
  422.     X = SendMessageByString(HWND_BROADCAST, WM_WININICHANGE, 0&, "windows")
  423.     
  424. End Function
  425. '//
  426. '// GetDefaultPrinter Function
  427. '//
  428. '// Description:
  429. '// Retuns the device name of the default printer.
  430. '//
  431. '// Syntax:
  432. '// StrVar = GetDefaultPrinter()
  433. '//
  434. '// Example:
  435. '// szDefPrinter = GetDefaultPrinter
  436. '//
  437. Public Function GetDefaultPrinter() As String
  438.     Dim X As Long, szTmp As String, dwBuf As Long
  439.     dwBuf = 1024
  440.     szTmp = Space(dwBuf + 1)
  441.     X = GetProfileString("windows", "device", "", szTmp, dwBuf)
  442.     GetDefaultPrinter = Trim(Left(szTmp, X))
  443. End Function
  444. '//
  445. '// ResetDefaultPrinter Function
  446. '//
  447. '// Description:
  448. '// Resets the default printer to the passed device name.
  449. '//
  450. '// Syntax:
  451. '// BOOL = ResetDefaultPrinter(StrVar)
  452. '//
  453. '// Example:
  454. '// szDefPrinter = GetDefaultPrinter()
  455. '// If Not ResetDefaultPrinter(szDefPrinter) Then
  456. '//     MsgBox "Could not reset default printer.", vbExclamation
  457. '// End If
  458. '//
  459. Public Function ResetDefaultPrinter(szBuf As String) As Boolean
  460.     Dim X As Long
  461.     
  462.     X = WriteProfileString("windows", "device", szBuf)
  463.     X = SendMessageByString(HWND_BROADCAST, WM_WININICHANGE, 0&, "windows")
  464. End Function
  465. '//
  466. '// BrowseFolder Function
  467. '//
  468. '// Description:
  469. '// Allows the user to interactively browse and select a folder found in the file system.
  470. '//
  471. '// Syntax:
  472. '// StrVar = BrowseFolder(hWnd, StrVar)
  473. '//
  474. '// Example:
  475. '// szFilename = BrowseFolder(Me.hWnd, "Browse for application folder:")
  476. '//
  477. Public Function BrowseFolder(hWnd As Long, szDialogTitle As String) As String
  478.     Dim X As Long, BI As BROWSEINFO, dwIList As Long, szPath As String, wPos As Integer
  479.     
  480.     BI.hOwner = hWnd
  481.     BI.lpszTitle = szDialogTitle
  482.     BI.ulFlags = BIF_RETURNONLYFSDIRS
  483.     dwIList = SHBrowseForFolder(BI)
  484.     szPath = Space$(512)
  485.     X = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)
  486.     If X Then
  487.         wPos = InStr(szPath, Chr(0))
  488.         BrowseFolder = Left$(szPath, wPos - 1)
  489.     Else
  490.         BrowseFolder = ""
  491.     End If
  492. End Function
  493. '//
  494. '// DialogConnectToPrinter Function
  495. '//
  496. '// Description:
  497. '// Allows users to interactively selection and connect to local and network printers.
  498. '//
  499. '// Syntax:
  500. '// DialogConnectToPrinter
  501. '//
  502. '// Example:
  503. '// DialogConnectToPrinter
  504. '//
  505. Public Function DialogConnectToPrinter() As Boolean
  506.     Shell "rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter", vbNormalFocus
  507.     
  508. End Function
  509. '//
  510. '// ByteToString Function
  511. '//
  512. '// Description:
  513. '// Converts an array of bytes into a string
  514. '//
  515. '// Syntax:
  516. '// StrVar = ByteToString(ARRAY)
  517. '//
  518. '// Example:
  519. '// szBuf = BytesToString(aChars(10))
  520. '//
  521. Private Function ByteToString(aBytes() As Byte) As String
  522.     Dim dwBytePoint As Long, dwByteVal As Long, szOut As String
  523.     
  524.     dwBytePoint = LBound(aBytes)
  525.     
  526.     While dwBytePoint <= UBound(aBytes)
  527.         
  528.         dwByteVal = aBytes(dwBytePoint)
  529.         
  530.         If dwByteVal = 0 Then
  531.             ByteToString = szOut
  532.             Exit Function
  533.         Else
  534.             szOut = szOut & Chr$(dwByteVal)
  535.         End If
  536.         
  537.         dwBytePoint = dwBytePoint + 1
  538.     
  539.     Wend
  540.     
  541.     ByteToString = szOut
  542.     
  543. End Function
  544. '//
  545. '// DialogColor Function
  546. '//
  547. '// Description:
  548. '// Displays the Color common dialog box and sets a passed controls foreground color.
  549. '//
  550. '// Syntax:
  551. '// BOOL = DialogColor(hWnd, CONTROL)
  552. '//
  553. '// Example:
  554. '// Dim yn as Boolean
  555. '// yn = DialogColor(Me.hWnd, txtEditor)
  556. '//
  557. Public Function DialogColor(hWnd As Long, C As Control) As Boolean
  558.     Dim X As Long, CS As COLORSTRUC, CustColor(16) As Long
  559.     
  560.     CS.lStructSize = Len(CS)
  561.     CS.hWnd = hWnd
  562.     CS.hInstance = App.hInstance
  563.     CS.Flags = CC_SOLIDCOLOR
  564.     CS.lpCustColors = String$(16 * 4, 0)
  565.     X = ChooseColor(CS)
  566.     If X = 0 Then
  567.         DialogColor = False
  568.     Else
  569.         DialogColor = True
  570.         C.ForeColor = CS.rgbResult
  571.     End If
  572.     
  573. End Function
  574. '//
  575. '// DialogFont Function
  576. '//
  577. '// Description:
  578. '// Displays the Font common dialog box and sets a passed controls font properties.
  579. '//
  580. '// Syntax:
  581. '// BOOL = DialogFont(hWnd, CONTROL)
  582. '//
  583. '// Example:
  584. '// Dim yn as Boolean
  585. '// yn = DialogFont(Me.hWnd, txtEditor)
  586. '//
  587. Public Function DialogFont(hWnd As Long, C As Control) As Boolean
  588.     Dim LF As LOGFONT, FS As FONTSTRUC
  589.     Dim lLogFontAddress As Long, lMemHandle As Long
  590.     
  591.     If C.Font.Bold Then LF.lfWeight = FW_BOLD
  592.     If C.Font.Italic = True Then LF.lfItalic = 1
  593.     If C.Font.Underline = True Then LF.lfUnderline = 1
  594.     
  595.     FS.lStructSize = Len(FS)
  596.     
  597.     lMemHandle = GlobalAlloc(GHND, Len(LF))
  598.     If lMemHandle = 0 Then
  599.         DialogFont = False
  600.         Exit Function
  601.     End If
  602.     
  603.     lLogFontAddress = GlobalLock(lMemHandle)
  604.     If lLogFontAddress = 0 Then
  605.         DialogFont = False
  606.         Exit Function
  607.     End If
  608.     
  609.     CopyMemory ByVal lLogFontAddress, LF, Len(LF)
  610.     FS.lpLogFont = lLogFontAddress
  611.     FS.iPointSize = C.Font.Size * 10
  612.     FS.Flags = CF_SCREENFONTS Or CF_EFFECTS
  613.     
  614.     If ChooseFont(FS) = 1 Then
  615.     
  616.         CopyMemory LF, ByVal lLogFontAddress, Len(LF)
  617.             
  618.         If LF.lfWeight >= FW_BOLD Then
  619.             C.Font.Bold = True
  620.         Else
  621.             C.Font.Bold = False
  622.         End If
  623.                         
  624.         If LF.lfItalic = 1 Then
  625.             C.Font.Italic = True
  626.         Else
  627.             C.Font.Italic = False
  628.         End If
  629.             
  630.         If LF.lfUnderline = 1 Then
  631.             C.Font.Underline = True
  632.         Else
  633.             C.Font.Underline = False
  634.         End If
  635.         
  636.         C.Font.Name = ByteToString(LF.lfFaceName())
  637.         C.Font.Size = CLng(FS.iPointSize / 10)
  638.         
  639.         DialogFont = True
  640.             
  641.     Else
  642.     
  643.         DialogFont = False
  644.             
  645.     End If
  646.     
  647. End Function
  648. '//
  649. '// DialogFile Function
  650. '//
  651. '// Description:
  652. '// Displays the File Open/Save As common dialog boxes.
  653. '//
  654. '// Syntax:
  655. '// StrVar = DialogFile(hWnd, IntVar, StrVar, StrVar, StrVar, StrVar, StrVar)
  656. '//
  657. '// Example:
  658. '// szFilename = DialogFile(Me.hWnd, 1, "Open", "MyFileName.doc", "Documents" & Chr(0) & "*.doc" & Chr(0) & "All files" & Chr(0) & "*.*", App.Path, "doc", Path)
  659. '//
  660. '// Please note that the szFilter var works a bit differently
  661. '// from the filter property associated with the common dialog
  662. '// control. Instead of separating the differents parts of the
  663. '// string with pipe chars, |, you should use null chars, Chr(0),
  664. '// as separators.
  665. Public Function DialogFile(hWnd As Long, wMode As Integer, szDialogTitle As String, szFilename As String, szFilter As String, szDefDir As String, szDefExt As String, szDestDir As String) As String
  666.     Dim X As Long, OFN As OPENFILENAME, szFile As String, szFileTitle As String
  667.     
  668.     OFN.lStructSize = Len(OFN)
  669.     OFN.hWnd = hWnd
  670.     OFN.lpstrTitle = szDialogTitle
  671.     OFN.lpstrFile = szFilename & String$(250 - Len(szFilename), 0)
  672.     OFN.nMaxFile = 255
  673.     OFN.lpstrFileTitle = String$(255, 0)
  674.     OFN.nMaxFileTitle = 255
  675.     OFN.lpstrFilter = szFilter
  676.     OFN.nFilterIndex = 1
  677.     OFN.lpstrInitialDir = szDefDir
  678.     OFN.lpstrDefExt = szDefExt
  679.     If wMode = 1 Then
  680.         OFN.Flags = OFN_HIDEREADONLY Or OFN_PATHMUSTEXIST Or OFN_FILEMUSTEXIST
  681.         X = GetOpenFileName(OFN)
  682.     Else
  683.         OFN.Flags = OFN_HIDEREADONLY Or OFN_OVERWRITEPROMPT Or OFN_PATHMUSTEXIST
  684.         X = GetSaveFileName(OFN)
  685.     End If
  686.     
  687.     If X <> 0 Then
  688.     
  689.         '// If InStr(OFN.lpstrFileTitle, Chr$(0)) > 0 Then
  690.         '//     szFileTitle = Left$(OFN.lpstrFileTitle, InStr(OFN.lpstrFileTitle, Chr$(0)) - 1)
  691.         '// End If
  692.         If InStr(OFN.lpstrFile, Chr$(0)) > 0 Then
  693.             szFile = Left$(OFN.lpstrFile, InStr(OFN.lpstrFile, Chr$(0)) - 1)
  694.         End If
  695.         '// OFN.nFileOffset is the number of characters from the beginning of the
  696.         '// full path to the start of the file name
  697.         '// OFN.nFileExtension is the number of characters from the beginning of the
  698.         '// full path to the file's extention, including the (.)
  699.         '// MsgBox "File Name is " & szFileTitle & Chr$(13) & Chr$(10) & "Full path and file is " & szFile, , "Open"
  700.         
  701.         '// DialogFile = szFile & "|" & szFileTitle
  702.         DialogFile = szFile
  703.         szDestDir = Left(szFile, OFN.nFileOffset)
  704.         
  705.     Else
  706.     
  707.         DialogFile = ""
  708.         
  709.     End If
  710.     
  711. End Function
  712. '//
  713. '// DialogPrint Function
  714. '//
  715. '// Description:
  716. '// Displays the Print common dialog box and returns a structure containing user entered
  717. '// information from the common dialog box.
  718. '//
  719. '// Syntax:
  720. '// PRINTPROPS = DialogPrint(hWnd, BOOL, DWORD)
  721. '//
  722. '// Example:
  723. '// Dim PP As PRINTPROPS
  724. '// PP = DialogPrint(Me.hWnd, True, PD_PAGENUMS or PD_SELECTION or PD_SHOWHELP)
  725. '//
  726. Public Function DialogPrint(hWnd As Long, bPages As Boolean, Flags As Long) As PRINTPROPS
  727.     Dim DM As DEVMODE, PD As PRINTDLGSTRUC
  728.     Dim lpDM As Long, wNull As Integer, szDevName As String
  729.     
  730.     PD.lStructSize = Len(PD)
  731.     PD.hWnd = hWnd
  732.     PD.hDevMode = 0
  733.     PD.hDevNames = 0
  734.     PD.hDC = 0
  735.     PD.Flags = Flags
  736.     PD.nFromPage = 0
  737.     PD.nToPage = 0
  738.     PD.nMinPage = 0
  739.     If bPages Then PD.nMaxPage = bPages - 1
  740.     PD.nCopies = 0
  741.     DialogPrint.Cancel = True
  742.     
  743.     If PrintDlg(PD) Then
  744.     
  745.         lpDM = GlobalLock(PD.hDevMode)
  746.         CopyMemory DM, ByVal lpDM, Len(DM)
  747.         lpDM = GlobalUnlock(PD.hDevMode)
  748.         
  749.         DialogPrint.Cancel = False
  750.         DialogPrint.Device = Left$(DM.dmDeviceName, InStr(DM.dmDeviceName, Chr(0)) - 1)
  751.         DialogPrint.FromPage = 0
  752.         DialogPrint.ToPage = 0
  753.         DialogPrint.All = True
  754.         If PD.Flags And PD_PRINTTOFILE Then DialogPrint.File = True Else DialogPrint.File = False
  755.         If PD.Flags And PD_COLLATE Then DialogPrint.Collate = True Else DialogPrint.Collate = False
  756.         If PD.Flags And PD_PAGENUMS Then
  757.             DialogPrint.Pages = True
  758.             DialogPrint.All = False
  759.             DialogPrint.FromPage = PD.nFromPage
  760.             DialogPrint.ToPage = PD.nToPage
  761.         Else
  762.             DialogPrint.Pages = False
  763.         End If
  764.         If PD.Flags And PD_SELECTION Then
  765.             DialogPrint.Selection = True
  766.             DialogPrint.All = False
  767.         Else
  768.             DialogPrint.Pages = False
  769.         End If
  770.         
  771.         If PD.nCopies = 1 Then
  772.             DialogPrint.Copies = DM.dmCopies
  773.         End If
  774.         
  775.         DialogPrint.DM = DM
  776.         
  777.     End If
  778.     
  779. End Function
  780. '//
  781. '// DialogPrintSetup Function
  782. '//
  783. '// Description:
  784. '// Displays the Print Setup common dialog box.
  785. '//
  786. '// Syntax:
  787. '// BOOL = DialogPrintSetup(hWnd)
  788. '//
  789. '// Example:
  790. '// If DialogPrintSetup(Me.hWnd) Then
  791. '// End If
  792. '//
  793. Public Function DialogPrintSetup(hWnd As Long) As Boolean
  794.     Dim X As Long, PD As PRINTDLGSTRUC
  795.     PD.lStructSize = Len(PD)
  796.     PD.hWnd = hWnd
  797.     PD.Flags = PD_PRINTSETUP
  798.     X = PrintDlg(PD)
  799.     
  800. End Function