[Project64] Preserve current dir when calling GetOpenFileName

This commit is contained in:
zilmar 2017-01-21 10:31:09 +11:00
parent 1d7bdd2c27
commit 52ab4949b4
9 changed files with 99 additions and 181 deletions

View File

@ -5,6 +5,10 @@
#ifdef _WIN32 #ifdef _WIN32
#include <Shlobj.h> #include <Shlobj.h>
#include <dos.h> #include <dos.h>
#pragma warning(push)
#pragma warning(disable : 4996) // warning C4091: 'typedef ': ignored on left of 'tagGPFIDL_FLAGS' when no variable is declared
#include <CommDlg.h>
#pragma warning(pop)
#else #else
#include <sys/stat.h> #include <sys/stat.h>
#include <dirent.h> #include <dirent.h>
@ -999,6 +1003,39 @@ bool CPath::Exists() const
#endif #endif
} }
#ifdef _WIN32
bool CPath::SelectFile(void * hwndOwner, const char * InitialDir, const char * FileFilter, bool FileMustExist)
{
CPath CurrentDir(CURRENT_DIRECTORY);
OPENFILENAME openfilename;
char FileName[MAX_PATH];
memset(&FileName, 0, sizeof(FileName));
memset(&openfilename, 0, sizeof(openfilename));
openfilename.lStructSize = sizeof(openfilename);
openfilename.hwndOwner = (HWND)hwndOwner;
openfilename.lpstrFilter = FileFilter;
openfilename.lpstrFile = FileName;
openfilename.lpstrInitialDir = InitialDir;
openfilename.nMaxFile = MAX_PATH;
openfilename.Flags = OFN_HIDEREADONLY | (FileMustExist ? OFN_FILEMUSTEXIST : 0);
bool res = GetOpenFileName(&openfilename);
if (CPath(CURRENT_DIRECTORY) != CurrentDir)
{
CurrentDir.ChangeDirectory();
}
if (!res)
{
return false;
}
m_strPath = FileName;
cleanPathString(m_strPath);
return true;
}
#endif
//------------------------------------------------------------- //-------------------------------------------------------------
// Post : Return TRUE on success // Post : Return TRUE on success
// Task : Delete file // Task : Delete file

View File

@ -135,6 +135,9 @@ public:
//File Information //File Information
bool IsFile() const { return !IsDirectory(); } bool IsFile() const { return !IsDirectory(); }
bool Exists() const; bool Exists() const;
#ifdef _WIN32
bool SelectFile(void * hwndOwner, const char * InitialDir, const char * FileFilter, bool FileMustExist);
#endif
//Directory operations //Directory operations
bool DirectoryCreate(bool bCreateIntermediates = true); bool DirectoryCreate(bool bCreateIntermediates = true);

View File

@ -52,29 +52,16 @@ LRESULT CDumpMemory::OnClicked(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/,
break; break;
case IDC_BTN_CHOOSE_FILE: case IDC_BTN_CHOOSE_FILE:
{ {
char FileName[_MAX_PATH], Directory[_MAX_PATH];
OPENFILENAME openfilename;
memset(&FileName, 0, sizeof(FileName));
memset(&openfilename, 0, sizeof(openfilename));
strcpy(Directory, CPath(CPath::MODULE_DIRECTORY));
openfilename.lStructSize = sizeof(openfilename);
openfilename.hwndOwner = m_hWnd;
openfilename.lpstrFilter = "Text file (*.txt)\0*.txt;\0All files (*.*)\0*.*\0";
openfilename.lpstrFile = FileName;
openfilename.lpstrInitialDir = Directory;
openfilename.nMaxFile = MAX_PATH;
openfilename.Flags = OFN_HIDEREADONLY;
g_BaseSystem->ExternalEvent(SysEvent_PauseCPU_DumpMemory); g_BaseSystem->ExternalEvent(SysEvent_PauseCPU_DumpMemory);
if (GetOpenFileName(&openfilename))
CPath FileName;
if (FileName.SelectFile(m_hWnd, CPath(CPath::MODULE_DIRECTORY), "Text file (*.txt)\0*.txt;\0All files (*.*)\0*.*\0", false))
{ {
char drive[_MAX_DRIVE], dir[_MAX_DIR], fname[_MAX_FNAME], ext[_MAX_EXT]; if (FileName.GetExtension().length() == 0)
_splitpath(FileName, drive, dir, fname, ext);
if (strlen(ext) == 0)
{ {
strcat(FileName, ".txt"); FileName.SetExtension("txt");
SetDlgItemText(IDC_FILENAME, FileName);
} }
SetDlgItemText(IDC_FILENAME, FileName);
} }
g_BaseSystem->ExternalEvent(SysEvent_ResumeCPU_DumpMemory); g_BaseSystem->ExternalEvent(SysEvent_ResumeCPU_DumpMemory);
} }

View File

@ -984,58 +984,33 @@ LRESULT CALLBACK CMainGui::MainGui_Proc(HWND hWnd, DWORD uMsg, DWORD wParam, DWO
stdstr IPLROM = g_Settings->LoadStringVal(File_DiskIPLPath); stdstr IPLROM = g_Settings->LoadStringVal(File_DiskIPLPath);
if ((IPLROM.length() <= 0) || (!g_BaseSystem->RunFileImageIPL(IPLROM.c_str()))) if ((IPLROM.length() <= 0) || (!g_BaseSystem->RunFileImageIPL(IPLROM.c_str())))
{ {
// Open DDROM const char * Filter = "64DD IPL ROM Image (*.zip, *.7z, *.?64, *.rom, *.usa, *.jap, *.pal, *.bin)\0*.?64;*.zip;*.7z;*.bin;*.rom;*.usa;*.jap;*.pal\0All files (*.*)\0*.*\0";
OPENFILENAME openfilename; CPath FileName;
char FileName[_MAX_PATH], Directory[_MAX_PATH]; if (FileName.SelectFile(hWnd, g_Settings->LoadStringVal(RomList_GameDir).c_str(), Filter, true))
memset(&FileName, 0, sizeof(FileName));
memset(&openfilename, 0, sizeof(openfilename));
strcpy(Directory, g_Settings->LoadStringVal(RomList_GameDir).c_str());
openfilename.lStructSize = sizeof(openfilename);
openfilename.hwndOwner = (HWND)hWnd;
openfilename.lpstrFilter = "64DD IPL ROM Image (*.zip, *.7z, *.?64, *.rom, *.usa, *.jap, *.pal, *.bin)\0*.?64;*.zip;*.7z;*.bin;*.rom;*.usa;*.jap;*.pal\0All files (*.*)\0*.*\0";
openfilename.lpstrFile = FileName;
openfilename.lpstrInitialDir = Directory;
openfilename.nMaxFile = MAX_PATH;
openfilename.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
if (GetOpenFileName(&openfilename))
{ {
g_BaseSystem->RunFileImageIPL(FileName); g_BaseSystem->RunFileImageIPL(FileName);
// Open Disk // Open Disk
openfilename.lpstrFilter = "N64DD Disk Image (*.ndd)\0*.ndd\0All files (*.*)\0*.*\0"; const char * N64DDFilter = "N64DD Disk Image (*.ndd)\0*.ndd\0All files (*.*)\0*.*\0";
if (GetOpenFileName(&openfilename)) if (FileName.SelectFile(hWnd, g_Settings->LoadStringVal(RomList_GameDir).c_str(), N64DDFilter, true))
{ {
if (g_BaseSystem->RunDiskImage(FileName)) if (g_BaseSystem->RunDiskImage(FileName))
{
g_BaseSystem->RunFileImage(_this->CurrentedSelectedRom()); g_BaseSystem->RunFileImage(_this->CurrentedSelectedRom());
}
} }
} }
} }
else else
{ {
// Open Disk // Open Disk
OPENFILENAME openfilename; CPath FileName;
char FileName[_MAX_PATH], Directory[_MAX_PATH]; const char * Filter = "N64DD Disk Image (*.ndd)\0*.ndd\0All files (*.*)\0*.*\0";
if (FileName.SelectFile(hWnd, g_Settings->LoadStringVal(RomList_GameDir).c_str(), Filter, true))
memset(&FileName, 0, sizeof(FileName));
memset(&openfilename, 0, sizeof(openfilename));
strcpy(Directory, g_Settings->LoadStringVal(RomList_GameDir).c_str());
openfilename.lStructSize = sizeof(openfilename);
openfilename.hwndOwner = (HWND)hWnd;
openfilename.lpstrFilter = "N64DD Disk Image (*.ndd)\0*.ndd\0All files (*.*)\0*.*\0";
openfilename.lpstrFile = FileName;
openfilename.lpstrInitialDir = Directory;
openfilename.nMaxFile = MAX_PATH;
openfilename.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
if (GetOpenFileName(&openfilename))
{ {
if (g_BaseSystem->RunDiskImage(FileName)) if (g_BaseSystem->RunDiskImage(FileName))
{
g_BaseSystem->RunFileImage(_this->CurrentedSelectedRom()); g_BaseSystem->RunFileImage(_this->CurrentedSelectedRom());
}
} }
} }
} }
@ -1157,23 +1132,10 @@ LRESULT CALLBACK CMainGui::MainGui_Proc(HWND hWnd, DWORD uMsg, DWORD wParam, DWO
stdstr IPLROM = g_Settings->LoadStringVal(File_DiskIPLPath); stdstr IPLROM = g_Settings->LoadStringVal(File_DiskIPLPath);
if ((IPLROM.length() <= 0) || (!CN64System::RunFileImage(IPLROM.c_str()))) if ((IPLROM.length() <= 0) || (!CN64System::RunFileImage(IPLROM.c_str())))
{ {
// Open DDROM CPath FileName;
OPENFILENAME openfilename; const char * Filter = "64DD IPL ROM Image (*.zip, *.7z, *.?64, *.rom, *.usa, *.jap, *.pal, *.bin)\0*.?64;*.zip;*.7z;*.bin;*.rom;*.usa;*.jap;*.pal\0All files (*.*)\0*.*\0";
char FileName[_MAX_PATH], Directory[_MAX_PATH]; if (FileName.SelectFile(hWnd, g_Settings->LoadStringVal(RomList_GameDir).c_str(), Filter, true))
memset(&FileName, 0, sizeof(FileName)); {
memset(&openfilename, 0, sizeof(openfilename));
strcpy(Directory, g_Settings->LoadStringVal(RomList_GameDir).c_str());
openfilename.lStructSize = sizeof(openfilename);
openfilename.hwndOwner = (HWND)hWnd;
openfilename.lpstrFilter = "64DD IPL ROM Image (*.zip, *.7z, *.?64, *.rom, *.usa, *.jap, *.pal, *.bin)\0*.?64;*.zip;*.7z;*.bin;*.rom;*.usa;*.jap;*.pal\0All files (*.*)\0*.*\0";
openfilename.lpstrFile = FileName;
openfilename.lpstrInitialDir = Directory;
openfilename.nMaxFile = MAX_PATH;
openfilename.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
if (GetOpenFileName(&openfilename))
{
CN64System::RunFileImage(FileName); CN64System::RunFileImage(FileName);
} }
} }

View File

@ -90,29 +90,15 @@ int CMainMenu::ProcessAccelerator(HWND hWnd, void * lpMsg)
return TranslateAccelerator((HWND)hWnd, (HACCEL)m_AccelTable, (LPMSG)lpMsg); return TranslateAccelerator((HWND)hWnd, (HACCEL)m_AccelTable, (LPMSG)lpMsg);
} }
stdstr CMainMenu::ChooseFileToOpen(HWND hParent) std::string CMainMenu::ChooseFileToOpen(HWND hParent)
{ {
OPENFILENAME openfilename; CPath FileName;
char FileName[_MAX_PATH], Directory[_MAX_PATH]; const char * Filter = "N64 ROMs (*.zip, *.7z, *.?64, *.rom, *.usa, *.jap, *.pal, *.bin, *.ndd)\0*.?64;*.zip;*.7z;*.bin;*.rom;*.usa;*.jap;*.pal;*.ndd\0All files (*.*)\0*.*\0";
if (FileName.SelectFile(hParent, g_Settings->LoadStringVal(RomList_GameDir).c_str(), Filter, true))
memset(&FileName, 0, sizeof(FileName));
memset(&openfilename, 0, sizeof(openfilename));
strcpy(Directory, g_Settings->LoadStringVal(RomList_GameDir).c_str());
openfilename.lStructSize = sizeof(openfilename);
openfilename.hwndOwner = (HWND)hParent;
openfilename.lpstrFilter = "N64 ROMs (*.zip, *.7z, *.?64, *.rom, *.usa, *.jap, *.pal, *.bin, *.ndd)\0*.?64;*.zip;*.7z;*.bin;*.rom;*.usa;*.jap;*.pal;*.ndd\0All files (*.*)\0*.*\0";
openfilename.lpstrFile = FileName;
openfilename.lpstrInitialDir = Directory;
openfilename.nMaxFile = MAX_PATH;
openfilename.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
if (GetOpenFileName(&openfilename))
{ {
return stdstr(FileName); return FileName;
} }
return stdstr(""); return "";
} }
void CMainMenu::SetTraceModuleSetttings(SettingID Type) void CMainMenu::SetTraceModuleSetttings(SettingID Type)
@ -123,7 +109,7 @@ void CMainMenu::SetTraceModuleSetttings(SettingID Type)
void CMainMenu::OnOpenRom(HWND hWnd) void CMainMenu::OnOpenRom(HWND hWnd)
{ {
stdstr File = ChooseFileToOpen(hWnd); std::string File = ChooseFileToOpen(hWnd);
if (File.length() == 0) if (File.length() == 0)
{ {
return; return;
@ -144,22 +130,9 @@ void CMainMenu::OnOpenRom(HWND hWnd)
stdstr IPLROM = g_Settings->LoadStringVal(File_DiskIPLPath); stdstr IPLROM = g_Settings->LoadStringVal(File_DiskIPLPath);
if ((IPLROM.length() <= 0) || (!g_BaseSystem->RunFileImage(IPLROM.c_str()))) if ((IPLROM.length() <= 0) || (!g_BaseSystem->RunFileImage(IPLROM.c_str())))
{ {
// Open DDROM const char * Filter = "64DD IPL ROM Image (*.zip, *.7z, *.?64, *.rom, *.usa, *.jap, *.pal, *.bin)\0*.?64;*.zip;*.7z;*.bin;*.rom;*.usa;*.jap;*.pal\0All files (*.*)\0*.*\0";
OPENFILENAME openfilename; CPath FileName;
char FileName[_MAX_PATH], Directory[_MAX_PATH]; if (FileName.SelectFile(hWnd, g_Settings->LoadStringVal(RomList_GameDir).c_str(), Filter, true))
memset(&FileName, 0, sizeof(FileName));
memset(&openfilename, 0, sizeof(openfilename));
strcpy(Directory, g_Settings->LoadStringVal(RomList_GameDir).c_str());
openfilename.lStructSize = sizeof(openfilename);
openfilename.hwndOwner = (HWND)hWnd;
openfilename.lpstrFilter = "64DD IPL ROM Image (*.zip, *.7z, *.?64, *.rom, *.usa, *.jap, *.pal, *.bin)\0*.?64;*.zip;*.7z;*.bin;*.rom;*.usa;*.jap;*.pal\0All files (*.*)\0*.*\0";
openfilename.lpstrFile = FileName;
openfilename.lpstrInitialDir = Directory;
openfilename.nMaxFile = MAX_PATH;
openfilename.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
if (GetOpenFileName(&openfilename))
{ {
g_BaseSystem->RunFileImage(FileName); g_BaseSystem->RunFileImage(FileName);
} }
@ -238,30 +211,21 @@ void CMainMenu::OnSaveAs(HWND hWnd)
void CMainMenu::OnLodState(HWND hWnd) void CMainMenu::OnLodState(HWND hWnd)
{ {
char Directory[255], SaveFile[255]; g_BaseSystem->ExternalEvent(SysEvent_PauseCPU_LoadGame);
OPENFILENAME openfilename;
memset(&SaveFile, 0, sizeof(SaveFile));
memset(&openfilename, 0, sizeof(openfilename));
char Directory[255];
UISettingsLoadStringVal(Directory_LastSave, Directory, sizeof(Directory)); UISettingsLoadStringVal(Directory_LastSave, Directory, sizeof(Directory));
openfilename.lStructSize = sizeof(openfilename); CPath SaveFile;
openfilename.hwndOwner = (HWND)hWnd; const char * Filter = "PJ64 Saves (*.zip, *.pj)\0*.pj?;*.pj;*.zip;";
openfilename.lpstrFilter = "PJ64 Saves (*.zip, *.pj)\0*.pj?;*.pj;*.zip;"; if (SaveFile.SelectFile(hWnd, Directory, Filter, false))
openfilename.lpstrFile = SaveFile;
openfilename.lpstrInitialDir = Directory;
openfilename.nMaxFile = MAX_PATH;
openfilename.Flags = OFN_HIDEREADONLY;
g_BaseSystem->ExternalEvent(SysEvent_PauseCPU_LoadGame);
if (GetOpenFileName(&openfilename))
{ {
g_Settings->SaveString(GameRunning_InstantSaveFile, SaveFile); g_Settings->SaveString(GameRunning_InstantSaveFile, SaveFile);
char SaveDir[MAX_PATH], drive[_MAX_DRIVE], dir[_MAX_DIR], fname[_MAX_FNAME], ext[_MAX_EXT]; if (!SaveFile.DirectoryExists())
_splitpath(SaveFile, drive, dir, fname, ext); {
_makepath(SaveDir, drive, dir, NULL, NULL); SaveFile.DirectoryCreate();
UISettingsSaveString(Directory_LastSave, SaveDir); }
UISettingsSaveString(Directory_LastSave, SaveFile.GetDriveDirectory());
g_BaseSystem->ExternalEvent(SysEvent_LoadMachineState); g_BaseSystem->ExternalEvent(SysEvent_LoadMachineState);
} }
g_BaseSystem->ExternalEvent(SysEvent_ResumeCPU_LoadGame); g_BaseSystem->ExternalEvent(SysEvent_ResumeCPU_LoadGame);
@ -331,27 +295,15 @@ bool CMainMenu::ProcessMessage(HWND hWnd, DWORD /*FromAccelerator*/, DWORD MenuI
break; break;
case ID_SYSTEM_SWAPDISK: case ID_SYSTEM_SWAPDISK:
WriteTrace(TraceUserInterface, TraceDebug, "ID_SYSTEM_SWAPDISK"); WriteTrace(TraceUserInterface, TraceDebug, "ID_SYSTEM_SWAPDISK");
// Open Disk
OPENFILENAME openfilename;
char FileName[_MAX_PATH], Directory[_MAX_PATH];
memset(&FileName, 0, sizeof(FileName));
memset(&openfilename, 0, sizeof(openfilename));
strcpy(Directory, g_Settings->LoadStringVal(RomList_GameDir).c_str());
openfilename.lStructSize = sizeof(openfilename);
openfilename.hwndOwner = (HWND)hWnd;
openfilename.lpstrFilter = "N64DD Disk Image (*.ndd)\0*.ndd\0All files (*.*)\0*.*\0";
openfilename.lpstrFile = FileName;
openfilename.lpstrInitialDir = Directory;
openfilename.nMaxFile = MAX_PATH;
openfilename.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
if (GetOpenFileName(&openfilename))
{ {
g_Disk->SaveDiskImage(); // Open Disk
g_Disk->SwapDiskImage(FileName); CPath FileName;
const char * Filter = "N64DD Disk Image (*.ndd)\0*.ndd\0All files (*.*)\0*.*\0";
if (FileName.SelectFile(hWnd, g_Settings->LoadStringVal(RomList_GameDir).c_str(), Filter, true))
{
g_Disk->SaveDiskImage();
g_Disk->SwapDiskImage(FileName);
}
} }
break; break;
case ID_SYSTEM_SAVE: case ID_SYSTEM_SAVE:

View File

@ -86,7 +86,7 @@ private:
std::wstring GetSaveSlotString(int Slot); std::wstring GetSaveSlotString(int Slot);
stdstr GetFileLastMod(const CPath & FileName); stdstr GetFileLastMod(const CPath & FileName);
void RebuildAccelerators(void); void RebuildAccelerators(void);
stdstr ChooseFileToOpen(HWND hParent); std::string ChooseFileToOpen(HWND hParent);
void SetTraceModuleSetttings(SettingID Type); void SetTraceModuleSetttings(SettingID Type);
static void SettingsChanged(CMainMenu * _this); static void SettingsChanged(CMainMenu * _this);

View File

@ -112,24 +112,12 @@ void CAdvancedOptionsPage::UpdatePageSettings(void)
m_InUpdateSettings = false; m_InUpdateSettings = false;
} }
void CAdvancedOptionsPage::SelectFile(LanguageStringID Title, CModifiedEditBox & EditBox) void CAdvancedOptionsPage::SelectFile(LanguageStringID /*Title*/, CModifiedEditBox & EditBox)
{ {
// Open DDROM const char * Filter = "64DD IPL ROM Image (*.zip, *.7z, *.?64, *.rom, *.usa, *.jap, *.pal, *.bin)\0*.?64;*.zip;*.7z;*.bin;*.rom;*.usa;*.jap;*.pal\0All files (*.*)\0*.*\0";
OPENFILENAME openfilename;
char FileName[_MAX_PATH], Directory[_MAX_PATH];
memset(&FileName, 0, sizeof(FileName));
memset(&openfilename, 0, sizeof(openfilename));
strcpy(Directory, g_Settings->LoadStringVal(RomList_GameDir).c_str()); CPath FileName;
openfilename.lStructSize = sizeof(openfilename); if (FileName.SelectFile(m_hWnd, g_Settings->LoadStringVal(RomList_GameDir).c_str(), Filter, true))
openfilename.hwndOwner = m_hWnd;
openfilename.lpstrFilter = "64DD IPL ROM Image (*.zip, *.7z, *.?64, *.rom, *.usa, *.jap, *.pal, *.bin)\0*.?64;*.zip;*.7z;*.bin;*.rom;*.usa;*.jap;*.pal\0All files (*.*)\0*.*\0";
openfilename.lpstrFile = FileName;
openfilename.lpstrInitialDir = Directory;
openfilename.nMaxFile = MAX_PATH;
openfilename.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
if (GetOpenFileName(&openfilename))
{ {
EditBox.SetChanged(true); EditBox.SetChanged(true);
EditBox.SetWindowText(FileName); EditBox.SetWindowText(FileName);

View File

@ -90,7 +90,7 @@ LRESULT CSupportWindow::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*
SetWindowLong(GWL_STYLE, dwStyle); SetWindowLong(GWL_STYLE, dwStyle);
::EnableWindow(GetDlgItem(IDCANCEL), false); ::EnableWindow(GetDlgItem(IDCANCEL), false);
srand (time(NULL)); srand ((uint32_t)time(NULL));
SetTimer(0, ((rand() % 35) + 5) * 1000, NULL); SetTimer(0, ((rand() % 35) + 5) * 1000, NULL);
} }
return TRUE; return TRUE;

View File

@ -40,21 +40,10 @@ int WINAPI WinMain(HINSTANCE /*hInstance*/, HINSTANCE /*hPrevInstance*/, LPSTR /
stdstr IPLROM = g_Settings->LoadStringVal(File_DiskIPLPath); stdstr IPLROM = g_Settings->LoadStringVal(File_DiskIPLPath);
if ((IPLROM.length() <= 0) || (!CN64System::RunFileImage(IPLROM.c_str()))) if ((IPLROM.length() <= 0) || (!CN64System::RunFileImage(IPLROM.c_str())))
{ {
// Open DDROM
OPENFILENAME openfilename;
char FileName[_MAX_PATH], Directory[_MAX_PATH];
memset(&FileName, 0, sizeof(FileName));
memset(&openfilename, 0, sizeof(openfilename));
openfilename.lStructSize = sizeof(openfilename); CPath FileName;
//openfilename.hwndOwner = (HWND)hWnd; const char * Filter = "64DD IPL ROM Image (*.zip, *.7z, *.?64, *.rom, *.usa, *.jap, *.pal, *.bin)\0*.?64;*.zip;*.7z;*.bin;*.rom;*.usa;*.jap;*.pal\0All files (*.*)\0*.*\0";
openfilename.lpstrFilter = "64DD IPL ROM Image (*.zip, *.7z, *.?64, *.rom, *.usa, *.jap, *.pal, *.bin)\0*.?64;*.zip;*.7z;*.bin;*.rom;*.usa;*.jap;*.pal\0All files (*.*)\0*.*\0"; if (FileName.SelectFile(NULL, g_Settings->LoadStringVal(RomList_GameDir).c_str(), Filter, true))
openfilename.lpstrFile = FileName;
openfilename.lpstrInitialDir = Directory;
openfilename.nMaxFile = MAX_PATH;
openfilename.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
if (GetOpenFileName(&openfilename))
{ {
CN64System::RunFileImage(FileName); CN64System::RunFileImage(FileName);
} }