📄 controllerdlg.cpp
字号:
DLGMSG CControllerDlg::OnInitDialog( DLGMSGPARAM )
{
// DEBUGOUT( "CControllerDlg::OnInitDialog\n" );
m_ConfigSave = Config.controller;
OnInitialMember();
return TRUE;
}
DLGMSG CControllerDlg::OnDestroy( DLGMSGPARAM )
{
// DEBUGOUT( "CControllerDlg::OnDestroy\n" );
// 僠儍僀儖僪僂僀儞僪僂傪攋婞
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 );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -