📄 launcherdlg.cpp
字号:
// Manufacturer
if( (pToken = (CHAR*)::_mbstok( NULL, seps )) ) {
fl.manufacturer = pToken;
} else {
fl.manufacturer = "";
}
// Sale date
if( (pToken = (CHAR*)::_mbstok( NULL, seps )) ) {
fl.saledate = pToken;
} else {
fl.saledate = "";
}
// Price
if( (pToken = (CHAR*)::_mbstok( NULL, seps )) ) {
fl.price = pToken;
} else {
fl.price = "";
}
// Genre
if( (pToken = (CHAR*)::_mbstok( NULL, seps )) ) {
fl.genre = pToken;
} else {
fl.genre = "";
}
m_FileList.push_back( fl );
m_FileListNum++;
}
FCLOSE( fp );
return TRUE;
}
return FALSE;
}
void CLauncherDlg::SaveFileList()
{
FILE* fp = NULL;
// string Path = CPathlib::MakePathExt( CApp::GetModulePath(), "launcher", "lst" );
string Path = CPathlib::MakePath( CApp::GetModulePath(), "launcher" );
if( m_nListSelect ) {
Path = Path + (char)('0'+m_nListSelect) + ".lst";
} else {
Path = Path + ".lst";
}
if( !m_FileListNum ) {
DEBUGOUT( "Delete Launcher File:%s\n", Path.c_str() );
::DeleteFile( Path.c_str() );
return;
}
DEBUGOUT( "Save Launcher File:%s\n", Path.c_str() );
if( (fp = ::fopen( Path.c_str(), "w" )) ) {
for( INT index = 0; index < m_FileListNum; index++ ) {
FILELIST& fl = m_FileList[index];
//DEBUGOUT( "%08X:%s\n", index, fl.fname.c_str() );
::fprintf( fp, "%s;%s;%d;%d;%d;%08X;%08X;%s;%s;%s;%s;%s;%s;%s;%s\n",
fl.fname.c_str(),
fl.path.c_str(),
fl.mapper,
fl.prg_size,
fl.chr_size,
fl.crcall,
fl.crc,
fl.info.c_str(),
fl.db.c_str(),
fl.title.c_str(),
fl.country.c_str(),
fl.manufacturer.c_str(),
fl.saledate.c_str(),
fl.price.c_str(),
fl.genre.c_str() );
}
FCLOSE( fp );
}
m_FileList.clear();
m_FileListNum = 0;
}
/////////////////////////////////////////////////////////////////////////////
// 儊僢僙乕僕
DLG_MESSAGE_BEGIN(CLchDispEditDlg)
DLG_ON_MESSAGE( WM_INITDIALOG, OnInitDialog )
// 僐儅儞僪
DLG_COMMAND_BEGIN()
DLG_ON_COMMAND( IDOK, OnOK )
DLG_ON_COMMAND( IDCANCEL, OnCancel )
DLG_ON_COMMAND( IDC_DED_ADD, OnAdd )
DLG_ON_COMMAND( IDC_DED_DEL, OnDel )
DLG_ON_COMMAND( IDC_DED_UP, OnUp )
DLG_ON_COMMAND( IDC_DED_DOWN, OnDown )
DLG_COMMAND_END()
// Notify 儊僢僙乕僕
DLG_NOTIFY_BEGIN()
DLG_NOTIFY_END()
DLG_MESSAGE_END()
INT CLchDispEditDlg::DoModal( HWND hWndParent )
{
return ::DialogBoxParam( CApp::GetPlugin(), MAKEINTRESOURCE(IDD_LCH_DISPEDIT),
hWndParent, g_DlgProc, (LPARAM)this );
}
DLGMSG CLchDispEditDlg::OnInitDialog( DLGMSGPARAM )
{
// DEBUGOUT( "CLchDispEditDlg::OnInitDialog\n" );
INT i;
CHAR szStr[64];
m_nViewNum = m_nHideNum = 0;
for( i = 0; i < LAUNCHHEADER_MAX; i++ ) {
CApp::LoadString( CLauncherDlg::m_HeaderID[Config.launcher.nHeaderOrder[i]], szStr, sizeof(szStr) );
if( Config.launcher.bHeaderView[Config.launcher.nHeaderOrder[i]] ) {
::SendDlgItemMessage( m_hWnd, IDC_DED_VIEWLIST, LB_ADDSTRING, 0, (LPARAM)szStr );
m_nViewOrder[m_nViewNum] = Config.launcher.nHeaderOrder[i];
m_nViewNum++;
} else {
::SendDlgItemMessage( m_hWnd, IDC_DED_HIDELIST, LB_ADDSTRING, 0, (LPARAM)szStr );
m_nHideOrder[m_nHideNum] = Config.launcher.nHeaderOrder[i];
m_nHideNum++;
}
}
if( m_nViewNum <= 1 ) {
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_DED_DEL ), FALSE );
}
if( m_nHideNum == 0 ) {
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_DED_ADD ), FALSE );
}
return TRUE;
}
DLGCMD CLchDispEditDlg::OnAdd( DLGCMDPARAM )
{
// DEBUGOUT( "CLchDispEditDlg::OnAdd\n" );
INT nSel = ::SendDlgItemMessage( m_hWnd, IDC_DED_HIDELIST, LB_GETCURSEL, 0, 0 );
if( nSel != LB_ERR ) {
CHAR szStr[64];
::SendDlgItemMessage( m_hWnd, IDC_DED_HIDELIST, LB_GETTEXT, (WPARAM)nSel, (LPARAM)szStr );
::SendDlgItemMessage( m_hWnd, IDC_DED_VIEWLIST, LB_ADDSTRING, 0, (LPARAM)szStr );
::SendDlgItemMessage( m_hWnd, IDC_DED_VIEWLIST, LB_SETCURSEL, (WPARAM)m_nViewNum, 0 );
m_nViewOrder[m_nViewNum] = m_nHideOrder[nSel];
m_nViewNum++;
::SendDlgItemMessage( m_hWnd, IDC_DED_HIDELIST, LB_DELETESTRING, (WPARAM)nSel, 0 );
for( INT i = nSel; i < m_nHideNum-1; i++ ) {
m_nHideOrder[i] = m_nHideOrder[i+1];
}
m_nHideNum--;
}
if( m_nViewNum >= 1 ) {
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_DED_DEL ), TRUE );
}
if( m_nHideNum == 0 ) {
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_DED_ADD ), FALSE );
}
}
DLGCMD CLchDispEditDlg::OnDel( DLGCMDPARAM )
{
// DEBUGOUT( "CLchDispEditDlg::OnDel\n" );
INT nSel = ::SendDlgItemMessage( m_hWnd, IDC_DED_VIEWLIST, LB_GETCURSEL, 0, 0 );
if( nSel != LB_ERR ) {
CHAR szStr[64];
::SendDlgItemMessage( m_hWnd, IDC_DED_VIEWLIST, LB_GETTEXT, (WPARAM)nSel, (LPARAM)szStr );
::SendDlgItemMessage( m_hWnd, IDC_DED_HIDELIST, LB_ADDSTRING, 0, (LPARAM)szStr );
::SendDlgItemMessage( m_hWnd, IDC_DED_HIDELIST, LB_SETCURSEL, (WPARAM)m_nHideNum, 0 );
m_nHideOrder[m_nHideNum] = m_nViewOrder[nSel];
m_nHideNum++;
::SendDlgItemMessage( m_hWnd, IDC_DED_VIEWLIST, LB_DELETESTRING, (WPARAM)nSel, 0 );
for( INT i = nSel; i < m_nViewNum-1; i++ ) {
m_nViewOrder[i] = m_nViewOrder[i+1];
}
m_nViewNum--;
}
if( m_nViewNum <= 1 ) {
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_DED_DEL ), FALSE );
}
if( m_nHideNum != 0 ) {
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_DED_ADD ), TRUE );
}
}
DLGCMD CLchDispEditDlg::OnUp( DLGCMDPARAM )
{
// DEBUGOUT( "CLchDispEditDlg::OnUp\n" );
INT nSel = ::SendDlgItemMessage( m_hWnd, IDC_DED_VIEWLIST, LB_GETCURSEL, 0, 0 );
if( nSel != LB_ERR && nSel > 0 ) {
CHAR szStr[64];
::SendDlgItemMessage( m_hWnd, IDC_DED_VIEWLIST, LB_GETTEXT, (WPARAM)nSel, (LPARAM)szStr );
::SendDlgItemMessage( m_hWnd, IDC_DED_VIEWLIST, LB_DELETESTRING, (WPARAM)nSel, 0 );
::SendDlgItemMessage( m_hWnd, IDC_DED_VIEWLIST, LB_INSERTSTRING, (WPARAM)nSel-1, (LPARAM)szStr );
INT temp = m_nViewOrder[nSel];
m_nViewOrder[nSel] = m_nViewOrder[nSel-1];
m_nViewOrder[nSel-1] = temp;
::SendDlgItemMessage( m_hWnd, IDC_DED_VIEWLIST, LB_SETCURSEL, (WPARAM)nSel-1, 0 );
}
}
DLGCMD CLchDispEditDlg::OnDown( DLGCMDPARAM )
{
// DEBUGOUT( "CLchDispEditDlg::OnDown\n" );
INT nSel = ::SendDlgItemMessage( m_hWnd, IDC_DED_VIEWLIST, LB_GETCURSEL, 0, 0 );
if( nSel != LB_ERR && nSel < m_nViewNum-1 ) {
CHAR szStr[64];
::SendDlgItemMessage( m_hWnd, IDC_DED_VIEWLIST, LB_GETTEXT, (WPARAM)nSel, (LPARAM)szStr );
::SendDlgItemMessage( m_hWnd, IDC_DED_VIEWLIST, LB_DELETESTRING, (WPARAM)nSel, 0 );
::SendDlgItemMessage( m_hWnd, IDC_DED_VIEWLIST, LB_INSERTSTRING, (WPARAM)nSel+1, (LPARAM)szStr );
INT temp = m_nViewOrder[nSel];
m_nViewOrder[nSel] = m_nViewOrder[nSel+1];
m_nViewOrder[nSel+1] = temp;
::SendDlgItemMessage( m_hWnd, IDC_DED_VIEWLIST, LB_SETCURSEL, (WPARAM)nSel+1, 0 );
}
}
DLGCMD CLchDispEditDlg::OnOK( DLGCMDPARAM )
{
for( INT i = 0; i < LAUNCHHEADER_MAX; i++ ) {
if( i < m_nViewNum ) {
Config.launcher.nHeaderOrder[i] = m_nViewOrder[i];
Config.launcher.bHeaderView[m_nViewOrder[i]] = TRUE;
} else {
Config.launcher.nHeaderOrder[i] = m_nHideOrder[i-m_nViewNum];
Config.launcher.bHeaderView[m_nHideOrder[i-m_nViewNum]] = FALSE;
}
//DEBUGOUT( "%2d:%2d %2d\n", i, Config.launcher.nHeaderOrder[i], Config.launcher.bHeaderView[i] );
}
::EndDialog( m_hWnd, IDOK );
}
DLGCMD CLchDispEditDlg::OnCancel( DLGCMDPARAM )
{
::EndDialog( m_hWnd, IDCANCEL );
}
///////////////////////////////////////////////////////////////////////////////
#ifndef ListView_SetCheckState
#define ListView_SetCheckState(hwndLV, i, fCheck) \
ListView_SetItemState(hwndLV, i, \
INDEXTOSTATEIMAGEMASK((fCheck)+1), LVIS_STATEIMAGEMASK)
#endif
// 儊僢僙乕僕
DLG_MESSAGE_BEGIN(CLchFolderConfigDlg)
DLG_ON_MESSAGE( WM_INITDIALOG, OnInitDialog )
// 僐儅儞僪
DLG_COMMAND_BEGIN()
DLG_ON_COMMAND( IDOK, OnOK )
DLG_ON_COMMAND( IDCANCEL, OnCancel )
DLG_ON_COMMAND( IDC_LFL_ADD, OnAdd )
DLG_ON_COMMAND( IDC_LFL_DEL, OnDel )
DLG_COMMAND_END()
// Notify 儊僢僙乕僕
DLG_NOTIFY_BEGIN()
DLG_NOTIFY_END()
DLG_MESSAGE_END()
INT CLchFolderConfigDlg::DoModal( HWND hWndParent )
{
return ::DialogBoxParam( CApp::GetPlugin(), MAKEINTRESOURCE(IDD_LCH_FOLDER),
hWndParent, g_DlgProc, (LPARAM)this );
}
DLGMSG CLchFolderConfigDlg::OnInitDialog( DLGMSGPARAM )
{
// DEBUGOUT( "CLchFolderConfigDlg::OnInitDialog\n" );
HWND hWndCtrl = ::GetDlgItem( m_hWnd, IDC_LFL_LIST );
ListView_SetExtendedListViewStyle( hWndCtrl, LVS_EX_CHECKBOXES|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES );
// 儗億乕僩儌乕僪偱偼僿僢僟乕偑柍偔偰傕愝掕偟側偄偲昞帵偝傟側偄
LV_COLUMN lvcol;
lvcol.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvcol.fmt = LVCFMT_LEFT;
lvcol.cx = 1024;
lvcol.iSubItem = 0;
lvcol.pszText = "";
ListView_InsertColumn( hWndCtrl, 0, &lvcol );
LV_ITEM lvitem;
lvitem.mask = LVIF_TEXT;
lvitem.iSubItem = 0;
for( INT i = 0; i < 16; i++ ) {
lvitem.iItem = i;
if( ::strlen( Config.launcher.szFolder[i] ) ) {
lvitem.pszText = Config.launcher.szFolder[i];
ListView_InsertItem( hWndCtrl, &lvitem );
ListView_SetCheckState( hWndCtrl, i, Config.launcher.bFolderUse[i] );
} else {
break;
}
}
return TRUE;
}
DLGCMD CLchFolderConfigDlg::OnOK( DLGCMDPARAM )
{
// DEBUGOUT( "CLchFolderConfigDlg::OnOK\n" );
HWND hWndCtrl = ::GetDlgItem( m_hWnd, IDC_LFL_LIST );
INT nCount = ListView_GetItemCount( hWndCtrl );
INT i;
for( i = 0; i < nCount; i++ ) {
ListView_GetItemText( hWndCtrl, i, 0, Config.launcher.szFolder[i], sizeof(Config.launcher.szFolder[i]) );
Config.launcher.bFolderUse[i] = ListView_GetCheckState( hWndCtrl, i );
}
for( ; i < 16; i++ ) {
Config.launcher.bFolderUse[i] = FALSE;
Config.launcher.szFolder[i][0] = '\0';
}
::EndDialog( m_hWnd, IDOK );
}
DLGCMD CLchFolderConfigDlg::OnCancel( DLGCMDPARAM )
{
// DEBUGOUT( "CLchFolderConfigDlg::OnCancel\n" );
::EndDialog( m_hWnd, IDCANCEL );
}
DLGCMD CLchFolderConfigDlg::OnAdd( DLGCMDPARAM )
{
HWND hWndCtrl = ::GetDlgItem( m_hWnd, IDC_LFL_LIST );
CHAR szFolder[_MAX_PATH];
szFolder[0] = '\0';
CHAR szTitle[256];
CApp::LoadString( IDS_UI_BROWSE, szTitle, sizeof(szTitle) );
if( CPathlib::SelectFolder( m_hWnd, szTitle, szFolder ) ) {
LV_ITEM lvitem;
lvitem.mask = LVIF_TEXT;
lvitem.iItem = ListView_GetItemCount( hWndCtrl );
lvitem.iSubItem = 0;
lvitem.pszText = szFolder;
ListView_InsertItem( hWndCtrl, &lvitem );
ListView_SetCheckState( hWndCtrl, lvitem.iItem, TRUE );
if( lvitem.iItem+1 >= 16 ) {
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_LFL_ADD ), FALSE );
}
}
}
DLGCMD CLchFolderConfigDlg::OnDel( DLGCMDPARAM )
{
HWND hWndCtrl = ::GetDlgItem( m_hWnd, IDC_LFL_LIST );
INT nCount = ListView_GetItemCount( hWndCtrl );
for( INT i = 0; i < nCount; i++ ) {
if( ListView_GetItemState( hWndCtrl, i, LVIS_SELECTED ) ) {
ListView_DeleteItem( hWndCtrl, i );
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_LFL_ADD ), TRUE );
break;
}
}
}
///////////////////////////////////////////////////////////////////////////////
// 儊僢僙乕僕
DLG_MESSAGE_BEGIN(CLchHeaderEditDlg)
DLG_ON_MESSAGE( WM_INITDIALOG, OnInitDialog )
// 僐儅儞僪
DLG_COMMAND_BEGIN()
DLG_ON_COMMAND( IDOK, OnOK )
DLG_ON_COMMAND( IDCANCEL, OnCancel )
DLG_COMMAND_END()
// Notify 儊僢僙乕僕
DLG_NOTIFY_BEGIN()
DLG_NOTIFY_END()
DLG_MESSAGE_END()
INT CLchHeaderEditDlg::DoModal( HWND hWndParent )
{
return ::DialogBoxParam( CApp::GetPlugin(), MAKEINTRESOURCE(IDD_LCH_HEADEREDIT),
hWndParent, g_DlgProc, (LPARAM)this );
}
DLGMSG CLchHeaderEditDlg::OnInitDialog( DLGMSGPARAM )
{
// DEBUGOUT( "CLchHeaderEditDlg::OnInitDialog\n" );
::SetDlgItemInt( m_hWnd, IDC_HED_EDIT, (UINT)m_nMapperNo, FALSE );
BTNCHECK( IDC_HED_VMIRROR, m_bMirror );
BTNCHECK( IDC_HED_SRAM, m_bSram );
BTNCHECK( IDC_HED_4SCREEN, m_bFourScreen );
BTNCHECK( IDC_HED_TRAINER, m_bTrainer );
BTNCHECK( IDC_HED_VSUNISYSTEM, m_bVSUnisystem );
return TRUE;
}
DLGCMD CLchHeaderEditDlg::OnOK( DLGCMDPARAM )
{
// DEBUGOUT( "CLchHeaderEditDlg::OnOK\n" );
m_nMapperNo = (INT)::GetDlgItemInt( m_hWnd, IDC_HED_EDIT, NULL, FALSE );
if( m_nMapperNo < 0 || m_nMapperNo > 255 ) {
CHAR szStr[256];
CApp::LoadString( IDS_ERROR_ILLEGALMAPPERNO, szStr, sizeof(szStr) );
::MessageBox( m_hWnd, szStr, "ERROR", MB_ICONERROR|MB_OK );
return;
}
m_bMirror = IsBTNCHECK( IDC_HED_VMIRROR );
m_bSram = IsBTNCHECK( IDC_HED_SRAM );
m_bFourScreen = IsBTNCHECK( IDC_HED_4SCREEN );
m_bTrainer = IsBTNCHECK( IDC_HED_TRAINER );
m_bVSUnisystem = IsBTNCHECK( IDC_HED_VSUNISYSTEM );
::EndDialog( m_hWnd, IDOK );
}
DLGCMD CLchHeaderEditDlg::OnCancel( DLGCMDPARAM )
{
// DEBUGOUT( "CLchHeaderEditDlg::OnCancel\n" );
::EndDialog( m_hWnd, IDCANCEL );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -