AxibugEmuOnline/References/virtuanessrc097-master/FolderDlg.cpp
2024-08-05 17:58:53 +08:00

304 lines
19 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// フォルダダイアログクラス
//
//
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <string>
using namespace std;
#include "VirtuaNESres.h"
#include "DebugOut.h"
#include "App.h"
#include "Pathlib.h"
#include "Wnd.h"
#include "FolderDlg.h"
DLG_MESSAGE_BEGIN(CFolderDlg)
// メッセージ
DLG_ON_MESSAGE( WM_INITDIALOG, OnInitDialog )
// コマンド
DLG_COMMAND_BEGIN()
DLG_ON_COMMAND( IDOK, OnOK )
DLG_ON_COMMAND( IDCANCEL, OnCancel )
DLG_ON_COMMAND( IDDEFAULT, OnDefault )
DLG_ON_COMMAND( IDC_FLD_ROM_BROWSE, OnRomBrowse )
DLG_ON_COMMAND( IDC_FLD_SAVE_BROWSE, OnSaveBrowse )
DLG_ON_COMMAND( IDC_FLD_STATE_BROWSE, OnStateBrowse )
DLG_ON_COMMAND( IDC_FLD_SNAPSHOT_BROWSE, OnSnapshotBrowse )
DLG_ON_COMMAND( IDC_FLD_MOVIE_BROWSE, OnMovieBrowse )
DLG_ON_COMMAND( IDC_FLD_WAVE_BROWSE, OnWaveBrowse )
DLG_ON_COMMAND( IDC_FLD_CHEAT_BROWSE, OnCheatBrowse )
DLG_ON_COMMAND( IDC_FLD_IPS_BROWSE, OnIpsBrowse )
DLG_COMMAND_END()
DLG_MESSAGE_END()
CFolderDlg::CFolderDlg()
{
}
CFolderDlg::~CFolderDlg()
{
}
INT CFolderDlg::DoModal( HWND hWndParent )
{
return ::DialogBoxParam( CApp::GetPlugin(), MAKEINTRESOURCE(IDD_CFG_FOLDER),
hWndParent, g_DlgProc, (LPARAM)this );
}
void CFolderDlg::OnInitialMember()
{
BTNCHECK( IDC_FLD_ROM_USE, Config.path.bRomPath );
BTNCHECK( IDC_FLD_SAVE_USE, Config.path.bSavePath );
BTNCHECK( IDC_FLD_STATE_USE, Config.path.bStatePath );
BTNCHECK( IDC_FLD_SNAPSHOT_USE, Config.path.bSnapshotPath );
BTNCHECK( IDC_FLD_MOVIE_USE, Config.path.bMoviePath );
BTNCHECK( IDC_FLD_WAVE_USE, Config.path.bWavePath );
BTNCHECK( IDC_FLD_CHEAT_USE, Config.path.bCheatPath );
BTNCHECK( IDC_FLD_IPS_USE, Config.path.bIpsPath );
::SetDlgItemText( m_hWnd, IDC_FLD_ROM_EDIT, Config.path.szRomPath );
::SetDlgItemText( m_hWnd, IDC_FLD_SAVE_EDIT, Config.path.szSavePath );
::SetDlgItemText( m_hWnd, IDC_FLD_STATE_EDIT, Config.path.szStatePath );
::SetDlgItemText( m_hWnd, IDC_FLD_SNAPSHOT_EDIT, Config.path.szSnapshotPath );
::SetDlgItemText( m_hWnd, IDC_FLD_MOVIE_EDIT, Config.path.szMoviePath );
::SetDlgItemText( m_hWnd, IDC_FLD_WAVE_EDIT, Config.path.szWavePath );
::SetDlgItemText( m_hWnd, IDC_FLD_CHEAT_EDIT, Config.path.szCheatPath );
::SetDlgItemText( m_hWnd, IDC_FLD_IPS_EDIT, Config.path.szIpsPath );
}
void CFolderDlg::PathCheck( LPSTR lpszPath )
{
INT len = ::strlen( lpszPath );
if( len > 3 ) {
if( isleadbyte( (UINT)lpszPath[len-2] ) ) {
// MBCSで¥が無い場合
::strcat( lpszPath, "\\" );
} else {
if( lpszPath[ len-1 ] != '\\' ) {
::strcat( lpszPath, "\\" );
}
}
}
}
DLGMSG CFolderDlg::OnInitDialog( DLGMSGPARAM )
{
// DEBUGOUT( "CFolderDlg::OnInitDialog\n" );
m_ConfigSave = Config.path;
OnInitialMember();
return TRUE;
}
DLGCMD CFolderDlg::OnOK( DLGCMDPARAM )
{
// DEBUGOUT( "CFolderDlg::OnOK\n" );
Config.path.bRomPath = IsBTNCHECK( IDC_FLD_ROM_USE );
Config.path.bSavePath = IsBTNCHECK( IDC_FLD_SAVE_USE );
Config.path.bStatePath = IsBTNCHECK( IDC_FLD_STATE_USE );
Config.path.bSnapshotPath = IsBTNCHECK( IDC_FLD_SNAPSHOT_USE );
Config.path.bMoviePath = IsBTNCHECK( IDC_FLD_MOVIE_USE );
Config.path.bWavePath = IsBTNCHECK( IDC_FLD_WAVE_USE );
Config.path.bCheatPath = IsBTNCHECK( IDC_FLD_CHEAT_USE );
Config.path.bIpsPath = IsBTNCHECK( IDC_FLD_IPS_USE );
::GetDlgItemText( m_hWnd, IDC_FLD_ROM_EDIT, Config.path.szRomPath, _MAX_PATH );
::GetDlgItemText( m_hWnd, IDC_FLD_SAVE_EDIT, Config.path.szSavePath, _MAX_PATH );
::GetDlgItemText( m_hWnd, IDC_FLD_STATE_EDIT, Config.path.szStatePath, _MAX_PATH );
::GetDlgItemText( m_hWnd, IDC_FLD_SNAPSHOT_EDIT, Config.path.szSnapshotPath, _MAX_PATH );
::GetDlgItemText( m_hWnd, IDC_FLD_MOVIE_EDIT, Config.path.szMoviePath, _MAX_PATH );
::GetDlgItemText( m_hWnd, IDC_FLD_WAVE_EDIT, Config.path.szWavePath, _MAX_PATH );
::GetDlgItemText( m_hWnd, IDC_FLD_CHEAT_EDIT, Config.path.szCheatPath, _MAX_PATH );
::GetDlgItemText( m_hWnd, IDC_FLD_IPS_EDIT, Config.path.szIpsPath, _MAX_PATH );
PathCheck( Config.path.szRomPath );
PathCheck( Config.path.szSavePath );
PathCheck( Config.path.szStatePath );
PathCheck( Config.path.szSnapshotPath );
PathCheck( Config.path.szMoviePath );
PathCheck( Config.path.szWavePath );
PathCheck( Config.path.szCheatPath );
PathCheck( Config.path.szIpsPath );
::EndDialog( m_hWnd, IDOK );
}
DLGCMD CFolderDlg::OnCancel( DLGCMDPARAM )
{
// DEBUGOUT( "CFolderDlg::OnCancel\n" );
Config.path = m_ConfigSave;
::EndDialog( m_hWnd, IDCANCEL );
}
DLGCMD CFolderDlg::OnDefault( DLGCMDPARAM )
{
// DEBUGOUT( "CFolderDlg::OnDefault\n" );
Config.path.Default();
OnInitialMember();
}
DLGCMD CFolderDlg::OnRomBrowse( DLGCMDPARAM )
{
// DEBUGOUT( "CFolderDlg::OnRomBrowse\n" );
CHAR szTemp[_MAX_PATH];
::GetDlgItemText( m_hWnd, IDC_FLD_ROM_EDIT, szTemp, _MAX_PATH );
CHAR szFolder[_MAX_PATH];
string pathstr = CPathlib::CreatePath( CApp::GetModulePath(), szTemp );
::lstrcpy( szFolder, pathstr.c_str() );
DEBUGOUT( "Path:%s\n", szFolder );
CHAR szTitle[256];
CApp::LoadString( IDS_UI_BROWSE, szTitle, sizeof(szTitle) );
if( CPathlib::SelectFolder( m_hWnd, szTitle, szFolder ) ) {
::SetDlgItemText( m_hWnd, IDC_FLD_ROM_EDIT, szFolder );
BTNCHECK( IDC_FLD_ROM_USE, TRUE );
}
}
DLGCMD CFolderDlg::OnSaveBrowse( DLGCMDPARAM )
{
// DEBUGOUT( "CFolderDlg::OnSaveBrowse\n" );
CHAR szTemp[_MAX_PATH];
::GetDlgItemText( m_hWnd, IDC_FLD_SAVE_EDIT, szTemp, _MAX_PATH );
CHAR szFolder[_MAX_PATH];
string pathstr = CPathlib::CreatePath( CApp::GetModulePath(), szTemp );
::lstrcpy( szFolder, pathstr.c_str() );
DEBUGOUT( "Path:%s\n", szFolder );
CHAR szTitle[256];
CApp::LoadString( IDS_UI_BROWSE, szTitle, sizeof(szTitle) );
if( CPathlib::SelectFolder( m_hWnd, szTitle, szFolder ) ) {
::SetDlgItemText( m_hWnd, IDC_FLD_SAVE_EDIT, szFolder );
BTNCHECK( IDC_FLD_SAVE_USE, TRUE );
}
}
DLGCMD CFolderDlg::OnStateBrowse( DLGCMDPARAM )
{
// DEBUGOUT( "CFolderDlg::OnStateBrowse\n" );
CHAR szTemp[_MAX_PATH];
::GetDlgItemText( m_hWnd, IDC_FLD_STATE_EDIT, szTemp, _MAX_PATH );
CHAR szFolder[_MAX_PATH];
string pathstr = CPathlib::CreatePath( CApp::GetModulePath(), szTemp );
::lstrcpy( szFolder, pathstr.c_str() );
DEBUGOUT( "Path:%s\n", szFolder );
CHAR szTitle[256];
CApp::LoadString( IDS_UI_BROWSE, szTitle, sizeof(szTitle) );
if( CPathlib::SelectFolder( m_hWnd, szTitle, szFolder ) ) {
::SetDlgItemText( m_hWnd, IDC_FLD_STATE_EDIT, szFolder );
BTNCHECK( IDC_FLD_STATE_USE, TRUE );
}
}
DLGCMD CFolderDlg::OnSnapshotBrowse( DLGCMDPARAM )
{
// DEBUGOUT( "CFolderDlg::OnSnapshotBrowse\n" );
CHAR szTemp[_MAX_PATH];
::GetDlgItemText( m_hWnd, IDC_FLD_SNAPSHOT_EDIT, szTemp, _MAX_PATH );
CHAR szFolder[_MAX_PATH];
string pathstr = CPathlib::CreatePath( CApp::GetModulePath(), szTemp );
::lstrcpy( szFolder, pathstr.c_str() );
DEBUGOUT( "Path:%s\n", szFolder );
CHAR szTitle[256];
CApp::LoadString( IDS_UI_BROWSE, szTitle, sizeof(szTitle) );
if( CPathlib::SelectFolder( m_hWnd, szTitle, szFolder ) ) {
::SetDlgItemText( m_hWnd, IDC_FLD_SNAPSHOT_EDIT, szFolder );
BTNCHECK( IDC_FLD_SNAPSHOT_USE, TRUE );
}
}
DLGCMD CFolderDlg::OnMovieBrowse( DLGCMDPARAM )
{
// DEBUGOUT( "CFolderDlg::OnMovieBrowse\n" );
CHAR szTemp[_MAX_PATH];
::GetDlgItemText( m_hWnd, IDC_FLD_MOVIE_EDIT, szTemp, _MAX_PATH );
CHAR szFolder[_MAX_PATH];
string pathstr = CPathlib::CreatePath( CApp::GetModulePath(), szTemp );
::lstrcpy( szFolder, pathstr.c_str() );
DEBUGOUT( "Path:%s\n", szFolder );
CHAR szTitle[256];
CApp::LoadString( IDS_UI_BROWSE, szTitle, sizeof(szTitle) );
if( CPathlib::SelectFolder( m_hWnd, szTitle, szFolder ) ) {
::SetDlgItemText( m_hWnd, IDC_FLD_MOVIE_EDIT, szFolder );
BTNCHECK( IDC_FLD_MOVIE_USE, TRUE );
}
}
DLGCMD CFolderDlg::OnWaveBrowse( DLGCMDPARAM )
{
// DEBUGOUT( "CFolderDlg::OnWaveBrowse\n" );
CHAR szTemp[_MAX_PATH];
::GetDlgItemText( m_hWnd, IDC_FLD_WAVE_EDIT, szTemp, _MAX_PATH );
CHAR szFolder[_MAX_PATH];
string pathstr = CPathlib::CreatePath( CApp::GetModulePath(), szTemp );
::lstrcpy( szFolder, pathstr.c_str() );
DEBUGOUT( "Path:%s\n", szFolder );
CHAR szTitle[256];
CApp::LoadString( IDS_UI_BROWSE, szTitle, sizeof(szTitle) );
if( CPathlib::SelectFolder( m_hWnd, szTitle, szFolder ) ) {
::SetDlgItemText( m_hWnd, IDC_FLD_WAVE_EDIT, szFolder );
BTNCHECK( IDC_FLD_WAVE_USE, TRUE );
}
}
DLGCMD CFolderDlg::OnCheatBrowse( DLGCMDPARAM )
{
// DEBUGOUT( "CFolderDlg::OnCheatBrowse\n" );
CHAR szTemp[_MAX_PATH];
::GetDlgItemText( m_hWnd, IDC_FLD_CHEAT_EDIT, szTemp, _MAX_PATH );
CHAR szFolder[_MAX_PATH];
string pathstr = CPathlib::CreatePath( CApp::GetModulePath(), szTemp );
::lstrcpy( szFolder, pathstr.c_str() );
DEBUGOUT( "Path:%s\n", szFolder );
CHAR szTitle[256];
CApp::LoadString( IDS_UI_BROWSE, szTitle, sizeof(szTitle) );
if( CPathlib::SelectFolder( m_hWnd, szTitle, szFolder ) ) {
::SetDlgItemText( m_hWnd, IDC_FLD_CHEAT_EDIT, szFolder );
BTNCHECK( IDC_FLD_CHEAT_USE, TRUE );
}
}
DLGCMD CFolderDlg::OnIpsBrowse( DLGCMDPARAM )
{
// DEBUGOUT( "CFolderDlg::OnIpsBrowse\n" );
CHAR szTemp[_MAX_PATH];
::GetDlgItemText( m_hWnd, IDC_FLD_IPS_EDIT, szTemp, _MAX_PATH );
CHAR szFolder[_MAX_PATH];
string pathstr = CPathlib::CreatePath( CApp::GetModulePath(), szTemp );
::lstrcpy( szFolder, pathstr.c_str() );
DEBUGOUT( "Path:%s\n", szFolder );
CHAR szTitle[256];
CApp::LoadString( IDS_UI_BROWSE, szTitle, sizeof(szTitle) );
if( CPathlib::SelectFolder( m_hWnd, szTitle, szFolder ) ) {
::SetDlgItemText( m_hWnd, IDC_FLD_IPS_EDIT, szFolder );
BTNCHECK( IDC_FLD_IPS_USE, TRUE );
}
}