517 lines
15 KiB
C++
517 lines
15 KiB
C++
|
//
|
|||
|
// <20>R<EFBFBD><52><EFBFBD>g<EFBFBD><67><EFBFBD>[<5B><><EFBFBD>_<EFBFBD>C<EFBFBD>A<EFBFBD><41><EFBFBD>O<EFBFBD>N<EFBFBD><4E><EFBFBD>X
|
|||
|
//
|
|||
|
//
|
|||
|
#define WIN32_LEAN_AND_MEAN
|
|||
|
#include <windows.h>
|
|||
|
#include <mmsystem.h>
|
|||
|
|
|||
|
#include <string>
|
|||
|
using namespace std;
|
|||
|
|
|||
|
#include "VirtuaNESres.h"
|
|||
|
#include "DebugOut.h"
|
|||
|
#include "App.h"
|
|||
|
#include "Pathlib.h"
|
|||
|
|
|||
|
#include "Wnd.h"
|
|||
|
#include "ControllerDlg.h"
|
|||
|
|
|||
|
#include "DirectInput.h"
|
|||
|
|
|||
|
///////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|||
|
DLG_MESSAGE_BEGIN(CControllerPageDlg)
|
|||
|
// <20><><EFBFBD>b<EFBFBD>Z<EFBFBD>[<5B>W
|
|||
|
DLG_ON_MESSAGE( WM_INITDIALOG, OnInitDialog )
|
|||
|
// NOTIFY<46><59><EFBFBD>b<EFBFBD>Z<EFBFBD>[<5B>W
|
|||
|
DLG_NOTIFY_BEGIN()
|
|||
|
DLG_NOTIFY_END()
|
|||
|
// <20>R<EFBFBD>}<7D><><EFBFBD>h
|
|||
|
DLG_COMMAND_BEGIN()
|
|||
|
DLG_ON_COMMAND_NOTIFY_RANGE( IDC_CTR_UP, IDC_CTR_END, STN_CLICKED, OnClicked )
|
|||
|
DLG_COMMAND_END()
|
|||
|
DLG_MESSAGE_END()
|
|||
|
|
|||
|
INT CControllerPageDlg::Create( UINT nID, HWND hWndParent )
|
|||
|
{
|
|||
|
m_nPageID = nID;
|
|||
|
|
|||
|
m_hWnd = ::CreateDialogParam( CApp::GetPlugin(), MAKEINTRESOURCE(nID),
|
|||
|
hWndParent, g_DlgProc, (LPARAM)this );
|
|||
|
return (m_hWnd)?TRUE:FALSE;
|
|||
|
}
|
|||
|
|
|||
|
void CControllerPageDlg::Destroy()
|
|||
|
{
|
|||
|
::DestroyWindow( m_hWnd );
|
|||
|
}
|
|||
|
|
|||
|
DLGCMD CControllerPageDlg::OnClicked( DLGCMDPARAM )
|
|||
|
{
|
|||
|
// DEBUGOUT( "CControllerPageDlg::OnClicked uID=%d\n", uID );
|
|||
|
|
|||
|
// <20>e<EFBFBD>̃^<5E>u<EFBFBD>R<EFBFBD><52><EFBFBD>g<EFBFBD><67><EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>X<EFBFBD><58><EFBFBD>ă<EFBFBD><C483>b<EFBFBD>Z<EFBFBD>[<5B>W<EFBFBD><57><EFBFBD>ʒm:p
|
|||
|
HWND hWndParent, hWndOwner;
|
|||
|
hWndParent = ::GetParent( m_hWnd );
|
|||
|
hWndOwner = ::GetParent( hWndParent );
|
|||
|
::SendMessage( hWndOwner, WM_COMMAND, MAKELPARAM(uID,STN_CLICKED), (LPARAM)::GetDlgItem(m_hWnd,uID) );
|
|||
|
}
|
|||
|
|
|||
|
DLGMSG CControllerPageDlg::OnInitDialog( DLGMSGPARAM )
|
|||
|
{
|
|||
|
// DEBUGOUT( "CControllerPageDlg::OnInitDialog\n" );
|
|||
|
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
|
|||
|
///////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|||
|
UINT CControllerDlg::ControllerPageID[] = {
|
|||
|
IDD_CTR_PLAYER1,
|
|||
|
IDD_CTR_PLAYER2,
|
|||
|
IDD_CTR_PLAYER3,
|
|||
|
IDD_CTR_PLAYER4,
|
|||
|
IDD_CTR_CRAZYCLIMBER,
|
|||
|
IDD_CTR_FAMLYTRAINER,
|
|||
|
IDD_CTR_EXCITINGBOXING,
|
|||
|
IDD_CTR_MAHJANG,
|
|||
|
IDD_CTR_NSFPLAYER,
|
|||
|
IDD_CTR_VSUNISYSTEM,
|
|||
|
0
|
|||
|
};
|
|||
|
|
|||
|
DLG_MESSAGE_BEGIN(CControllerDlg)
|
|||
|
// <20><><EFBFBD>b<EFBFBD>Z<EFBFBD>[<5B>W
|
|||
|
DLG_ON_MESSAGE( WM_INITDIALOG, OnInitDialog )
|
|||
|
DLG_ON_MESSAGE( WM_DESTROY, OnDestroy )
|
|||
|
DLG_ON_MESSAGE( WM_TIMER, OnTimer )
|
|||
|
// NOTIFY<46><59><EFBFBD>b<EFBFBD>Z<EFBFBD>[<5B>W
|
|||
|
DLG_NOTIFY_BEGIN()
|
|||
|
DLG_ON_NOTIFY( IDC_CTR_TAB, TCN_SELCHANGE, OnSelectChange )
|
|||
|
DLG_NOTIFY_END()
|
|||
|
// <20>R<EFBFBD>}<7D><><EFBFBD>h
|
|||
|
DLG_COMMAND_BEGIN()
|
|||
|
DLG_ON_COMMAND( IDOK, OnOK )
|
|||
|
DLG_ON_COMMAND( IDCANCEL, OnCancel )
|
|||
|
DLG_ON_COMMAND( IDDEFAULT, OnDefault )
|
|||
|
DLG_ON_COMMAND_NOTIFY_RANGE( IDC_CTR_UP, IDC_CTR_END, STN_CLICKED, OnClicked )
|
|||
|
DLG_ON_COMMAND_NOTIFY( IDC_CTR_SELECT_COMBO, CBN_SELCHANGE, OnSettingSelectChange )
|
|||
|
DLG_COMMAND_END()
|
|||
|
DLG_MESSAGE_END()
|
|||
|
|
|||
|
INT CControllerDlg::DoModal( HWND hWndParent )
|
|||
|
{
|
|||
|
m_bCancelMode = FALSE;
|
|||
|
m_TimerID = 0;
|
|||
|
|
|||
|
m_SettingSel = 0;
|
|||
|
|
|||
|
return ::DialogBoxParam( CApp::GetPlugin(), MAKEINTRESOURCE(IDD_CFG_CONTROLLER),
|
|||
|
hWndParent, g_DlgProc, (LPARAM)this );
|
|||
|
}
|
|||
|
|
|||
|
BOOL CControllerDlg::PreTranslateMessage( MSG* pMsg )
|
|||
|
{
|
|||
|
if( pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYLAST ) {
|
|||
|
// DEBUGOUT( "CControllerDlg::PreTranslateMessage WM_KEY????\n" );
|
|||
|
return m_bCancelMode;
|
|||
|
}
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
|
|||
|
void CControllerDlg::OnInitialMember()
|
|||
|
{
|
|||
|
HWND hWndCtrl = ::GetDlgItem( m_hWnd, IDC_CTR_TAB );
|
|||
|
RECT rcT, rcP, rcW;
|
|||
|
INT page;
|
|||
|
|
|||
|
// for( INT page = 0; ControllerPageID[page]; page++ ) {
|
|||
|
for( page = 0; ControllerPageID[page]; page++ ) {
|
|||
|
m_Page[page].Create( ControllerPageID[page], hWndCtrl );
|
|||
|
|
|||
|
// <20><><EFBFBD>O<EFBFBD>̎擾
|
|||
|
CHAR szTitle[256];
|
|||
|
::GetWindowText( m_Page[page].m_hWnd, szTitle, sizeof(szTitle) );
|
|||
|
|
|||
|
// <20><><EFBFBD>O<EFBFBD><4F><EFBFBD>擾<EFBFBD><E693BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L<EFBFBD><4C><EFBFBD>v<EFBFBD>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
LONG style;
|
|||
|
style = ::GetWindowLong( m_Page[page].m_hWnd, GWL_STYLE );
|
|||
|
style &= ~(WS_CAPTION|WS_BORDER|WS_OVERLAPPED);
|
|||
|
::SetWindowLong( m_Page[page].m_hWnd, GWL_STYLE, style );
|
|||
|
|
|||
|
// <20>T<EFBFBD>C<EFBFBD>Y<EFBFBD>ύX
|
|||
|
::GetWindowRect( m_Page[page].m_hWnd, &rcW );
|
|||
|
rcW.right -= ::GetSystemMetrics( SM_CXSIZEFRAME );
|
|||
|
rcW.bottom -= ::GetSystemMetrics( SM_CYCAPTION )+::GetSystemMetrics( SM_CYSIZEFRAME )*2;
|
|||
|
::SetWindowPos( m_Page[page].m_hWnd, NULL, 0, 0, RCWIDTH(rcW), RCHEIGHT(rcW), SWP_NOMOVE|SWP_NOZORDER );
|
|||
|
|
|||
|
// <20>^<5E>u<EFBFBD>ɖ<EFBFBD><C996>O<EFBFBD><4F><EFBFBD>ݒ肷<DD92><E882B7>
|
|||
|
TCITEM tcitem;
|
|||
|
tcitem.mask = TCIF_TEXT;
|
|||
|
tcitem.pszText = szTitle;
|
|||
|
TabCtrl_InsertItem( hWndCtrl, page, &tcitem );
|
|||
|
|
|||
|
// // <20>y<EFBFBD>[<5B>W<EFBFBD>ʒu<CA92>̕
|
|||
|
// ::GetClientRect( hWndCtrl, &rcT );
|
|||
|
// TabCtrl_AdjustRect( hWndCtrl, FALSE, &rcT );
|
|||
|
// ::GetWindowRect( m_Page[page].m_hWnd, &rcP );
|
|||
|
|
|||
|
// <20>v<EFBFBD>Z
|
|||
|
// rcW.left = rcT.left + (RCWIDTH(rcT)-RCWIDTH(rcP))/2;
|
|||
|
// rcW.top = rcT.top + (RCHEIGHT(rcT)-RCHEIGHT(rcP))/2;
|
|||
|
// rcW.right = rcW.left + RCWIDTH(rcP);
|
|||
|
// rcW.bottom = rcW.top + RCHEIGHT(rcP);
|
|||
|
// ::SetWindowPos( m_Page[page].m_hWnd, NULL, rcW.left, rcW.top, RCWIDTH(rcW), RCHEIGHT(rcW), SWP_NOZORDER|SWP_NOACTIVATE );
|
|||
|
|
|||
|
// <20>e<EFBFBD>y<EFBFBD>[<5B>W<EFBFBD>̃<EFBFBD><CC83>X<EFBFBD>g<EFBFBD>{<7B>b<EFBFBD>N<EFBFBD>X<EFBFBD>̐ݒ<CC90>
|
|||
|
if( page < 4 ) {
|
|||
|
HWND hWndList;
|
|||
|
hWndList = ::GetDlgItem( m_Page[page].m_hWnd, IDC_CTR_A_RAPID_LIST );
|
|||
|
::SendMessage( hWndList, LB_INSERTSTRING, 0, (LPARAM)" 10FPS" );
|
|||
|
::SendMessage( hWndList, LB_INSERTSTRING, 1, (LPARAM)" 15FPS" );
|
|||
|
::SendMessage( hWndList, LB_INSERTSTRING, 2, (LPARAM)" 20FPS" );
|
|||
|
::SendMessage( hWndList, LB_INSERTSTRING, 3, (LPARAM)" 30FPS" );
|
|||
|
hWndList = ::GetDlgItem( m_Page[page].m_hWnd, IDC_CTR_B_RAPID_LIST );
|
|||
|
::SendMessage( hWndList, LB_INSERTSTRING, 0, (LPARAM)" 10FPS" );
|
|||
|
::SendMessage( hWndList, LB_INSERTSTRING, 1, (LPARAM)" 15FPS" );
|
|||
|
::SendMessage( hWndList, LB_INSERTSTRING, 2, (LPARAM)" 20FPS" );
|
|||
|
::SendMessage( hWndList, LB_INSERTSTRING, 3, (LPARAM)" 30FPS" );
|
|||
|
}
|
|||
|
|
|||
|
// <20>{<7B>^<5E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̐ݒ<CC90>
|
|||
|
OnPageSetup( page );
|
|||
|
|
|||
|
::ShowWindow( m_Page[page].m_hWnd, (page==0)?SW_SHOW:SW_HIDE );
|
|||
|
}
|
|||
|
|
|||
|
// <20>y<EFBFBD>[<5B>W<EFBFBD>ʒu<CA92>Ē<EFBFBD><C492><EFBFBD>
|
|||
|
for( page = 0; ControllerPageID[page]; page++ ) {
|
|||
|
// <20>y<EFBFBD>[<5B>W<EFBFBD>ʒu<CA92>̕
|
|||
|
::GetClientRect( hWndCtrl, &rcT );
|
|||
|
TabCtrl_AdjustRect( hWndCtrl, FALSE, &rcT );
|
|||
|
::GetWindowRect( m_Page[page].m_hWnd, &rcP );
|
|||
|
|
|||
|
// <20>v<EFBFBD>Z
|
|||
|
rcW.left = rcT.left + (RCWIDTH(rcT)-RCWIDTH(rcP))/2;
|
|||
|
rcW.top = rcT.top + (RCHEIGHT(rcT)-RCHEIGHT(rcP))/2;
|
|||
|
rcW.right = rcW.left + RCWIDTH(rcP);
|
|||
|
rcW.bottom = rcW.top + RCHEIGHT(rcP);
|
|||
|
::SetWindowPos( m_Page[page].m_hWnd, NULL, rcW.left, rcW.top, RCWIDTH(rcW), RCHEIGHT(rcW), SWP_NOZORDER|SWP_NOACTIVATE );
|
|||
|
}
|
|||
|
|
|||
|
TabCtrl_SetCurSel( hWndCtrl, 0 );
|
|||
|
m_PageSel = 0;
|
|||
|
|
|||
|
m_PageNum = page;
|
|||
|
|
|||
|
// <20>ݒ<EFBFBD><DD92>R<EFBFBD><52><EFBFBD>{<7B>{<7B>b<EFBFBD>N<EFBFBD>X
|
|||
|
::SendDlgItemMessage( m_hWnd, IDC_CTR_SELECT_COMBO, CB_RESETCONTENT, 0, 0 );
|
|||
|
CHAR szStr[64];
|
|||
|
for( INT i = IDS_CTR_SELECT1; i <= IDS_CTR_SELECT2; i++ ) {
|
|||
|
CApp::LoadString( i, szStr, sizeof(szStr) );
|
|||
|
::SendDlgItemMessage( m_hWnd, IDC_CTR_SELECT_COMBO, CB_INSERTSTRING, (WPARAM)i-IDS_CTR_SELECT1, (LPARAM)szStr );
|
|||
|
}
|
|||
|
::SendDlgItemMessage( m_hWnd, IDC_CTR_SELECT_COMBO, CB_SETCURSEL, 0, 0 );
|
|||
|
}
|
|||
|
|
|||
|
void CControllerDlg::OnPageSetup( UINT nPage )
|
|||
|
{
|
|||
|
HWND hWnd = m_Page[nPage].m_hWnd;
|
|||
|
HWND hWndCtrl;
|
|||
|
INT nKey;
|
|||
|
LPCSTR lpStr;
|
|||
|
INT nOffset = m_SettingSel?32:0;
|
|||
|
|
|||
|
for( INT nID = IDC_CTR_UP; nID <= IDC_CTR_END; nID++ ) {
|
|||
|
if( (hWndCtrl = ::GetDlgItem( hWnd, nID )) ) {
|
|||
|
if( nPage < 4 ) {
|
|||
|
nKey = Config.controller.nButton[nPage][nID-IDC_CTR_UP+nOffset];
|
|||
|
} else if( ControllerPageID[nPage] == IDD_CTR_CRAZYCLIMBER ) {
|
|||
|
nKey = Config.controller.nExButton[0][nID-IDC_CTR_UP+nOffset];
|
|||
|
} else if( ControllerPageID[nPage] == IDD_CTR_FAMLYTRAINER ) {
|
|||
|
nKey = Config.controller.nExButton[1][nID-IDC_CTR_UP+nOffset];
|
|||
|
} else if( ControllerPageID[nPage] == IDD_CTR_EXCITINGBOXING ) {
|
|||
|
nKey = Config.controller.nExButton[2][nID-IDC_CTR_UP+nOffset];
|
|||
|
} else if( ControllerPageID[nPage] == IDD_CTR_MAHJANG ) {
|
|||
|
nKey = Config.controller.nExButton[3][nID-IDC_CTR_UP+nOffset];
|
|||
|
} else if( ControllerPageID[nPage] == IDD_CTR_NSFPLAYER ) {
|
|||
|
nKey = Config.controller.nNsfButton[nID-IDC_CTR_UP+nOffset];
|
|||
|
} else if( ControllerPageID[nPage] == IDD_CTR_VSUNISYSTEM ) {
|
|||
|
nKey = Config.controller.nVSUnisystem[nID-IDC_CTR_UP+nOffset];
|
|||
|
}
|
|||
|
if( (lpStr = DirectInput.SearchKeyName(nKey)) ) {
|
|||
|
::SetWindowText( hWndCtrl, lpStr );
|
|||
|
} else {
|
|||
|
::SetWindowText( hWndCtrl, "----" );
|
|||
|
}
|
|||
|
::InvalidateRect( hWndCtrl, NULL, TRUE );
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if( nPage < 4 ) {
|
|||
|
::SendDlgItemMessage( hWnd, IDC_CTR_A_RAPID_LIST, LB_SETCURSEL,
|
|||
|
(WPARAM)Config.controller.nRapid[nPage][0], 0 );
|
|||
|
::SendDlgItemMessage( hWnd, IDC_CTR_B_RAPID_LIST, LB_SETCURSEL,
|
|||
|
(WPARAM)Config.controller.nRapid[nPage][1], 0 );
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
DLGMSG CControllerDlg::OnInitDialog( DLGMSGPARAM )
|
|||
|
{
|
|||
|
// DEBUGOUT( "CControllerDlg::OnInitDialog\n" );
|
|||
|
m_ConfigSave = Config.controller;
|
|||
|
|
|||
|
OnInitialMember();
|
|||
|
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
|
|||
|
DLGMSG CControllerDlg::OnDestroy( DLGMSGPARAM )
|
|||
|
{
|
|||
|
// DEBUGOUT( "CControllerDlg::OnDestroy\n" );
|
|||
|
|
|||
|
// <20>`<60><><EFBFBD>C<EFBFBD><43><EFBFBD>h<EFBFBD>E<EFBFBD>C<EFBFBD><43><EFBFBD>h<EFBFBD>E<EFBFBD><45><EFBFBD>j<EFBFBD><6A>
|
|||
|
for( INT i = 0; i < m_PageNum; i++ ) {
|
|||
|
::DestroyWindow( m_Page[i].m_hWnd );
|
|||
|
}
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
|
|||
|
DLGNOTIFY CControllerDlg::OnSelectChange( DLGNOTIFYPARAM )
|
|||
|
{
|
|||
|
// DEBUGOUT( "CControllerDlg::OnSelectChange\n" );
|
|||
|
|
|||
|
HWND hWndCtrl = ::GetDlgItem( m_hWnd, IDC_CTR_TAB );
|
|||
|
m_PageSel = TabCtrl_GetCurSel( hWndCtrl );
|
|||
|
|
|||
|
OnPageSetup( m_PageSel );
|
|||
|
|
|||
|
for( INT i = 0; i < m_PageNum; i++ ) {
|
|||
|
if( i == m_PageSel ) {
|
|||
|
::ShowWindow( m_Page[i].m_hWnd, SW_SHOW );
|
|||
|
} else {
|
|||
|
::ShowWindow( m_Page[i].m_hWnd, SW_HIDE );
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if( m_TimerID ) {
|
|||
|
::KillTimer( m_hWnd, m_TimerID );
|
|||
|
m_TimerID = 0;
|
|||
|
m_ControlID = 0;
|
|||
|
// ::InvalidateRect( hWndCtrl, NULL, TRUE );
|
|||
|
}
|
|||
|
m_bCancelMode = FALSE;
|
|||
|
}
|
|||
|
|
|||
|
DLGNOTIFY CControllerDlg::OnSettingSelectChange( DLGCMDPARAM )
|
|||
|
{
|
|||
|
// DEBUGOUT( "CControllerDlg::OnSettingSelectChange\n" );
|
|||
|
|
|||
|
if( m_TimerID ) {
|
|||
|
::KillTimer( m_hWnd, m_TimerID );
|
|||
|
m_TimerID = 0;
|
|||
|
m_ControlID = 0;
|
|||
|
// ::InvalidateRect( ::GetDlgItem( m_hWnd, IDC_CTR_TAB ), NULL, TRUE );
|
|||
|
}
|
|||
|
m_bCancelMode = FALSE;
|
|||
|
|
|||
|
m_SettingSel = ::SendDlgItemMessage( m_hWnd, IDC_CTR_SELECT_COMBO, CB_GETCURSEL, 0, 0 );
|
|||
|
|
|||
|
OnPageSetup( m_PageSel );
|
|||
|
}
|
|||
|
|
|||
|
DLGCMD CControllerDlg::OnClicked( DLGCMDPARAM )
|
|||
|
{
|
|||
|
// DEBUGOUT( "CControllerDlg::OnClicked uID=%d\n", uID );
|
|||
|
if( !m_TimerID ) {
|
|||
|
m_ControlID = uID;
|
|||
|
m_TimerCount = 0;
|
|||
|
m_TimerID = ::SetTimer( m_hWnd, 1, 50, NULL );
|
|||
|
m_bCancelMode = TRUE;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
DLGMSG CControllerDlg::OnTimer( DLGMSGPARAM )
|
|||
|
{
|
|||
|
HWND hWndCtrl = ::GetDlgItem( m_Page[m_PageSel].m_hWnd, m_ControlID );
|
|||
|
INT nID = m_ControlID - IDC_CTR_UP;
|
|||
|
INT nOffset = m_SettingSel?32:0;
|
|||
|
|
|||
|
if( wParam == (WPARAM)m_TimerID ) {
|
|||
|
if( m_TimerCount == 0 )
|
|||
|
m_TimerStart = ::timeGetTime();
|
|||
|
m_TimerCount++;
|
|||
|
|
|||
|
DirectInput.Poll();
|
|||
|
|
|||
|
if( m_TimerCount > 60 ) {
|
|||
|
// TimeOut
|
|||
|
if( m_TimerID ) {
|
|||
|
::KillTimer( m_hWnd, m_TimerID );
|
|||
|
m_TimerID = 0;
|
|||
|
m_ControlID = 0;
|
|||
|
::InvalidateRect( hWndCtrl, NULL, TRUE );
|
|||
|
}
|
|||
|
m_bCancelMode = FALSE;
|
|||
|
} else {
|
|||
|
// Button push?
|
|||
|
BOOL bSet = FALSE;
|
|||
|
INT i;
|
|||
|
LPCSTR str;
|
|||
|
// Set cancel
|
|||
|
if( DirectInput.m_Sw[DIK_ESCAPE] ) {
|
|||
|
if( m_PageSel < 4 ) {
|
|||
|
Config.controller.nButton[m_PageSel][nID+nOffset] = 0;
|
|||
|
} else if( ControllerPageID[m_PageSel] == IDD_CTR_CRAZYCLIMBER ) {
|
|||
|
Config.controller.nExButton[0][nID+nOffset] = 0;
|
|||
|
} else if( ControllerPageID[m_PageSel] == IDD_CTR_FAMLYTRAINER ) {
|
|||
|
Config.controller.nExButton[1][nID+nOffset] = 0;
|
|||
|
} else if( ControllerPageID[m_PageSel] == IDD_CTR_EXCITINGBOXING ) {
|
|||
|
Config.controller.nExButton[2][nID+nOffset] = 0;
|
|||
|
} else if( ControllerPageID[m_PageSel] == IDD_CTR_MAHJANG ) {
|
|||
|
Config.controller.nExButton[3][nID+nOffset] = 0;
|
|||
|
} else if( ControllerPageID[m_PageSel] == IDD_CTR_NSFPLAYER ) {
|
|||
|
Config.controller.nNsfButton[nID+nOffset] = 0;
|
|||
|
} else if( ControllerPageID[m_PageSel] == IDD_CTR_VSUNISYSTEM ) {
|
|||
|
Config.controller.nVSUnisystem[nID+nOffset] = 0;
|
|||
|
}
|
|||
|
::SetWindowText( hWndCtrl, "----" );
|
|||
|
bSet = TRUE;
|
|||
|
} else {
|
|||
|
for( i = 0; i < 512; i++ ) {
|
|||
|
if( DirectInput.m_Sw[i] ) {
|
|||
|
if( (str=DirectInput.SearchKeyName( i )) ) {
|
|||
|
if( m_PageSel < 4 ) {
|
|||
|
Config.controller.nButton[m_PageSel][nID+nOffset] = i;
|
|||
|
} else if( ControllerPageID[m_PageSel] == IDD_CTR_CRAZYCLIMBER ) {
|
|||
|
Config.controller.nExButton[0][nID+nOffset] = i;
|
|||
|
} else if( ControllerPageID[m_PageSel] == IDD_CTR_FAMLYTRAINER ) {
|
|||
|
Config.controller.nExButton[1][nID+nOffset] = i;
|
|||
|
} else if( ControllerPageID[m_PageSel] == IDD_CTR_EXCITINGBOXING ) {
|
|||
|
Config.controller.nExButton[2][nID+nOffset] = i;
|
|||
|
} else if( ControllerPageID[m_PageSel] == IDD_CTR_MAHJANG ) {
|
|||
|
Config.controller.nExButton[3][nID+nOffset] = i;
|
|||
|
} else if( ControllerPageID[m_PageSel] == IDD_CTR_NSFPLAYER ) {
|
|||
|
Config.controller.nNsfButton[nID+nOffset] = i;
|
|||
|
} else if( ControllerPageID[m_PageSel] == IDD_CTR_VSUNISYSTEM ) {
|
|||
|
Config.controller.nVSUnisystem[nID+nOffset] = i;
|
|||
|
}
|
|||
|
::SetWindowText( hWndCtrl, str );
|
|||
|
bSet = TRUE;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if( bSet ) {
|
|||
|
// Button Pressed
|
|||
|
if( m_TimerID ) {
|
|||
|
::KillTimer( m_hWnd, m_TimerID );
|
|||
|
m_TimerID = 0;
|
|||
|
m_ControlID = 0;
|
|||
|
::InvalidateRect( hWndCtrl, NULL, TRUE );
|
|||
|
}
|
|||
|
m_bCancelMode = FALSE;
|
|||
|
} else {
|
|||
|
// Flashing
|
|||
|
HDC hDC = ::GetDC( hWndCtrl );
|
|||
|
RECT rc;
|
|||
|
::GetClientRect( hWndCtrl, &rc );
|
|||
|
DWORD c = ((::timeGetTime()-m_TimerStart)/3)&0xFF;
|
|||
|
if( c > 0x7F )
|
|||
|
c = 0x80 - (c - 0x7F);
|
|||
|
c *= 2;
|
|||
|
::SetBkColor( hDC, RGB(c,c,c) );
|
|||
|
::ExtTextOut( hDC, 0, 0, ETO_OPAQUE, &rc, NULL, 0, NULL );
|
|||
|
::ReleaseDC( hWndCtrl, hDC );
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
|
|||
|
DLGCMD CControllerDlg::OnOK( DLGCMDPARAM )
|
|||
|
{
|
|||
|
// DEBUGOUT( "CControllerDlg::OnOK\n" );
|
|||
|
|
|||
|
if( m_TimerID ) {
|
|||
|
::KillTimer( m_hWnd, m_TimerID );
|
|||
|
m_TimerID = 0;
|
|||
|
m_ControlID = 0;
|
|||
|
}
|
|||
|
m_bCancelMode = FALSE;
|
|||
|
|
|||
|
for( INT page = 0; page < 4; page++ ) {
|
|||
|
Config.controller.nRapid[page][0] = ::SendDlgItemMessage( m_Page[page].m_hWnd, IDC_CTR_A_RAPID_LIST, LB_GETCURSEL, 0, 0 );
|
|||
|
Config.controller.nRapid[page][1] = ::SendDlgItemMessage( m_Page[page].m_hWnd, IDC_CTR_B_RAPID_LIST, LB_GETCURSEL, 0, 0 );
|
|||
|
}
|
|||
|
|
|||
|
::EndDialog( m_hWnd, IDOK );
|
|||
|
}
|
|||
|
|
|||
|
DLGCMD CControllerDlg::OnCancel( DLGCMDPARAM )
|
|||
|
{
|
|||
|
// DEBUGOUT( "CControllerDlg::OnCancel\n" );
|
|||
|
// if( m_bCancelMode )
|
|||
|
// return;
|
|||
|
if( m_TimerID ) {
|
|||
|
::KillTimer( m_hWnd, m_TimerID );
|
|||
|
m_TimerID = 0;
|
|||
|
m_ControlID = 0;
|
|||
|
}
|
|||
|
m_bCancelMode = FALSE;
|
|||
|
|
|||
|
Config.controller = m_ConfigSave;
|
|||
|
|
|||
|
::EndDialog( m_hWnd, IDCANCEL );
|
|||
|
}
|
|||
|
|
|||
|
DLGCMD CControllerDlg::OnDefault( DLGCMDPARAM )
|
|||
|
{
|
|||
|
// DEBUGOUT( "CControllerDlg::OnDefault\n" );
|
|||
|
if( m_TimerID ) {
|
|||
|
::KillTimer( m_hWnd, m_TimerID );
|
|||
|
m_TimerID = 0;
|
|||
|
m_ControlID = 0;
|
|||
|
}
|
|||
|
m_bCancelMode = FALSE;
|
|||
|
|
|||
|
switch( ControllerPageID[m_PageSel] ) {
|
|||
|
case IDD_CTR_PLAYER1:
|
|||
|
Config.controller.DefaultController1();
|
|||
|
break;
|
|||
|
case IDD_CTR_PLAYER2:
|
|||
|
Config.controller.DefaultController2();
|
|||
|
break;
|
|||
|
case IDD_CTR_PLAYER3:
|
|||
|
Config.controller.DefaultController3();
|
|||
|
break;
|
|||
|
case IDD_CTR_PLAYER4:
|
|||
|
Config.controller.DefaultController4();
|
|||
|
break;
|
|||
|
case IDD_CTR_CRAZYCLIMBER:
|
|||
|
Config.controller.DefaultExController0();
|
|||
|
break;
|
|||
|
case IDD_CTR_FAMLYTRAINER:
|
|||
|
Config.controller.DefaultExController1();
|
|||
|
break;
|
|||
|
case IDD_CTR_EXCITINGBOXING:
|
|||
|
Config.controller.DefaultExController2();
|
|||
|
break;
|
|||
|
case IDD_CTR_MAHJANG:
|
|||
|
Config.controller.DefaultExController3();
|
|||
|
break;
|
|||
|
case IDD_CTR_NSFPLAYER:
|
|||
|
Config.controller.DefaultNsfController();
|
|||
|
break;
|
|||
|
case IDD_CTR_VSUNISYSTEM:
|
|||
|
Config.controller.DefaultVSUnisystem();
|
|||
|
break;
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
OnPageSetup( m_PageSel );
|
|||
|
}
|
|||
|
|