You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
2.5 KiB
109 lines
2.5 KiB
5 years ago
|
//
|
||
|
// mxToolKit (c) 1999 by Mete Ciragan
|
||
|
//
|
||
|
// file: mxFileDialog.cpp
|
||
|
// implementation: Win32 API
|
||
|
// last modified: Mar 14 1999, Mete Ciragan
|
||
|
// copyright: The programs and associated files contained in this
|
||
|
// distribution were developed by Mete Ciragan. The programs
|
||
|
// are not in the public domain, but they are freely
|
||
|
// distributable without licensing fees. These programs are
|
||
|
// provided without guarantee or warrantee expressed or
|
||
|
// implied.
|
||
|
//
|
||
|
#include "mxtk/mxFileDialog.h"
|
||
|
#include "mxtk/mxWindow.h"
|
||
|
#include <windows.h>
|
||
|
#include <commdlg.h>
|
||
|
#include <string.h>
|
||
|
|
||
|
|
||
|
|
||
|
static char sd_path[_MAX_PATH] = "";
|
||
|
|
||
|
|
||
|
|
||
|
const char*
|
||
|
mxGetOpenFileName (mxWindow *parent, const char *path, const char *filter)
|
||
|
{
|
||
|
CHAR szPath[_MAX_PATH], szFilter[_MAX_PATH];
|
||
|
|
||
|
strcpy (sd_path, "");
|
||
|
|
||
|
if (path)
|
||
|
strcpy (szPath, path);
|
||
|
else
|
||
|
strcpy (szPath, "");
|
||
|
|
||
|
if (filter)
|
||
|
{
|
||
|
memset (szFilter, 0, _MAX_PATH);
|
||
|
strcpy (szFilter, filter);
|
||
|
strcpy (szFilter + strlen (szFilter) + 1, filter);
|
||
|
}
|
||
|
else
|
||
|
strcpy (szFilter, "");
|
||
|
|
||
|
|
||
|
OPENFILENAME ofn;
|
||
|
memset (&ofn, 0, sizeof (ofn));
|
||
|
ofn.lStructSize = sizeof (ofn);
|
||
|
if (parent)
|
||
|
ofn.hwndOwner = (HWND) parent->getHandle ();
|
||
|
ofn.hInstance = (HINSTANCE) GetModuleHandle (NULL);
|
||
|
ofn.lpstrFilter = szFilter;
|
||
|
ofn.nFilterIndex = 1;
|
||
|
ofn.lpstrFile = sd_path;
|
||
|
ofn.nMaxFile = _MAX_PATH;
|
||
|
if (path && strlen (path))
|
||
|
ofn.lpstrInitialDir = szPath;
|
||
|
ofn.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY;
|
||
|
|
||
|
if (GetOpenFileName (&ofn))
|
||
|
return sd_path;
|
||
|
else
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
const char*
|
||
|
mxGetSaveFileName (mxWindow *parent, const char *path, const char *filter)
|
||
|
{
|
||
|
CHAR szPath[_MAX_PATH], szFilter[_MAX_PATH];
|
||
|
|
||
|
strcpy (sd_path, "");
|
||
|
|
||
|
if (path)
|
||
|
strcpy (szPath, path);
|
||
|
else
|
||
|
strcpy (szPath, "");
|
||
|
|
||
|
if (filter)
|
||
|
{
|
||
|
memset (szFilter, 0, _MAX_PATH);
|
||
|
strcpy (szFilter, filter);
|
||
|
strcpy (szFilter + strlen (szFilter) + 1, filter);
|
||
|
}
|
||
|
else
|
||
|
strcpy (szFilter, "");
|
||
|
|
||
|
OPENFILENAME ofn;
|
||
|
memset (&ofn, 0, sizeof (ofn));
|
||
|
ofn.lStructSize = sizeof (ofn);
|
||
|
if (parent)
|
||
|
ofn.hwndOwner = (HWND) parent->getHandle ();
|
||
|
ofn.hInstance = (HINSTANCE) GetModuleHandle (NULL);
|
||
|
ofn.lpstrFilter = szFilter;
|
||
|
ofn.lpstrFile = sd_path;
|
||
|
ofn.nMaxFile = _MAX_PATH;
|
||
|
if (path && strlen (path))
|
||
|
ofn.lpstrInitialDir = szPath;
|
||
|
ofn.Flags = OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY;
|
||
|
|
||
|
if (GetSaveFileName (&ofn))
|
||
|
return sd_path;
|
||
|
else
|
||
|
return 0;
|
||
|
}
|