#define CLSID_FileOpenDialog "{DC1C5A9C-E88A-4dde- […]
#define CLSID_FileOpenDialog "{DC1C5A9C-E88A-4dde- […]
#define CLSID_FileOpenDialog "{DC1C5A9C-E88A-4dde-A5A1-60F82A20AEF7}"#define IID_IFileOpenDialog "{d57c7288-d4ad-4768-be02-9d969532d960}"#usecom IFileOpenDialog IID_IFileOpenDialog CLSID_FileOpenDialog#comfunc IFileOpenDialog_QueryInterface 0 int, int#comfunc IFileOpenDialog_Show 3 int#comfunc IFileOpenDialog_SetFileTypes 4 int, var#comfunc IFileOpenDialog_SetFileTypeIndex 5 int#comfunc IFileOpenDialog_GetFileTypeIndex 6 int#comfunc IFileOpenDialog_Advise 7 int, int#comfunc IFileOpenDialog_Unadvise 8 int, int#comfunc IFileOpenDialog_SetOptions 9 int#comfunc IFileOpenDialog_GetOptions 10 var#comfunc IFileOpenDialog_SetDefaultFolder 11 int#comfunc IFileOpenDialog_SetFolder 12 int#comfunc IFileOpenDialog_GetFolder 13 int#comfunc IFileOpenDialog_GetCurrentSelection 14 int#comfunc IFileOpenDialog_SetFileName 15 int#comfunc IFileOpenDialog_GetFileName 16 int#comfunc IFileOpenDialog_SetTitle 17 wstr#comfunc IFileOpenDialog_SetOkButtonLabel 18 wstr#comfunc IFileOpenDialog_SetFileNameLabel 19 wstr#comfunc IFileOpenDialog_GetResult 20 var#comfunc IFileOpenDialog_AddPlace 21 var, int#comfunc IFileOpenDialog_SetDefaultExtension 22 wstr#comfunc IFileOpenDialog_Close 23 var#comfunc IFileOpenDialog_ClearClientData 24#comfunc IFileOpenDialog_SetFilter 25 var#comfunc IFileOpenDialog_GetResults 26 var#comfunc IFileOpenDialog_GetSelectedItems 27 var#define IID_IUnknown "{00000000-0000-0000-C000-000000000046}"#define IID_IFileDialogCustomize "{e6fdd21a-163f-4975-9c8c-a69f1ba37034}"#usecom IFileDialogCustomize IID_IFileDialogCustomize CLSID_FileOpenDialog#comfunc IFileDialogCustomize_EnableOpenDropDown 3 int#comfunc IFileDialogCustomize_AddMenu 4 int, wstr#comfunc IFileDialogCustomize_AddPushButton 5 int, wstr#comfunc IFileDialogCustomize_AddComboBox 6 int#comfunc IFileDialogCustomize_AddRadioButtonList 7 int#comfunc IFileDialogCustomize_AddCheckButton 8 int, wstr, int#comfunc IFileDialogCustomize_AddEditBox 9 int, wstr#comfunc IFileDialogCustomize_AddSeparator 10 int#comfunc IFileDialogCustomize_AddText 11 int, wstr#comfunc IFileDialogCustomize_SetControlLabel 12 int, wstr#comfunc IFileDialogCustomize_GetControlState 13 int, var#comfunc IFileDialogCustomize_SetControlState 14 int, int#comfunc IFileDialogCustomize_GetEditBoxText 15 int, var#comfunc IFileDialogCustomize_SetEditBoxText 16 int, wstr#comfunc IFileDialogCustomize_GetCheckButtonState 17 int, var#comfunc IFileDialogCustomize_SetCheckButtonState 18 int, int#comfunc IFileDialogCustomize_AddControlItem 19 int, int, wstr#comfunc IFileDialogCustomize_RemoveControlItem 20 int, int#comfunc IFileDialogCustomize_RemoveAllControlItems 21 int#comfunc IFileDialogCustomize_GetControlItemState 22 int, int, var#comfunc IFileDialogCustomize_SetControlItemState 23 int, int, int#comfunc IFileDialogCustomize_GetSelectedControlItem 24 int, var#comfunc IFileDialogCustomize_SetSelectedControlItem 25 int, int#comfunc IFileDialogCustomize_StartVisualGroup 26 int, wstr#comfunc IFileDialogCustomize_EndVisualGroup 27#comfunc IFileDialogCustomize_MakeProminent 28 int#comfunc IFileDialogCustomize_SetControlItemText 29 int, int, wstr#uselib "rpcrt4"#func UuidFromStringA "UuidFromStringA" str, int//typedef enum CDCONTROLSTATE {#enum CDCS_INACTIVE = 0x00000000#enum CDCS_ENABLED = 0x00000001#enum CDCS_VISIBLE = 0x00000002#enum CDCS_ENABLEDVISIBLE = 0x00000003//} CDCONTROLSTATE;screen 0title "HSPでコモンダイアログをカスタマイズ"button gosub "表示", *ShowDialogstop*ShowDialognewcom pFod, IFileOpenDialog//IFileOpenDialog の IFileDialogCustomizeを使えるようにするstring=IID_IFileDialogCustomize: string=strmid(string, 1, strlen(IID_IFileDialogCustomize)-2)dim iid, 4: UuidFromStringA string, varptr(iid)IFileOpenDialog_QueryInterface pFod, varptr(iid), varptr(_pFdc)newcom pFdc, IFileDialogCustomize, -1, _pFdcIFileOpenDialog_SetTitle pFod, "HSPでコモンダイアログをカスタマイズ"IFileOpenDialog_SetOkButtonLabel pFod, "おーけー"IFileOpenDialog_SetFileNameLabel pFod, "あいうえお:"//コントロール追加#define IDC_LABEL1 1000#define IDC_LABEL2 1001#define IDC_BUTTON1 1100#define IDC_EDIT1 1200#define IDC_CHECK1 1300#define IDC_CHECK2 1301#define IDC_RADIO1 1400#define IDC_COMBO1 1500#define IDC_MENU1 1600#define IDC_SEP1 1700#define IDC_SEP2 1701#define IDC_GROUP1 1800#define IDC_GROUP2 1801#define IDM_ITEM1 2000#define IDM_ITEM2 2001#define IDM_ITEM3 2002#define IDM_ITEM4 2003#define IDM_ITEM5 2004#define IDM_ITEM6 2005IFileDialogCustomize_AddText pFdc, IDC_LABEL1, "ラベル。"IFileDialogCustomize_AddText pFdc, IDC_LABEL2, "(´・ω・`)"IFileDialogCustomize_AddPushButton pFdc, IDC_BUTTON1, "プッシュボタン"IFileDialogCustomize_StartVisualGroup pFdc, IDC_GROUP1, "グループ:"IFileDialogCustomize_AddPushButton pFdc, IDC_BUTTON2, "押せない"IFileDialogCustomize_SetControlState pFdc, IDC_BUTTON2, CDCS_VISIBLEIFileDialogCustomize_AddEditBox pFdc, IDC_EDIT1, "入力ボックス"IFileDialogCustomize_AddSeparator pFdc, IDC_SEP1IFileDialogCustomize_AddCheckButton pFdc, IDC_CHECK1, "チェック1", 0IFileDialogCustomize_AddCheckButton pFdc, IDC_CHECK2, "チェック2", 1IFileDialogCustomize_AddSeparator pFdc, IDC_SEP2IFileDialogCustomize_AddRadioButtonList pFdc, IDC_RADIO1IFileDialogCustomize_AddControlItem pFdc, IDC_RADIO1, IDM_ITEM1, "ラジオボタン項目1"IFileDialogCustomize_AddControlItem pFdc, IDC_RADIO1, IDM_ITEM2, "ラジオボタン項目2"IFileDialogCustomize_EndVisualGroup pFdcIFileDialogCustomize_StartVisualGroup pFdc, IDC_GROUP2, "グループ2:"IFileDialogCustomize_AddComboBox pFdc, IDC_COMBO1IFileDialogCustomize_AddControlItem pFdc, IDC_COMBO1, IDM_ITEM3, "項目1"IFileDialogCustomize_AddControlItem pFdc, IDC_COMBO1, IDM_ITEM4, "項目2"IFileDialogCustomize_AddMenu pFdc, IDC_MENU1, "メニュー"IFileDialogCustomize_AddControlItem pFdc, IDC_MENU1, IDM_ITEM5, "メニュー項目1"IFileDialogCustomize_AddControlItem pFdc, IDC_MENU1, IDM_ITEM6, "メニュー項目2"IFileDialogCustomize_EndVisualGroup pFdcIFileOpenDialog_Show pFod, hwnddelcom pFdcdelcom pFodreturn