add filename to windows#uiSaveFile
This commit is contained in:
parent
5917412892
commit
94bd5da38b
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
#define windowHWND(w) ((HWND) uiControlHandle(uiControl(w)))
|
#define windowHWND(w) ((HWND) uiControlHandle(uiControl(w)))
|
||||||
|
|
||||||
char *commonItemDialog(HWND parent, REFCLSID clsid, REFIID iid, FILEOPENDIALOGOPTIONS optsadd)
|
char *commonItemDialog(HWND parent, REFCLSID clsid, REFIID iid, FILEOPENDIALOGOPTIONS optsadd, const char *filename)
|
||||||
{
|
{
|
||||||
IFileDialog *d = NULL;
|
IFileDialog *d = NULL;
|
||||||
FILEOPENDIALOGOPTIONS opts;
|
FILEOPENDIALOGOPTIONS opts;
|
||||||
|
@ -33,6 +33,19 @@ char *commonItemDialog(HWND parent, REFCLSID clsid, REFIID iid, FILEOPENDIALOGOP
|
||||||
// always return NULL on error
|
// always return NULL on error
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// file name
|
||||||
|
if (filename != NULL) {
|
||||||
|
size_t size = strlen(filename) + 1;
|
||||||
|
wchar_t* filenameWchar = new wchar_t[size];
|
||||||
|
|
||||||
|
size_t outSize;
|
||||||
|
mbstowcs_s(&outSize, filenameWchar, size, filename, size - 1);
|
||||||
|
|
||||||
|
LPCWSTR filenameLPCWSTR = filenameWchar;
|
||||||
|
d->SetFileName(filenameLPCWSTR);
|
||||||
|
}
|
||||||
|
|
||||||
hr = d->GetOptions(&opts);
|
hr = d->GetOptions(&opts);
|
||||||
if (hr != S_OK) {
|
if (hr != S_OK) {
|
||||||
logHRESULT(L"error getting current options", hr);
|
logHRESULT(L"error getting current options", hr);
|
||||||
|
@ -83,7 +96,7 @@ char *uiOpenFile(uiWindow *parent)
|
||||||
disableAllWindowsExcept(parent);
|
disableAllWindowsExcept(parent);
|
||||||
res = commonItemDialog(windowHWND(parent),
|
res = commonItemDialog(windowHWND(parent),
|
||||||
CLSID_FileOpenDialog, IID_IFileOpenDialog,
|
CLSID_FileOpenDialog, IID_IFileOpenDialog,
|
||||||
FOS_NOCHANGEDIR | FOS_ALLNONSTORAGEITEMS | FOS_NOVALIDATE | FOS_PATHMUSTEXIST | FOS_FILEMUSTEXIST | FOS_SHAREAWARE | FOS_NOTESTFILECREATE | FOS_NODEREFERENCELINKS | FOS_FORCESHOWHIDDEN | FOS_DEFAULTNOMINIMODE);
|
FOS_NOCHANGEDIR | FOS_ALLNONSTORAGEITEMS | FOS_NOVALIDATE | FOS_PATHMUSTEXIST | FOS_FILEMUSTEXIST | FOS_SHAREAWARE | FOS_NOTESTFILECREATE | FOS_NODEREFERENCELINKS | FOS_FORCESHOWHIDDEN | FOS_DEFAULTNOMINIMODE, NULL);
|
||||||
enableAllWindowsExcept(parent);
|
enableAllWindowsExcept(parent);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
@ -95,19 +108,19 @@ char *uiOpenFolder(uiWindow *parent)
|
||||||
disableAllWindowsExcept(parent);
|
disableAllWindowsExcept(parent);
|
||||||
res = commonItemDialog(windowHWND(parent),
|
res = commonItemDialog(windowHWND(parent),
|
||||||
CLSID_FileOpenDialog, IID_IFileOpenDialog,
|
CLSID_FileOpenDialog, IID_IFileOpenDialog,
|
||||||
FOS_NOCHANGEDIR | FOS_ALLNONSTORAGEITEMS | FOS_NOVALIDATE | FOS_PATHMUSTEXIST | FOS_PICKFOLDERS | FOS_SHAREAWARE | FOS_NOTESTFILECREATE | FOS_NODEREFERENCELINKS | FOS_FORCESHOWHIDDEN | FOS_DEFAULTNOMINIMODE);
|
FOS_NOCHANGEDIR | FOS_ALLNONSTORAGEITEMS | FOS_NOVALIDATE | FOS_PATHMUSTEXIST | FOS_PICKFOLDERS | FOS_SHAREAWARE | FOS_NOTESTFILECREATE | FOS_NODEREFERENCELINKS | FOS_FORCESHOWHIDDEN | FOS_DEFAULTNOMINIMODE, NULL);
|
||||||
enableAllWindowsExcept(parent);
|
enableAllWindowsExcept(parent);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *uiSaveFile(uiWindow *parent)
|
char *uiSaveFile(uiWindow *parent, const char *filename)
|
||||||
{
|
{
|
||||||
char *res;
|
char *res;
|
||||||
|
|
||||||
disableAllWindowsExcept(parent);
|
disableAllWindowsExcept(parent);
|
||||||
res = commonItemDialog(windowHWND(parent),
|
res = commonItemDialog(windowHWND(parent),
|
||||||
CLSID_FileSaveDialog, IID_IFileSaveDialog,
|
CLSID_FileSaveDialog, IID_IFileSaveDialog,
|
||||||
FOS_OVERWRITEPROMPT | FOS_NOCHANGEDIR | FOS_ALLNONSTORAGEITEMS | FOS_NOVALIDATE | FOS_SHAREAWARE | FOS_NOTESTFILECREATE | FOS_NODEREFERENCELINKS | FOS_FORCESHOWHIDDEN | FOS_DEFAULTNOMINIMODE);
|
FOS_OVERWRITEPROMPT | FOS_NOCHANGEDIR | FOS_ALLNONSTORAGEITEMS | FOS_NOVALIDATE | FOS_SHAREAWARE | FOS_NOTESTFILECREATE | FOS_NODEREFERENCELINKS | FOS_FORCESHOWHIDDEN | FOS_DEFAULTNOMINIMODE, filename);
|
||||||
enableAllWindowsExcept(parent);
|
enableAllWindowsExcept(parent);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue