Artifact 969f3a046d040fe8128b7f95f82537165d0ec8d0
- File
src/win32/commdlg.d
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
The problem was __gshared. Replacing it with TLS fixed the issue. Remaining problem is that "hack.d"'s CloseHandle hack is not working anymore.
(user: kinaba) [annotate]
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
/***********************************************************************\ * commdlg.d * * * * Windows API header module * * * * Translated from MinGW API for MS-Windows 3.12 * * * * Placed into public domain * \***********************************************************************/ module win32.commdlg; pragma(lib, "comdlg32"); private import win32.w32api; import win32.windef, win32.winuser; import win32.wingdi; // for LPLOGFONTA const TCHAR[] LBSELCHSTRING = "commdlg_LBSelChangedNotify", SHAREVISTRING = "commdlg_ShareViolation", FILEOKSTRING = "commdlg_FileNameOK", COLOROKSTRING = "commdlg_ColorOK", SETRGBSTRING = "commdlg_SetRGBColor", HELPMSGSTRING = "commdlg_help", FINDMSGSTRING = "commdlg_FindReplace"; enum : UINT { CDN_FIRST = -601, // also in commctrl.h CDN_LAST = -699, CDN_INITDONE = CDN_FIRST, CDN_SELCHANGE = CDN_FIRST - 1, CDN_FOLDERCHANGE = CDN_FIRST - 2, CDN_SHAREVIOLATION = CDN_FIRST - 3, CDN_HELP = CDN_FIRST - 4, CDN_FILEOK = CDN_FIRST - 5, CDN_TYPECHANGE = CDN_FIRST - 6, } static if(_WIN32_WINNT >= 0x500) { enum : UINT { CDN_INCLUDEITEM = CDN_FIRST - 7, } } enum : UINT { CDM_FIRST = WM_USER + 100, CDM_LAST = WM_USER + 200, CDM_GETSPEC = CDM_FIRST, CDM_GETFILEPATH, CDM_GETFOLDERPATH, CDM_GETFOLDERIDLIST, CDM_SETCONTROLTEXT, CDM_HIDECONTROL, CDM_SETDEFEXT // = CDM_FIRST + 6 } // flags for ChooseColor enum : DWORD { CC_RGBINIT = 0x0001, CC_FULLOPEN = 0x0002, CC_PREVENTFULLOPEN = 0x0004, CC_SHOWHELP = 0x0008, CC_ENABLEHOOK = 0x0010, CC_ENABLETEMPLATE = 0x0020, CC_ENABLETEMPLATEHANDLE = 0x0040, CC_SOLIDCOLOR = 0x0080, CC_ANYCOLOR = 0x0100 } // flags for ChooseFont enum : DWORD { CF_SCREENFONTS = 0x00000001, CF_PRINTERFONTS = 0x00000002, CF_BOTH = 0x00000003, CF_SHOWHELP = 0x00000004, CF_ENABLEHOOK = 0x00000008, CF_ENABLETEMPLATE = 0x00000010, CF_ENABLETEMPLATEHANDLE = 0x00000020, CF_INITTOLOGFONTSTRUCT = 0x00000040, CF_USESTYLE = 0x00000080, CF_EFFECTS = 0x00000100, CF_APPLY = 0x00000200, CF_ANSIONLY = 0x00000400, CF_SCRIPTSONLY = CF_ANSIONLY, CF_NOVECTORFONTS = 0x00000800, CF_NOOEMFONTS = 0x00000800, CF_NOSIMULATIONS = 0x00001000, CF_LIMITSIZE = 0x00002000, CF_FIXEDPITCHONLY = 0x00004000, CF_WYSIWYG = 0x00008000, CF_FORCEFONTEXIST = 0x00010000, CF_SCALABLEONLY = 0x00020000, CF_TTONLY = 0x00040000, CF_NOFACESEL = 0x00080000, CF_NOSTYLESEL = 0x00100000, CF_NOSIZESEL = 0x00200000, CF_SELECTSCRIPT = 0x00400000, CF_NOSCRIPTSEL = 0x00800000, CF_NOVERTFONTS = 0x01000000 } // Font type for ChooseFont enum : WORD { BOLD_FONTTYPE = 0x0100, ITALIC_FONTTYPE = 0x0200, REGULAR_FONTTYPE = 0x0400, SCREEN_FONTTYPE = 0x2000, PRINTER_FONTTYPE = 0x4000, SIMULATED_FONTTYPE = 0x8000 } enum : UINT { WM_CHOOSEFONT_GETLOGFONT = WM_USER + 1, WM_CHOOSEFONT_SETLOGFONT = WM_USER + 101, WM_CHOOSEFONT_SETFLAGS = WM_USER + 102 } // flags for OpenFileName enum : DWORD { OFN_SHAREWARN = 0, OFN_SHARENOWARN = 0x000001, OFN_READONLY = 0x000001, OFN_SHAREFALLTHROUGH = 0x000002, OFN_OVERWRITEPROMPT = 0x000002, OFN_HIDEREADONLY = 0x000004, OFN_NOCHANGEDIR = 0x000008, OFN_SHOWHELP = 0x000010, OFN_ENABLEHOOK = 0x000020, OFN_ENABLETEMPLATE = 0x000040, OFN_ENABLETEMPLATEHANDLE = 0x000080, OFN_NOVALIDATE = 0x000100, OFN_ALLOWMULTISELECT = 0x000200, OFN_EXTENSIONDIFFERENT = 0x000400, OFN_PATHMUSTEXIST = 0x000800, OFN_FILEMUSTEXIST = 0x001000, OFN_CREATEPROMPT = 0x002000, OFN_SHAREAWARE = 0x004000, OFN_NOREADONLYRETURN = 0x008000, OFN_NOTESTFILECREATE = 0x010000, OFN_NONETWORKBUTTON = 0x020000, OFN_NOLONGNAMES = 0x040000, OFN_EXPLORER = 0x080000, OFN_NODEREFERENCELINKS = 0x100000, OFN_LONGNAMES = 0x200000, OFN_ENABLESIZING = 0x800000 } enum : DWORD { FR_DOWN = 0x00000001, FR_WHOLEWORD = 0x00000002, FR_MATCHCASE = 0x00000004, FR_FINDNEXT = 0x00000008, FR_REPLACE = 0x00000010, FR_REPLACEALL = 0x00000020, FR_DIALOGTERM = 0x00000040, FR_SHOWHELP = 0x00000080, FR_ENABLEHOOK = 0x00000100, FR_ENABLETEMPLATE = 0x00000200, FR_NOUPDOWN = 0x00000400, FR_NOMATCHCASE = 0x00000800, FR_NOWHOLEWORD = 0x00001000, FR_ENABLETEMPLATEHANDLE = 0x00002000, FR_HIDEUPDOWN = 0x00004000, FR_HIDEMATCHCASE = 0x00008000, FR_HIDEWHOLEWORD = 0x00010000, FR_MATCHDIAC = 0x20000000, FR_MATCHKASHIDA = 0x40000000, FR_MATCHALEFHAMZA = 0x80000000 } enum : DWORD { PD_ALLPAGES = 0, PD_SELECTION = 0x000001, PD_PAGENUMS = 0x000002, PD_NOSELECTION = 0x000004, PD_NOPAGENUMS = 0x000008, PD_COLLATE = 0x000010, PD_PRINTTOFILE = 0x000020, PD_PRINTSETUP = 0x000040, PD_NOWARNING = 0x000080, PD_RETURNDC = 0x000100, PD_RETURNIC = 0x000200, PD_RETURNDEFAULT = 0x000400, PD_SHOWHELP = 0x000800, PD_ENABLEPRINTHOOK = 0x001000, PD_ENABLESETUPHOOK = 0x002000, PD_ENABLEPRINTTEMPLATE = 0x004000, PD_ENABLESETUPTEMPLATE = 0x008000, PD_ENABLEPRINTTEMPLATEHANDLE = 0x010000, PD_ENABLESETUPTEMPLATEHANDLE = 0x020000, PD_USEDEVMODECOPIES = 0x040000, PD_USEDEVMODECOPIESANDCOLLATE = 0x040000, PD_DISABLEPRINTTOFILE = 0x080000, PD_HIDEPRINTTOFILE = 0x100000, PD_NONETWORKBUTTON = 0x200000 } static if (_WIN32_WINNT >= 0x500) { enum : DWORD { PD_CURRENTPAGE = 0x00400000, PD_NOCURRENTPAGE = 0x00800000, PD_EXCLUSIONFLAGS = 0x01000000, PD_USELARGETEMPLATE = 0x10000000, } enum : HRESULT { PD_RESULT_CANCEL, PD_RESULT_PRINT, PD_RESULT_APPLY } const DWORD START_PAGE_GENERAL = 0xFFFFFFFF; } enum { PSD_DEFAULTMINMARGINS = 0, PSD_INWININIINTLMEASURE = 0, PSD_MINMARGINS = 0x000001, PSD_MARGINS = 0x000002, PSD_INTHOUSANDTHSOFINCHES = 0x000004, PSD_INHUNDREDTHSOFMILLIMETERS = 0x000008, PSD_DISABLEMARGINS = 0x000010, PSD_DISABLEPRINTER = 0x000020, PSD_NOWARNING = 0x000080, PSD_DISABLEORIENTATION = 0x000100, PSD_DISABLEPAPER = 0x000200, PSD_RETURNDEFAULT = 0x000400, PSD_SHOWHELP = 0x000800, PSD_ENABLEPAGESETUPHOOK = 0x002000, PSD_ENABLEPAGESETUPTEMPLATE = 0x008000, PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 0x020000, PSD_ENABLEPAGEPAINTHOOK = 0x040000, PSD_DISABLEPAGEPAINTING = 0x080000 } enum : UINT { WM_PSD_PAGESETUPDLG = WM_USER, WM_PSD_FULLPAGERECT, WM_PSD_MINMARGINRECT, WM_PSD_MARGINRECT, WM_PSD_GREEKTEXTRECT, WM_PSD_ENVSTAMPRECT, WM_PSD_YAFULLPAGERECT // = WM_USER + 6 } enum : int { CD_LBSELNOITEMS = -1, CD_LBSELCHANGE, CD_LBSELSUB, CD_LBSELADD } const WORD DN_DEFAULTPRN = 1; /+ // Both MinGW and the windows docs indicate that there are macros for the send messages // the controls. These seem to be totally unnecessary -- and at least one of MinGW or // Windows Docs is buggy! int CommDlg_OpenSave_GetSpec(HWND hWndControl, LPARAM lparam, WPARAM wParam) { return SendMessage(hWndControl, CDM_GETSPEC, wParam, lParam); } int CommDlg_OpenSave_GetFilePath(HWND hWndControl, LPARAM lparam, WPARAM wParam) { return SendMessage(hWndControl, CDM_GETFILEPATH, wParam, lParam); } int CommDlg_OpenSave_GetFolderPath(HWND hWndControl, LPARAM lparam, WPARAM wParam) { return SendMessage(hWndControl, CDM_GETFOLDERPATH, wParam, lParam); } int CommDlg_OpenSave_GetFolderIDList(HWND hWndControl, LPARAM lparam, WPARAM wParam) { return SendMessage(hWndControl, CDM_GETFOLDERIDLIST, wParam, lParam); } void CommDlg_OpenSave_SetControlText(HWND hWndControl, LPARAM lparam, WPARAM wParam) { return SendMessage(hWndControl, CDM_SETCONTROLTEXT, wParam, lParam); } void CommDlg_OpenSave_HideControl(HWND hWndControl, WPARAM wParam) { return SendMessage(hWndControl, CDM_HIDECONTROL, wParam, 0); } void CommDlg_OpenSave_SetDefExt(HWND hWndControl, TCHAR* lparam) { return SendMessage(hWndControl, CDM_SETCONTROLTEXT, 0, cast(LPARAM)lParam); } // These aliases seem even more unnecessary alias CommDlg_OpenSave_GetSpec CommDlg_OpenSave_GetSpecA, CommDlg_OpenSave_GetSpecW; alias CommDlg_OpenSave_GetFilePath CommDlg_OpenSave_GetFilePathA, CommDlg_OpenSave_GetFilePathW; alias CommDlg_OpenSave_GetFolderPath CommDlg_OpenSave_GetFolderPathA, CommDlg_OpenSave_GetFolderPathW; +/ // Callbacks. extern(Windows) { alias UINT_PTR function (HWND, UINT, WPARAM, LPARAM) LPCCHOOKPROC, LPCFHOOKPROC, LPFRHOOKPROC, LPOFNHOOKPROC, LPPAGEPAINTHOOK, LPPAGESETUPHOOK, LPSETUPHOOKPROC, LPPRINTHOOKPROC; } align (1): struct CHOOSECOLORA { DWORD lStructSize = CHOOSECOLORA.sizeof; HWND hwndOwner; HWND hInstance; COLORREF rgbResult; COLORREF* lpCustColors; DWORD Flags; LPARAM lCustData; LPCCHOOKPROC lpfnHook; LPCSTR lpTemplateName; } alias CHOOSECOLORA* LPCHOOSECOLORA; struct CHOOSECOLORW { DWORD lStructSize = CHOOSECOLORW.sizeof; HWND hwndOwner; HWND hInstance; COLORREF rgbResult; COLORREF* lpCustColors; DWORD Flags; LPARAM lCustData; LPCCHOOKPROC lpfnHook; LPCWSTR lpTemplateName; } alias CHOOSECOLORW* LPCHOOSECOLORW; align (4) struct CHOOSEFONTA { DWORD lStructSize = CHOOSEFONTA.sizeof; HWND hwndOwner; HDC hDC; LPLOGFONTA lpLogFont; INT iPointSize; DWORD Flags; DWORD rgbColors; LPARAM lCustData; LPCFHOOKPROC lpfnHook; LPCSTR lpTemplateName; HINSTANCE hInstance; LPSTR lpszStyle; WORD nFontType; //WORD ___MISSING_ALIGNMENT__; INT nSizeMin; INT nSizeMax; } alias CHOOSEFONTA* LPCHOOSEFONTA; align (4) struct CHOOSEFONTW { DWORD lStructSize = CHOOSEFONTW.sizeof; HWND hwndOwner; HDC hDC; LPLOGFONTW lpLogFont; INT iPointSize; DWORD Flags; DWORD rgbColors; LPARAM lCustData; LPCFHOOKPROC lpfnHook; LPCWSTR lpTemplateName; HINSTANCE hInstance; LPWSTR lpszStyle; WORD nFontType; //WORD ___MISSING_ALIGNMENT__; INT nSizeMin; INT nSizeMax; } alias CHOOSEFONTW* LPCHOOSEFONTW; struct DEVNAMES { WORD wDriverOffset; WORD wDeviceOffset; WORD wOutputOffset; WORD wDefault; } alias DEVNAMES* LPDEVNAMES; struct FINDREPLACEA { DWORD lStructSize = FINDREPLACEA.sizeof; HWND hwndOwner; HINSTANCE hInstance; DWORD Flags; LPSTR lpstrFindWhat; LPSTR lpstrReplaceWith; WORD wFindWhatLen; WORD wReplaceWithLen; LPARAM lCustData; LPFRHOOKPROC lpfnHook; LPCSTR lpTemplateName; } alias FINDREPLACEA* LPFINDREPLACEA; struct FINDREPLACEW { DWORD lStructSize = FINDREPLACEW.sizeof; HWND hwndOwner; HINSTANCE hInstance; DWORD Flags; LPWSTR lpstrFindWhat; LPWSTR lpstrReplaceWith; WORD wFindWhatLen; WORD wReplaceWithLen; LPARAM lCustData; LPFRHOOKPROC lpfnHook; LPCWSTR lpTemplateName; } alias FINDREPLACEW* LPFINDREPLACEW; struct OPENFILENAMEA { DWORD lStructSize = OPENFILENAMEA.sizeof; HWND hwndOwner; HINSTANCE hInstance; LPCSTR lpstrFilter; LPSTR lpstrCustomFilter; DWORD nMaxCustFilter; DWORD nFilterIndex; LPSTR lpstrFile; DWORD nMaxFile; LPSTR lpstrFileTitle; DWORD nMaxFileTitle; LPCSTR lpstrInitialDir; LPCSTR lpstrTitle; DWORD Flags; WORD nFileOffset; WORD nFileExtension; LPCSTR lpstrDefExt; DWORD lCustData; LPOFNHOOKPROC lpfnHook; LPCSTR lpTemplateName; static if (_WIN32_WINNT >= 0x500) { void *pvReserved; DWORD dwReserved; DWORD FlagsEx; } } alias OPENFILENAMEA* LPOPENFILENAMEA; struct OPENFILENAMEW { DWORD lStructSize = OPENFILENAMEW.sizeof; HWND hwndOwner; HINSTANCE hInstance; LPCWSTR lpstrFilter; LPWSTR lpstrCustomFilter; DWORD nMaxCustFilter; DWORD nFilterIndex; LPWSTR lpstrFile; DWORD nMaxFile; LPWSTR lpstrFileTitle; DWORD nMaxFileTitle; LPCWSTR lpstrInitialDir; LPCWSTR lpstrTitle; DWORD Flags; WORD nFileOffset; WORD nFileExtension; LPCWSTR lpstrDefExt; DWORD lCustData; LPOFNHOOKPROC lpfnHook; LPCWSTR lpTemplateName; static if (_WIN32_WINNT >= 0x500) { void *pvReserved; DWORD dwReserved; DWORD FlagsEx; } } alias OPENFILENAMEW* LPOPENFILENAMEW; const size_t OPENFILENAME_SIZE_VERSION_400 = 76; struct OFNOTIFYA { NMHDR hdr; LPOPENFILENAMEA lpOFN; LPSTR pszFile; } alias OFNOTIFYA* LPOFNOTIFYA; struct OFNOTIFYW { NMHDR hdr; LPOPENFILENAMEW lpOFN; LPWSTR pszFile; } alias OFNOTIFYW* LPOFNOTIFYW; struct PAGESETUPDLGA { DWORD lStructSize = PAGESETUPDLGA.sizeof; HWND hwndOwner; HGLOBAL hDevMode; HGLOBAL hDevNames; DWORD Flags; POINT ptPaperSize; RECT rtMinMargin; RECT rtMargin; HINSTANCE hInstance; LPARAM lCustData; LPPAGESETUPHOOK lpfnPageSetupHook; LPPAGEPAINTHOOK lpfnPagePaintHook; LPCSTR lpPageSetupTemplateName; HGLOBAL hPageSetupTemplate; } alias PAGESETUPDLGA* LPPAGESETUPDLGA; struct PAGESETUPDLGW { DWORD lStructSize = PAGESETUPDLGW.sizeof; HWND hwndOwner; HGLOBAL hDevMode; HGLOBAL hDevNames; DWORD Flags; POINT ptPaperSize; RECT rtMinMargin; RECT rtMargin; HINSTANCE hInstance; LPARAM lCustData; LPPAGESETUPHOOK lpfnPageSetupHook; LPPAGEPAINTHOOK lpfnPagePaintHook; LPCWSTR lpPageSetupTemplateName; HGLOBAL hPageSetupTemplate; } alias PAGESETUPDLGW* LPPAGESETUPDLGW; struct PRINTDLGA { DWORD lStructSize = PRINTDLGA.sizeof; HWND hwndOwner; HANDLE hDevMode; HANDLE hDevNames; HDC hDC; DWORD Flags; WORD nFromPage; WORD nToPage; WORD nMinPage; WORD nMaxPage; WORD nCopies; HINSTANCE hInstance; DWORD lCustData; LPPRINTHOOKPROC lpfnPrintHook; LPSETUPHOOKPROC lpfnSetupHook; LPCSTR lpPrintTemplateName; LPCSTR lpSetupTemplateName; HANDLE hPrintTemplate; HANDLE hSetupTemplate; } alias PRINTDLGA* LPPRINTDLGA; struct PRINTDLGW { DWORD lStructSize = PRINTDLGW.sizeof; HWND hwndOwner; HANDLE hDevMode; HANDLE hDevNames; HDC hDC; DWORD Flags; WORD nFromPage; WORD nToPage; WORD nMinPage; WORD nMaxPage; WORD nCopies; HINSTANCE hInstance; DWORD lCustData; LPPRINTHOOKPROC lpfnPrintHook; LPSETUPHOOKPROC lpfnSetupHook; LPCWSTR lpPrintTemplateName; LPCWSTR lpSetupTemplateName; HANDLE hPrintTemplate; HANDLE hSetupTemplate; } alias PRINTDLGW* LPPRINTDLGW; static if (_WIN32_WINNT >= 0x500) { import win32.unknwn; // for LPUNKNOWN import win32.prsht; // for HPROPSHEETPAGE struct PRINTPAGERANGE { DWORD nFromPage; DWORD nToPage; } alias PRINTPAGERANGE* LPPRINTPAGERANGE; struct PRINTDLGEXA { DWORD lStructSize = PRINTDLGEXA.sizeof; HWND hwndOwner; HGLOBAL hDevMode; HGLOBAL hDevNames; HDC hDC; DWORD Flags; DWORD Flags2; DWORD ExclusionFlags; DWORD nPageRanges; DWORD nMaxPageRanges; LPPRINTPAGERANGE lpPageRanges; DWORD nMinPage; DWORD nMaxPage; DWORD nCopies; HINSTANCE hInstance; LPCSTR lpPrintTemplateName; LPUNKNOWN lpCallback; DWORD nPropertyPages; HPROPSHEETPAGE* lphPropertyPages; DWORD nStartPage; DWORD dwResultAction; } alias PRINTDLGEXA* LPPRINTDLGEXA; struct PRINTDLGEXW { DWORD lStructSize = PRINTDLGEXW.sizeof; HWND hwndOwner; HGLOBAL hDevMode; HGLOBAL hDevNames; HDC hDC; DWORD Flags; DWORD Flags2; DWORD ExclusionFlags; DWORD nPageRanges; DWORD nMaxPageRanges; LPPRINTPAGERANGE lpPageRanges; DWORD nMinPage; DWORD nMaxPage; DWORD nCopies; HINSTANCE hInstance; LPCWSTR lpPrintTemplateName; LPUNKNOWN lpCallback; DWORD nPropertyPages; HPROPSHEETPAGE* lphPropertyPages; DWORD nStartPage; DWORD dwResultAction; } alias PRINTDLGEXW* LPPRINTDLGEXW; } // _WIN32_WINNT >= 0x500 extern (Windows) { BOOL ChooseColorA(LPCHOOSECOLORA); BOOL ChooseColorW(LPCHOOSECOLORW); BOOL ChooseFontA(LPCHOOSEFONTA); BOOL ChooseFontW(LPCHOOSEFONTW); DWORD CommDlgExtendedError(); HWND FindTextA(LPFINDREPLACEA); HWND FindTextW(LPFINDREPLACEW); short GetFileTitleA(LPCSTR, LPSTR, WORD); short GetFileTitleW(LPCWSTR, LPWSTR, WORD); BOOL GetOpenFileNameA(LPOPENFILENAMEA); BOOL GetOpenFileNameW(LPOPENFILENAMEW); BOOL GetSaveFileNameA(LPOPENFILENAMEA); BOOL GetSaveFileNameW(LPOPENFILENAMEW); BOOL PageSetupDlgA(LPPAGESETUPDLGA); BOOL PageSetupDlgW(LPPAGESETUPDLGW); BOOL PrintDlgA(LPPRINTDLGA); BOOL PrintDlgW(LPPRINTDLGW); HWND ReplaceTextA(LPFINDREPLACEA); HWND ReplaceTextW(LPFINDREPLACEW); static if (_WIN32_WINNT >= 0x500) { HRESULT PrintDlgExA(LPPRINTDLGEXA); HRESULT PrintDlgExW(LPPRINTDLGEXW); } } version (Unicode) { alias CHOOSECOLORW CHOOSECOLOR; alias CHOOSEFONTW CHOOSEFONT; alias FINDREPLACEW FINDREPLACE; alias OPENFILENAMEW OPENFILENAME; alias OFNOTIFYW OFNOTIFY; alias PAGESETUPDLGW PAGESETUPDLG; alias PRINTDLGW PRINTDLG; alias ChooseColorW ChooseColor; alias ChooseFontW ChooseFont; alias FindTextW FindText; alias GetFileTitleW GetFileTitle; alias GetOpenFileNameW GetOpenFileName; alias GetSaveFileNameW GetSaveFileName; alias PageSetupDlgW PageSetupDlg; alias PrintDlgW PrintDlg; alias ReplaceTextW ReplaceText; static if (_WIN32_WINNT >= 0x500) { alias PRINTDLGEXW PRINTDLGEX; alias PrintDlgExW PrintDlgEx; } } else { // UNICODE alias CHOOSECOLORA CHOOSECOLOR; alias CHOOSEFONTA CHOOSEFONT; alias FINDREPLACEA FINDREPLACE; alias OPENFILENAMEA OPENFILENAME; alias OFNOTIFYA OFNOTIFY; alias PAGESETUPDLGA PAGESETUPDLG; alias PRINTDLGA PRINTDLG; alias ChooseColorA ChooseColor; alias ChooseFontA ChooseFont; alias FindTextA FindText; alias GetFileTitleA GetFileTitle; alias GetOpenFileNameA GetOpenFileName; alias GetSaveFileNameA GetSaveFileName; alias PageSetupDlgA PageSetupDlg; alias PrintDlgA PrintDlg; alias ReplaceTextA ReplaceText; static if (_WIN32_WINNT >= 0x500) { alias PRINTDLGEXA PRINTDLGEX; alias PrintDlgExA PrintDlgEx; } } // UNICODE alias CHOOSECOLOR* LPCHOOSECOLOR; alias CHOOSEFONT* LPCHOOSEFONT; alias FINDREPLACE* LPFINDREPLACE; alias OPENFILENAME* LPOPENFILENAME; alias OFNOTIFY* LPOFNOTIFY; alias PAGESETUPDLG* LPPAGESETUPDLG; alias PRINTDLG* LPPRINTDLG; static if (_WIN32_WINNT >= 0x500) { alias PRINTDLGEX* LPPRINTDLGEX; }