// ================================= General =================================== void Interface_t::EnterIdle() { State = stIdle; DisplayMinLvl(); DisplayMaxLvl(); SettingChanged(); SettingsSave(); }
BOOL CProfileAssociationPage::OnCommand(WORD wNotifyCode, WORD wid, HWND hwndControl) { switch (wid) { case AddButton : if (wNotifyCode == BN_CLICKED) { CAddDeviceDialog cadd(this, m_hwnd); if (!cadd.bCanceled()) { UpdateDeviceListBox(); EnableApplyButton(); SettingChanged(TRUE); } return TRUE; } break; case RemoveButton : if (wNotifyCode == BN_CLICKED) { LRESULT i = SendDlgItemMessage(m_hwnd, DeviceListControl, LB_GETCURSEL, 0, 0); if (i == -1) return TRUE; unsigned uItem = (unsigned)SendDlgItemMessage(m_hwnd, DeviceListControl, LB_GETITEMDATA, i, 0); Dissociate(uItem); UpdateDeviceListBox(); EnableApplyButton(); SettingChanged(TRUE); return TRUE; } break; case DeviceListControl : if (wNotifyCode == LBN_SELCHANGE) { EnableWindow(GetDlgItem(m_hwnd, RemoveButton), -1 != SendDlgItemMessage(m_hwnd, DeviceListControl, LB_GETCURSEL, 0, 0)); return TRUE; } break; } return TRUE; }
//---------------------------------------------------------------------------------------------- // wmHScroll //---------------------------------------------------------------------------------------------- VOID CActuatorPage::wmHScroll( HWND Control ,WORD Request ) { // 「左アクチュエータ」からのメッセージ if( Control == GetDlgItem( Wnd, IDC_LEFT_ACTUATOR_LEVEL ) ) { // 現在の設定に反映する CurrentSetting->ActuatorLevel[INDEX_LEFT_ACTUATOR] = GetTrackBarPos( IDC_LEFT_ACTUATOR_LEVEL ); // 設定の変更を通知する SettingChanged(); } // 「右アクチュエータ」からのメッセージ if( Control == GetDlgItem( Wnd, IDC_RIGHT_ACTUATOR_LEVEL ) ) { // 現在の設定に反映する CurrentSetting->ActuatorLevel[INDEX_RIGHT_ACTUATOR] = GetTrackBarPos( IDC_RIGHT_ACTUATOR_LEVEL ); // 設定の変更を通知する SettingChanged(); } // 「振動の有効範囲」からのメッセージ if( Control == GetDlgItem( Wnd, IDC_ACTUATOR_THRESHOLD ) ) { // 現在の選択状態を退避する BOOL PrevSelecting = TrackBarSelecting; // トラック バーの範囲選択を行う SelectTrackBar( Control, Request, &TrackBarSelecting ); if( PrevSelecting != TrackBarSelecting ) { // 現在の設定に反映する GetTrackBarRange( IDC_ACTUATOR_THRESHOLD ,&CurrentSetting->ActuatorMinThreshold ,&CurrentSetting->ActuatorMaxThreshold ); // 設定の変更を通知する SettingChanged(); } } }
//---------------------------------------------------------------------------------------------- // wmHScroll //---------------------------------------------------------------------------------------------- VOID CStickPage::wmHScroll( HWND Control ,WORD Request ) { // 「有効範囲」からのメッセージ if( Control == GetDlgItem( Wnd, IDC_STICK_THRESHOLD ) ) { // 現在の選択状態を退避する BOOL PrevSelecting = TrackBarSelecting; // トラック バーの範囲選択を行う SelectTrackBar( Control, Request, &TrackBarSelecting ); if( PrevSelecting != TrackBarSelecting ) { // 現在の設定に反映する GetTrackBarRange( IDC_STICK_THRESHOLD ,&CurrentSetting->StickMinThreshold[INDEX_LEFT_STICK] ,&CurrentSetting->StickMaxThreshold[INDEX_LEFT_STICK] ); CurrentSetting->StickMinThreshold[INDEX_RIGHT_STICK] = CurrentSetting->StickMinThreshold[INDEX_LEFT_STICK]; CurrentSetting->StickMaxThreshold[INDEX_RIGHT_STICK] = CurrentSetting->StickMaxThreshold[INDEX_LEFT_STICK]; // 設定の変更を通知する SettingChanged(); } } // 「スティックの入力閾値」からのメッセージ if( Control == GetDlgItem( Wnd, IDC_STICK_HAT_SWITCH_THRESHOLD ) ) { // 現在の設定に反映する CurrentSetting->StickHatSwitchThreshold[INDEX_LEFT_STICK] = GetTrackBarPos( IDC_STICK_HAT_SWITCH_THRESHOLD ); CurrentSetting->StickHatSwitchThreshold[INDEX_RIGHT_STICK] = CurrentSetting->StickHatSwitchThreshold[INDEX_LEFT_STICK]; // 設定の変更を通知する SettingChanged(); } }
BOOL CProfileAssociationPage::OnInit() { m_pcpTarget = new CProfile(m_csProfile); if (m_pcpTarget) { // Set profile filename SetDlgItemText(m_hwnd, ProfileFilename, m_pcpTarget->GetName()); // Update ICON to show installed/non-installed status. HICON hIcon = LoadIcon(CGlobals::Instance(), MAKEINTRESOURCE(m_pcpTarget->IsInstalled() ? DefaultIcon : UninstalledIcon)); if (hIcon) { SendDlgItemMessage(m_hwnd, StatusIcon, STM_SETICON, (WPARAM) hIcon, 0); } // Clean up add/delete list. m_cuaAdd.Empty(); m_cuaDelete.Empty(); // Build tentitive association list. ConstructAssociations(); // And then, fill up device listbox UpdateDeviceListBox(); // And set focus on AddButton. SetFocus(GetDlgItem(m_hwnd,AddButton)); DisableApplyButton(); SettingChanged(FALSE); return TRUE; } else { return FALSE; } }
//---------------------------------------------------------------------------------------------- // wmCommand //---------------------------------------------------------------------------------------------- VOID CActuatorPage::wmCommand( HWND Control ,WORD ControlID ,WORD NotifyMessage ) { // コントロールによって処理を振り分ける switch( ControlID ) { case IDC_ACTUATOR: // 通知メッセージによって処理を振り分ける switch( NotifyMessage ) { case BN_CLICKED: // 現在の設定に反映する CurrentSetting->Actuator = GetCheckBoxState( ControlID ); // 設定の変更を通知する SettingChanged(); break; } break; } }
//---------------------------------------------------------------------------------------------- // wmCommand //---------------------------------------------------------------------------------------------- VOID CStickPage::wmCommand( HWND Control ,WORD ControlID ,WORD NotifyMessage ) { // コントロールによって処理を振り分ける switch( ControlID ) { case IDC_LEFT_STICK_USAGE: // 通知メッセージによって処理を振り分ける switch( NotifyMessage ) { case CBN_SELCHANGE: // 現在の設定に反映する CurrentSetting->StickUsage[INDEX_LEFT_STICK] = GetComboBoxIndex( ControlID ); // 設定の変更を通知する SettingChanged(); break; } break; case IDC_RIGHT_STICK_USAGE: // 通知メッセージによって処理を振り分ける switch( NotifyMessage ) { case CBN_SELCHANGE: // 現在の設定に反映する CurrentSetting->StickUsage[INDEX_RIGHT_STICK] = GetComboBoxIndex( ControlID ); // 設定の変更を通知する SettingChanged(); break; } break; case IDC_LEFT_STICK_REVERSE_Y: // 通知メッセージによって処理を振り分ける switch( NotifyMessage ) { case BN_CLICKED: // 現在の設定に反映する CurrentSetting->StickReverseY[INDEX_LEFT_STICK] = GetCheckBoxState( ControlID ); // 設定の変更を通知する SettingChanged(); break; } break; case IDC_RIGHT_STICK_REVERSE_Y: // 通知メッセージによって処理を振り分ける switch( NotifyMessage ) { case BN_CLICKED: // 現在の設定に反映する CurrentSetting->StickReverseY[INDEX_RIGHT_STICK] = GetCheckBoxState( ControlID ); // 設定の変更を通知する SettingChanged(); break; } break; } }
BOOL CProfileAssociationPage::OnNotify(int idCtrl, LPNMHDR pnmh) { switch (pnmh -> code) { case PSN_APPLY: { if (SettingChanged()) { // Disable apply button, because current request are // going to be "Applied". DisableApplyButton(); // We are going to update changed. SettingChanged(FALSE); // Remove any associations we're removing while (m_cuaDelete.Count()) { m_pcpTarget->Dissociate(m_pcpTarget->DeviceName(m_cuaDelete[0])); m_cuaDelete.Remove(0); } // Add any associations we're adding while (m_cuaAdd.Count()) { m_pcpTarget->Associate(m_pcpTarget->DeviceName(m_cuaAdd[0])); m_cuaAdd.Remove(0); } // Re-create CProfile object. // // !!! Need to be done some performance work here. delete m_pcpTarget; m_pcpTarget = new CProfile(m_csProfile); if (!m_pcpTarget) { // BUGBUG proper error should happen. return FALSE; } // Re-Build tentitive association list. ConstructAssociations(); UpdateDeviceListBox(); // check the install status to refect icon. HICON hIcon = LoadIcon(CGlobals::Instance(), MAKEINTRESOURCE(m_pcpTarget->IsInstalled() ? DefaultIcon : UninstalledIcon)); if (hIcon) { SendDlgItemMessage(m_hwnd, StatusIcon, STM_SETICON, (WPARAM) hIcon, 0); } } break; } } return TRUE; }