/* ダイアログのメッセージ処理 */ INT_PTR CDlgInput1::DispatchEvent( HWND hwndDlg, // handle to dialog box UINT uMsg, // message WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ) { WORD wNotifyCode; WORD wID; // int nRet; switch( uMsg ){ case WM_INITDIALOG: /* ダイアログデータの設定 */ // Modified by KEITA for WIN64 2003.9.6 ::SetWindowLongPtr( hwndDlg, DWLP_USER, lParam ); ::SetWindowText( hwndDlg, m_pszTitle ); /* ダイアログタイトル */ EditCtl_LimitText( ::GetDlgItem( hwndDlg, IDC_EDIT_INPUT1 ), m_nMaxTextLen ); /* 入力サイズ上限 */ DlgItem_SetText( hwndDlg, IDC_EDIT_INPUT1, m_cmemText.GetStringPtr() ); /* テキスト */ ::SetWindowText( ::GetDlgItem( hwndDlg, IDC_STATIC_MSG ), m_pszMessage ); /* メッセージ */ return TRUE; case WM_COMMAND: wNotifyCode = HIWORD(wParam); /* 通知コード */ wID = LOWORD(wParam); /* 項目ID、 コントロールID、 またはアクセラレータID */ switch( wNotifyCode ){ /* ボタン/チェックボックスがクリックされた */ case BN_CLICKED: switch( wID ){ case IDOK: m_cmemText.AllocStringBuffer( ::GetWindowTextLength( ::GetDlgItem( hwndDlg, IDC_EDIT_INPUT1 ) ) ); ::GetWindowText( ::GetDlgItem( hwndDlg, IDC_EDIT_INPUT1 ), m_cmemText.GetStringPtr(), m_nMaxTextLen + 1 ); /* テキスト */ ::EndDialog( hwndDlg, TRUE ); return TRUE; case IDCANCEL: ::EndDialog( hwndDlg, FALSE ); return TRUE; } break; //@@@ 2002.01.07 add } break; //@@@ 2002.01.07 add //@@@ 2002.01.07 add start case WM_HELP: { HELPINFO *p = (HELPINFO *)lParam; MyWinHelp( (HWND)p->hItemHandle, HELP_WM_HELP, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 } return TRUE; //Context Menu case WM_CONTEXTMENU: MyWinHelp( hwndDlg, HELP_CONTEXTMENU, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 return TRUE; //@@@ 2002.01.07 add end } return FALSE; }
/* ヘルプの目次を表示 目次タブを表示。問題があるバージョンでは、目次ページを表示。 */ void ShowWinHelpContents( HWND hwnd ) { if ( HasWinHelpContentsProblem() ){ /* 目次ページを表示する */ MyWinHelp( hwnd, HELP_CONTENTS , 0 ); // 2006.10.10 ryoji MyWinHelpに変更 return; } /* 目次タブを表示する */ MyWinHelp( hwnd, HELP_COMMAND, (ULONG_PTR)"CONTENTS()" ); // 2006.10.10 ryoji MyWinHelpに変更 return; }
BOOL CDlgCompare::OnBnClicked( int wID ) { switch( wID ){ case IDC_BUTTON_HELP: /* 「内容比較」のヘルプ */ //Stonee, 2001/03/12 第四引数を、機能番号からヘルプトピック番号を調べるようにした MyWinHelp( GetHwnd(), HELP_CONTEXT, ::FuncID_To_HelpContextID(F_COMPARE) ); // 2006.10.10 ryoji MyWinHelpに変更に変更 return TRUE; // From Here Oct. 10, 2000 JEPRO added Ref. code はCDlgFind.cpp の OnBnClicked // チェックボックスをボタン化してCDlgCompare.cppに直接書き込んでみたが失敗 // ダイアログのボタンは下に不可視化しておいてあります。 // 以下の追加コードは全部消して結構ですから誰か作ってください。水平スクロールも入れてくれるとなおうれしいです。 // case IDC_BUTTON1: /* 上下に表示 */ // /* ダイアログデータの取得 */ // return TRUE; // case IDOK: /* 左右に表示 */ // /* ダイアログデータの取得 */ // HWND hwndCompareWnd; // HWND* phwndArr; // int i; // phwndArr = new HWND[2]; // phwndArr[0] = ::GetParent( m_hwndParent ); // phwndArr[1] = hwndCompareWnd; // for( i = 0; i < 2; ++i ){ // if( ::IsZoomed( phwndArr[i] ) ){ // ::ShowWindow( phwndArr[i], SW_RESTORE ); // } // } // ::TileWindows( NULL, MDITILE_VERTICAL, NULL, 2, phwndArr ); // delete [] phwndArr; // CloseDialog( 0 ); // return TRUE; // To Here Oct. 10, 2000 case IDOK: /* 左右に表示 */ /* ダイアログデータの取得 */ ::EndDialog( GetHwnd(), GetData() ); return TRUE; case IDCANCEL: ::EndDialog( GetHwnd(), FALSE ); return TRUE; } /* 基底クラスメンバ */ return CDialog::OnBnClicked( wID ); }
BOOL CDlgCtrlCode::OnBnClicked( int wID ) { switch( wID ) { case IDC_BUTTON_HELP: /* ヘルプ */ MyWinHelp( GetHwnd(), HELP_CONTEXT, ::FuncID_To_HelpContextID(F_CTRL_CODE_DIALOG) ); // 2006.10.10 ryoji MyWinHelpに変更に変更 return TRUE; case IDOK: /* 左右に表示 */ /* ダイアログデータの取得 */ ::EndDialog( GetHwnd(), GetData() ); return TRUE; case IDCANCEL: ::EndDialog( GetHwnd(), FALSE ); return TRUE; } /* 基底クラスメンバ */ return CDialog::OnBnClicked( wID ); }
/* メッセージ処理 */ INT_PTR CPropWin::DispatchEvent( HWND hwndDlg, // handle to dialog box UINT uMsg, // message WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ) { // From Here Sept. 9, 2000 JEPRO WORD wNotifyCode; WORD wID; // To Here Sept. 9, 2000 NMHDR* pNMHDR; NM_UPDOWN* pMNUD; int idCtrl; int nVal; //Sept.21, 2000 JEPRO スピン要素を加えたので復活させた switch( uMsg ){ case WM_INITDIALOG: /* ダイアログデータの設定 Window */ SetData( hwndDlg ); // Modified by KEITA for WIN64 2003.9.6 ::SetWindowLongPtr( hwndDlg, DWLP_USER, lParam ); /* ユーザーがエディット コントロールに入力できるテキストの長さを制限する */ /* ルーラー高さ */ EditCtl_LimitText( ::GetDlgItem( hwndDlg, IDC_EDIT_nRulerHeight ), 2 ); /* ルーラーとテキストの隙間 */ EditCtl_LimitText( ::GetDlgItem( hwndDlg, IDC_EDIT_nRulerBottomSpace ), 2 ); return TRUE; case WM_NOTIFY: idCtrl = (int)wParam; pNMHDR = (NMHDR*)lParam; pMNUD = (NM_UPDOWN*)lParam; switch( idCtrl ){ default: switch( pNMHDR->code ){ case PSN_HELP: OnHelp( hwndDlg, IDD_PROP_WIN ); return TRUE; case PSN_KILLACTIVE: // MYTRACE( _T("Window PSN_KILLACTIVE\n") ); /* ダイアログデータの取得 Window */ GetData( hwndDlg ); return TRUE; //@@@ 2002.01.03 YAZAKI 最後に表示していたシートを正しく覚えていないバグ修正 case PSN_SETACTIVE: m_nPageNum = ID_PROPCOM_PAGENUM_WIN; return TRUE; } break; case IDC_SPIN_nRulerHeight: /* ルーラ−の高さ */ nVal = ::GetDlgItemInt( hwndDlg, IDC_EDIT_nRulerHeight, NULL, FALSE ); if( pMNUD->iDelta < 0 ){ ++nVal; }else if( pMNUD->iDelta > 0 ){ --nVal; } if( nVal < IDC_SPIN_nRulerHeight_MIN ){ nVal = IDC_SPIN_nRulerHeight_MIN; } if( nVal > IDC_SPIN_nRulerHeight_MAX ){ nVal = IDC_SPIN_nRulerHeight_MAX; } ::SetDlgItemInt( hwndDlg, IDC_EDIT_nRulerHeight, nVal, FALSE ); return TRUE; case IDC_SPIN_nRulerBottomSpace: /* ルーラーとテキストの隙間 */ nVal = ::GetDlgItemInt( hwndDlg, IDC_EDIT_nRulerBottomSpace, NULL, FALSE ); if( pMNUD->iDelta < 0 ){ ++nVal; }else if( pMNUD->iDelta > 0 ){ --nVal; } if( nVal < 0 ){ nVal = 0; } if( nVal > 32 ){ nVal = 32; } ::SetDlgItemInt( hwndDlg, IDC_EDIT_nRulerBottomSpace, nVal, FALSE ); return TRUE; case IDC_SPIN_nLineNumberRightSpace: /* ルーラーとテキストの隙間 */ nVal = ::GetDlgItemInt( hwndDlg, IDC_EDIT_nLineNumberRightSpace, NULL, FALSE ); if( pMNUD->iDelta < 0 ){ ++nVal; }else if( pMNUD->iDelta > 0 ){ --nVal; } if( nVal < 0 ){ nVal = 0; } if( nVal > 32 ){ nVal = 32; } ::SetDlgItemInt( hwndDlg, IDC_EDIT_nLineNumberRightSpace, nVal, FALSE ); return TRUE; case IDC_SPIN_FUNCKEYWND_GROUPNUM: nVal = ::GetDlgItemInt( hwndDlg, IDC_EDIT_FUNCKEYWND_GROUPNUM, NULL, FALSE ); if( pMNUD->iDelta < 0 ){ ++nVal; }else if( pMNUD->iDelta > 0 ){ --nVal; } if( nVal < 1 ){ nVal = 1; } if( nVal > 12 ){ nVal = 12; } ::SetDlgItemInt( hwndDlg, IDC_EDIT_FUNCKEYWND_GROUPNUM, nVal, FALSE ); return TRUE; } break; //**** To Here Sept. 21, 2000 // From Here Sept. 9, 2000 JEPRO case WM_COMMAND: wNotifyCode = HIWORD(wParam); /* 通知コード */ wID = LOWORD(wParam); /* 項目ID、 コントロールID、 またはアクセラレータID */ switch( wNotifyCode ){ /* ボタン/チェックボックスがクリックされた */ case BN_CLICKED: switch( wID ){ // ファンクションキーを表示する時だけその位置指定をEnableに設定 case IDC_CHECK_DispFUNCKEYWND: EnableWinPropInput( hwndDlg ); break; // From Here 2004.05.13 Moca 「位置と大きさの設定」ボタン // ウィンドウ設定ダイアログにて起動時のウィンドウ状態指定 case IDC_BUTTON_WINSIZE: { CDlgWinSize cDlgWinSize; RECT rc; rc.right = m_Common.m_sWindow.m_nWinSizeCX; rc.bottom = m_Common.m_sWindow.m_nWinSizeCY; rc.top = m_Common.m_sWindow.m_nWinPosX; rc.left = m_Common.m_sWindow.m_nWinPosY; cDlgWinSize.DoModal( ::GetModuleHandle(NULL), hwndDlg, m_Common.m_sWindow.m_eSaveWindowSize, m_Common.m_sWindow.m_eSaveWindowPos, m_Common.m_sWindow.m_nWinSizeType, rc ); m_Common.m_sWindow.m_nWinSizeCX = rc.right; m_Common.m_sWindow.m_nWinSizeCY = rc.bottom; m_Common.m_sWindow.m_nWinPosX = rc.top; m_Common.m_sWindow.m_nWinPosY = rc.left; } break; // To Here 2004.05.13 Moca } break; } break; // To Here Sept. 9, 2000 //@@@ 2001.02.04 Start by MIK: Popup Help case WM_HELP: { HELPINFO *p = (HELPINFO *)lParam; MyWinHelp( (HWND)p->hItemHandle, HELP_WM_HELP, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 } return TRUE; /*NOTREACHED*/ //break; //@@@ 2001.02.04 End //@@@ 2001.12.22 Start by MIK: Context Menu Help //Context Menu case WM_CONTEXTMENU: MyWinHelp( hwndDlg, HELP_CONTEXTMENU, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 return TRUE; //@@@ 2001.12.22 End } return FALSE; }
/* メッセージ処理 */ INT_PTR CPropTab::DispatchEvent( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { NMHDR* pNMHDR; // int idCtrl; switch( uMsg ){ case WM_INITDIALOG: /* ダイアログデータの設定 Tab */ SetData( hwndDlg ); // Modified by KEITA for WIN64 2003.9.6 ::SetWindowLongPtr( hwndDlg, DWLP_USER, lParam ); /* ユーザーがエディット コントロールに入力できるテキストの長さを制限する */ return TRUE; case WM_NOTIFY: // idCtrl = (int)wParam; pNMHDR = (NMHDR*)lParam; // switch( idCtrl ){ // default: switch( pNMHDR->code ){ case PSN_HELP: OnHelp( hwndDlg, IDD_PROP_TAB ); return TRUE; case PSN_KILLACTIVE: /* ダイアログデータの取得 Tab */ GetData( hwndDlg ); return TRUE; //@@@ 2002.01.03 YAZAKI 最後に表示していたシートを正しく覚えていないバグ修正 case PSN_SETACTIVE: m_nPageNum = ID_PROPCOM_PAGENUM_TAB; return TRUE; } // break; /* default */ // } break; /* WM_NOTIFY */ case WM_COMMAND: { WORD wNotifyCode = HIWORD(wParam); /* 通知コード */ WORD wID = LOWORD(wParam); /* 項目ID、 コントロールID、 またはアクセラレータID */ if( wNotifyCode == BN_CLICKED ){ switch( wID ){ case IDC_CHECK_DispTabWnd: case IDC_CHECK_DispTabWndMultiWin: EnableTabPropInput( hwndDlg ); break; case IDC_BUTTON_TABFONT: LOGFONT lf = m_Common.m_sTabBar.m_lf; INT nPointSize = m_Common.m_sTabBar.m_nPointSize; if( MySelectFont( &lf, &nPointSize, hwndDlg, false) ){ m_Common.m_sTabBar.m_lf = lf; m_Common.m_sTabBar.m_nPointSize = nPointSize; // タブ フォント表示 // 2013/4/24 Uchi HFONT hFont = SetFontLabel( hwndDlg, IDC_STATIC_TABFONT, m_Common.m_sTabBar.m_lf, m_Common.m_sTabBar.m_nPointSize); if (m_hTabFont != NULL){ ::DeleteObject( m_hTabFont ); } m_hTabFont = hFont; } break; } } } break; //@@@ 2001.02.04 Start by MIK: Popup Help case WM_HELP: { HELPINFO *p = (HELPINFO *)lParam; MyWinHelp( (HWND)p->hItemHandle, HELP_WM_HELP, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 } return TRUE; /*NOTREACHED*/ //break; //@@@ 2001.02.04 End //@@@ 2001.12.22 Start by MIK: Context Menu Help //Context Menu case WM_CONTEXTMENU: MyWinHelp( hwndDlg, HELP_CONTEXTMENU, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 return TRUE; //@@@ 2001.12.22 End case WM_DESTROY: // タブ フォント破棄 // 2013/4/24 Uchi if (m_hTabFont != NULL) { ::DeleteObject( m_hTabFont ); m_hTabFont = NULL; } return TRUE; } return FALSE; }
/* Keybind メッセージ処理 */ INT_PTR CPropKeybind::DispatchEvent( HWND hwndDlg, // handle to dialog box UINT uMsg, // message WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ) { WORD wNotifyCode; WORD wID; HWND hwndCtl; NMHDR* pNMHDR; static HWND hwndCombo; static HWND hwndFuncList; static HWND hwndKeyList; static HWND hwndCheckShift; static HWND hwndCheckCtrl; static HWND hwndCheckAlt; static HWND hwndAssignedkeyList; // static HWND hwndLIST_KEYSFUNC; static HWND hwndEDIT_KEYSFUNC; // int nLength; int nAssignedKeyNum; int nIndex; int nIndex2; int nIndex3; int i; int j; EFunctionCode nFuncCode; static WCHAR pszLabel[256]; switch( uMsg ){ case WM_INITDIALOG: /* ダイアログデータの設定 Keybind */ SetData( hwndDlg ); // Modified by KEITA for WIN64 2003.9.6 ::SetWindowLongPtr( hwndDlg, DWLP_USER, lParam ); /* コントロールのハンドルを取得 */ hwndCombo = ::GetDlgItem( hwndDlg, IDC_COMBO_FUNCKIND ); hwndFuncList = ::GetDlgItem( hwndDlg, IDC_LIST_FUNC ); hwndAssignedkeyList = ::GetDlgItem( hwndDlg, IDC_LIST_ASSIGNEDKEYS ); hwndCheckShift = ::GetDlgItem( hwndDlg, IDC_CHECK_SHIFT ); hwndCheckCtrl = ::GetDlgItem( hwndDlg, IDC_CHECK_CTRL ); hwndCheckAlt = ::GetDlgItem( hwndDlg, IDC_CHECK_ALT ); hwndKeyList = ::GetDlgItem( hwndDlg, IDC_LIST_KEY ); // hwndLIST_KEYSFUNC = ::GetDlgItem( hwndDlg, IDC_LIST_KEYSFUNC ); hwndEDIT_KEYSFUNC = ::GetDlgItem( hwndDlg, IDC_EDIT_KEYSFUNC ); /* キー選択時の処理 */ // From Here Oct. 14, 2000 JEPRO わかりにくいので選択しないように変更 //Oct. 17, 2000 JEPRO 復活! // /* キーリストの先頭の項目を選択(リストボックス)*/ List_SetCurSel( hwndKeyList, 0 ); //Oct. 14, 2000 JEPRO ここをコメントアウトすると先頭項目が選択されなくなる ::SendMessageCmd( hwndDlg, WM_COMMAND, MAKELONG( IDC_LIST_KEY, LBN_SELCHANGE ), (LPARAM)hwndKeyList ); //Oct. 14, 2000 JEPRO ここはどっちでもいい?(わからん) // To Here Oct. 14, 2000 ::SendMessageCmd( hwndDlg, WM_COMMAND, MAKELONG( IDC_COMBO_FUNCKIND, CBN_SELCHANGE ), (LPARAM)hwndCombo ); ::SetTimer( hwndDlg, 1, 300, NULL ); // 2007.11.02 ryoji return TRUE; case WM_NOTIFY: pNMHDR = (NMHDR*)lParam; switch( pNMHDR->code ){ case PSN_HELP: // OnHelp( hwndDlg, IDD_PROP1P5 ); // Sept. 9, 2000 JEPRO 実際のID名に変更 OnHelp( hwndDlg, IDD_PROP_KEYBIND ); return TRUE; case PSN_KILLACTIVE: // MYTRACE( _T("Keybind PSN_KILLACTIVE\n") ); /* ダイアログデータの取得 Keybind */ GetData( hwndDlg ); return TRUE; //@@@ 2002.01.03 YAZAKI 最後に表示していたシートを正しく覚えていないバグ修正 case PSN_SETACTIVE: m_nPageNum = ID_PROPCOM_PAGENUM_KEYBOARD; // 表示を更新する(マクロ設定画面でのマクロ名変更を反映) // 2007.11.02 ryoji nIndex = List_GetCurSel( hwndKeyList ); nIndex2 = Combo_GetCurSel( hwndCombo ); nIndex3 = List_GetCurSel( hwndFuncList ); if( nIndex != LB_ERR ){ ::SendMessageAny( hwndDlg, WM_COMMAND, MAKEWPARAM( IDC_LIST_KEY, LBN_SELCHANGE ), (LPARAM)hwndKeyList ); } if( nIndex2 != CB_ERR ){ ::SendMessageAny( hwndDlg, WM_COMMAND, MAKEWPARAM( IDC_COMBO_FUNCKIND, CBN_SELCHANGE ), (LPARAM)hwndCombo ); if( nIndex3 != LB_ERR ){ List_SetCurSel( hwndFuncList, nIndex3 ); } } return TRUE; } break; case WM_COMMAND: wNotifyCode = HIWORD(wParam); /* 通知コード */ wID = LOWORD(wParam); /* 項目ID、 コントロールID、 またはアクセラレータID */ hwndCtl = (HWND) lParam; /* コントロールのハンドル */ switch( wNotifyCode ){ /* ボタン/チェックボックスがクリックされた */ case BN_CLICKED: switch( wID ){ case IDC_BUTTON_IMPORT: /* インポート */ /* Keybind:キー割り当て設定をインポートする */ Import( hwndDlg ); return TRUE; case IDC_BUTTON_EXPORT: /* エクスポート */ /* Keybind:キー割り当て設定をエクスポートする */ Export( hwndDlg ); return TRUE; case IDC_BUTTON_ASSIGN: /* 割付 */ nIndex = List_GetCurSel( hwndKeyList ); nIndex2 = Combo_GetCurSel( hwndCombo ); nIndex3 = List_GetCurSel( hwndFuncList ); if( nIndex == LB_ERR || nIndex2 == CB_ERR || nIndex3 == LB_ERR ){ return TRUE; } nFuncCode = m_cLookup.Pos2FuncCode( nIndex2, nIndex3 ); // Oct. 2, 2001 genta i = 0; if( ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_SHIFT ) ){ i |= _SHIFT; } if( ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_CTRL ) ){ i |= _CTRL; } if( ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_ALT ) ){ i |= _ALT; } m_Common.m_sKeyBind.m_pKeyNameArr[nIndex].m_nFuncCodeArr[i] = nFuncCode; ::SendMessageCmd( hwndDlg, WM_COMMAND, MAKELONG( IDC_LIST_KEY, LBN_SELCHANGE ), (LPARAM)hwndKeyList ); ::SendMessageCmd( hwndDlg, WM_COMMAND, MAKELONG( IDC_LIST_FUNC, LBN_SELCHANGE ), (LPARAM)hwndFuncList ); return TRUE; case IDC_BUTTON_RELEASE: /* 解除 */ nIndex = List_GetCurSel( hwndKeyList ); if( nIndex == LB_ERR ){ return TRUE; } nFuncCode = F_DEFAULT; i = 0; if( ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_SHIFT ) ){ i |= _SHIFT; } if( ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_CTRL ) ){ i |= _CTRL; } if( ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_ALT ) ){ i |= _ALT; } m_Common.m_sKeyBind.m_pKeyNameArr[nIndex].m_nFuncCodeArr[i] = nFuncCode; ::SendMessageCmd( hwndDlg, WM_COMMAND, MAKELONG( IDC_LIST_KEY, LBN_SELCHANGE ), (LPARAM)hwndKeyList ); ::SendMessageCmd( hwndDlg, WM_COMMAND, MAKELONG( IDC_LIST_FUNC, LBN_SELCHANGE ), (LPARAM)hwndFuncList ); return TRUE; } break; /* BN_CLICKED */ } if( hwndCheckShift == hwndCtl || hwndCheckCtrl == hwndCtl || hwndCheckAlt == hwndCtl ){ switch( wNotifyCode ){ case BN_CLICKED: ChangeKeyList( hwndDlg ); return TRUE; } }else if( hwndKeyList == hwndCtl ){ switch( wNotifyCode ){ case LBN_SELCHANGE: nIndex = List_GetCurSel( hwndKeyList ); i = 0; if( ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_SHIFT ) ){ i |= _SHIFT; } if( ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_CTRL ) ){ i |= _CTRL; } if( ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_ALT ) ){ i |= _ALT; } nFuncCode = m_Common.m_sKeyBind.m_pKeyNameArr[nIndex].m_nFuncCodeArr[i]; // Oct. 2, 2001 genta // 2007.11.02 ryoji F_DISABLEなら未割付 if( nFuncCode == F_DISABLE ){ auto_strncpy( pszLabel, LSW(STR_PROPCOMKEYBIND_UNASSIGN), _countof(pszLabel) - 1 ); pszLabel[_countof(pszLabel) - 1] = L'\0'; }else{ m_cLookup.Funccode2Name( nFuncCode, pszLabel, 255 ); } Wnd_SetText( hwndEDIT_KEYSFUNC, pszLabel ); return TRUE; } }else if( hwndFuncList == hwndCtl ){ switch( wNotifyCode ){ case LBN_SELCHANGE: nIndex = List_GetCurSel( hwndKeyList ); nIndex2 = Combo_GetCurSel( hwndCombo ); nIndex3 = List_GetCurSel( hwndFuncList ); nFuncCode = m_cLookup.Pos2FuncCode( nIndex2, nIndex3 ); // Oct. 2, 2001 genta /* 機能に対応するキー名の取得(複数) */ CNativeT** ppcAssignedKeyList; nAssignedKeyNum = CKeyBind::GetKeyStrList( /* 機能に対応するキー名の取得(複数) */ G_AppInstance(), m_Common.m_sKeyBind.m_nKeyNameArrNum, (KEYDATA*)m_Common.m_sKeyBind.m_pKeyNameArr, &ppcAssignedKeyList, nFuncCode, FALSE // 2007.02.22 ryoji デフォルト機能は取得しない ); /* 割り当てキーリストをクリアして値の設定 */ List_ResetContent( hwndAssignedkeyList ); if( 0 < nAssignedKeyNum){ for( j = 0; j < nAssignedKeyNum; ++j ){ /* デバッグモニタに出力 */ const TCHAR* cpszString = ppcAssignedKeyList[j]->GetStringPtr(); ::List_AddString( hwndAssignedkeyList, cpszString ); delete ppcAssignedKeyList[j]; } delete [] ppcAssignedKeyList; } return TRUE; } }else if( hwndCombo == hwndCtl){ switch( wNotifyCode ){ case CBN_SELCHANGE: nIndex2 = Combo_GetCurSel( hwndCombo ); /* 機能一覧に文字列をセット(リストボックス)*/ m_cLookup.SetListItem( hwndFuncList, nIndex2 ); // Oct. 2, 2001 genta return TRUE; } //@@@ 2001.11.08 add start MIK }else if( hwndAssignedkeyList == hwndCtl){ switch( wNotifyCode ){ case LBN_SELCHANGE: //case LBN_DBLCLK: { TCHAR buff[1024], *p; int ret; nIndex = List_GetCurSel( hwndAssignedkeyList ); auto_memset(buff, 0, _countof(buff)); ret = List_GetText( hwndAssignedkeyList, nIndex, buff); if( ret != LB_ERR ) { i = 0; p = buff; //SHIFT if( auto_memcmp(p, STR_SHIFT_PLUS, _tcslen(STR_SHIFT_PLUS)) == 0 ){ p += _tcslen(STR_SHIFT_PLUS); i |= _SHIFT; } //CTRL if( auto_memcmp(p, STR_CTRL_PLUS, _tcslen(STR_CTRL_PLUS)) == 0 ){ p += _tcslen(STR_CTRL_PLUS); i |= _CTRL; } //ALT if( auto_memcmp(p, STR_ALT_PLUS, _tcslen(STR_ALT_PLUS)) == 0 ){ p += _tcslen(STR_ALT_PLUS); i |= _ALT; } for(j = 0; j < m_Common.m_sKeyBind.m_nKeyNameArrNum; j++) { if( _tcscmp(m_Common.m_sKeyBind.m_pKeyNameArr[j].m_szKeyName, p) == 0 ) { List_SetCurSel( hwndKeyList, j); if( i & _SHIFT ) ::CheckDlgButton( hwndDlg, IDC_CHECK_SHIFT, BST_CHECKED ); //チェック else ::CheckDlgButton( hwndDlg, IDC_CHECK_SHIFT, BST_UNCHECKED ); //チェックをはずす if( i & _CTRL ) ::CheckDlgButton( hwndDlg, IDC_CHECK_CTRL, BST_CHECKED ); //チェック else ::CheckDlgButton( hwndDlg, IDC_CHECK_CTRL, BST_UNCHECKED ); //チェックをはずす if( i & _ALT ) ::CheckDlgButton( hwndDlg, IDC_CHECK_ALT, BST_CHECKED ); //チェック else ::CheckDlgButton( hwndDlg, IDC_CHECK_ALT, BST_UNCHECKED ); //チェックをはずす ::SendMessageCmd( hwndDlg, WM_COMMAND, MAKELONG( IDC_LIST_KEY, LBN_SELCHANGE ), (LPARAM)hwndKeyList ); // キー一覧の文字列も変更 ChangeKeyList( hwndDlg ); break; } } } return TRUE; } } //@@@ 2001.11.08 add end MIK } break; case WM_TIMER: // ボタンの有効/無効を切り替える // 2007.11.02 ryoji nIndex = List_GetCurSel( hwndKeyList ); nIndex2 = Combo_GetCurSel( hwndCombo ); nIndex3 = List_GetCurSel( hwndFuncList ); ::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_ASSIGN ), !( LB_ERR == nIndex || nIndex2 == CB_ERR || nIndex3 == LB_ERR ) ); ::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_RELEASE ), !( LB_ERR == nIndex ) ); break; case WM_DESTROY: ::KillTimer( hwndDlg, 1 ); // 2007.11.02 ryoji break; //@@@ 2001.02.04 Start by MIK: Popup Help case WM_HELP: { HELPINFO *p = (HELPINFO *)lParam; MyWinHelp( (HWND)p->hItemHandle, HELP_WM_HELP, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 } return TRUE; /*NOTREACHED*/ //break; //@@@ 2001.02.04 End //@@@ 2001.11.07 Start by MIK: Context Menu Help //Context Menu case WM_CONTEXTMENU: MyWinHelp( hwndDlg, HELP_CONTEXTMENU, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 return TRUE; //@@@ 2001.11.07 End } return FALSE; }
/* Toolbar メッセージ処理 */ INT_PTR CPropToolbar::DispatchEvent( HWND hwndDlg, // handle to dialog box UINT uMsg, // message WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ) { WORD wNotifyCode; WORD wID; HWND hwndCtl; NMHDR* pNMHDR; int idCtrl; static HWND hwndCombo; static HWND hwndFuncList; static HWND hwndResList; LPDRAWITEMSTRUCT pDis; int nIndex1; int nIndex2; // int nIndex3; int nNum; int i; int j; static int nListItemHeight; LRESULT lResult; switch( uMsg ){ case WM_INITDIALOG: /* コントロールのハンドルを取得 */ hwndCombo = ::GetDlgItem( hwndDlg, IDC_COMBO_FUNCKIND ); hwndFuncList = ::GetDlgItem( hwndDlg, IDC_LIST_FUNC ); hwndResList = ::GetDlgItem( hwndDlg, IDC_LIST_RES ); { // 2014.11.25 フォントの高さが正しくなかったバグを修正 CTextWidthCalc calc(hwndResList); int nFontHeight = calc.GetTextHeight(); nListItemHeight = std::max(nFontHeight, GetSystemMetrics(SM_CYSMICON)) + DpiScaleY(2); nToolBarListBoxTopMargin = (nListItemHeight - (nFontHeight + 1)) / 2; } /* ダイアログデータの設定 Toolbar */ SetData( hwndDlg ); // Modified by KEITA for WIN64 2003.9.6 ::SetWindowLongPtr( hwndDlg, DWLP_USER, lParam ); // From Here Oct.14, 2000 JEPRO added (Ref. CPropComCustmenu.cpp 内のWM_INITDIALOGを参考にした) /* キー選択時の処理 */ ::SendMessageCmd( hwndDlg, WM_COMMAND, MAKELONG( IDC_COMBO_FUNCKIND, CBN_SELCHANGE ), (LPARAM)hwndCombo ); // To Here Oct. 14, 2000 ::SetTimer( hwndDlg, 1, 300, NULL ); SetDlgItemsEnableState( hwndDlg, hwndResList, hwndFuncList ); return TRUE; case WM_DRAWITEM: idCtrl = (UINT) wParam; /* コントロールのID */ pDis = (LPDRAWITEMSTRUCT) lParam; /* 項目描画情報 */ switch( idCtrl ){ case IDC_LIST_RES: /* ツールバーボタン結果リスト */ case IDC_LIST_FUNC: /* ボタン一覧リスト */ DrawToolBarItemList( pDis ); /* ツールバーボタンリストのアイテム描画 */ return TRUE; } return TRUE; case WM_NOTIFY: idCtrl = (int)wParam; pNMHDR = (NMHDR*)lParam; switch( pNMHDR->code ){ case PSN_HELP: OnHelp( hwndDlg, IDD_PROP_TOOLBAR ); return TRUE; case PSN_KILLACTIVE: // MYTRACE( _T("PROP_TOOLBAR PSN_KILLACTIVE\n") ); /* ダイアログデータの取得 Toolbar */ GetData( hwndDlg ); return TRUE; //@@@ 2002.01.03 YAZAKI 最後に表示していたシートを正しく覚えていないバグ修正 case PSN_SETACTIVE: m_nPageNum = ID_PROPCOM_PAGENUM_TOOLBAR; return TRUE; } break; case WM_COMMAND: wNotifyCode = HIWORD( wParam ); /* 通知コード */ wID = LOWORD( wParam ); /* 項目ID、 コントロールID、 またはアクセラレータID */ hwndCtl = (HWND) lParam; /* コントロールのハンドル */ if( hwndResList == hwndCtl ){ switch( wNotifyCode ){ case LBN_SELCHANGE: return TRUE; } }else if( hwndCombo == hwndCtl ){ switch( wNotifyCode ){ case CBN_SELCHANGE: nIndex2 = Combo_GetCurSel( hwndCombo ); List_ResetContent( hwndFuncList ); /* 機能一覧に文字列をセット (リストボックス) */ // From Here Oct. 15, 2001 genta Lookupを使うように変更 nNum = m_cLookup.GetItemCount( nIndex2 ); for( i = 0; i < nNum; ++i ){ nIndex1 = m_cLookup.Pos2FuncCode( nIndex2, i ); int nbarNo = m_pcMenuDrawer->FindToolbarNoFromCommandId( nIndex1 ); if( nbarNo >= 0 ){ /* ツールバーボタンの情報をセット (リストボックス) */ lResult = ::Listbox_ADDDATA( hwndFuncList, (LPARAM)nbarNo ); if( lResult == LB_ERR || lResult == LB_ERRSPACE ){ break; } lResult = List_SetItemHeight( hwndFuncList, lResult, nListItemHeight ); } } return TRUE; } }else{ switch( wNotifyCode ){ /* ボタン/チェックボックスがクリックされた */ case BN_CLICKED: switch( wID ){ case IDC_BUTTON_INSERTSEPARATOR: nIndex1 = List_GetCurSel( hwndResList ); if( LB_ERR == nIndex1 ){ // break; nIndex1 = 0; } // From Here Apr. 13, 2002 genta nIndex1 = ::Listbox_INSERTDATA( hwndResList, nIndex1, 0 ); if( nIndex1 == LB_ERR || nIndex1 == LB_ERRSPACE ){ break; } // To Here Apr. 13, 2002 genta List_SetCurSel( hwndResList, nIndex1 ); break; // 2005/8/9 aroka 折返ボタンが押されたら、右のリストに「ツールバー折返」を追加する。 case IDC_BUTTON_INSERTWRAP: nIndex1 = List_GetCurSel( hwndResList ); if( LB_ERR == nIndex1 ){ // break; nIndex1 = 0; } // From Here Apr. 13, 2002 genta // 2010.06.25 Moca 折り返しのツールバーのボタン番号定数名を変更。最後ではなく固定値にする nIndex1 = ::Listbox_INSERTDATA( hwndResList, nIndex1, CMenuDrawer::TOOLBAR_BUTTON_F_TOOLBARWRAP ); if( nIndex1 == LB_ERR || nIndex1 == LB_ERRSPACE ){ break; } // To Here Apr. 13, 2002 genta List_SetCurSel( hwndResList, nIndex1 ); break; case IDC_BUTTON_DELETE: nIndex1 = List_GetCurSel( hwndResList ); if( LB_ERR == nIndex1 ){ break; } i = List_DeleteString( hwndResList, nIndex1 ); if( i == LB_ERR ){ break; } if( nIndex1 >= i ){ if( i == 0 ){ i = List_SetCurSel( hwndResList, 0 ); }else{ i = List_SetCurSel( hwndResList, i - 1 ); } }else{ i = List_SetCurSel( hwndResList, nIndex1 ); } break; case IDC_BUTTON_INSERT: nIndex1 = List_GetCurSel( hwndResList ); if( LB_ERR == nIndex1 ){ // break; nIndex1 = 0; } nIndex2 = List_GetCurSel( hwndFuncList ); if( LB_ERR == nIndex2 ){ break; } i = List_GetItemData( hwndFuncList, nIndex2 ); // From Here Apr. 13, 2002 genta nIndex1 = ::Listbox_INSERTDATA( hwndResList, nIndex1, i ); if( nIndex1 == LB_ERR || nIndex1 == LB_ERRSPACE ){ break; } // To Here Apr. 13, 2002 genta List_SetCurSel( hwndResList, nIndex1 + 1 ); break; case IDC_BUTTON_ADD: nIndex1 = List_GetCount( hwndResList ); nIndex2 = List_GetCurSel( hwndFuncList ); if( LB_ERR == nIndex2 ){ break; } i = List_GetItemData( hwndFuncList, nIndex2 ); // From Here Apr. 13, 2002 genta // ここでは i != 0 だとは思うけど、一応保険です。 nIndex1 = ::Listbox_INSERTDATA( hwndResList, nIndex1, i ); if( nIndex1 == LB_ERR || nIndex1 == LB_ERRSPACE ){ TopErrorMessage( NULL, LS(STR_PROPCOMTOOL_ERR05), nIndex1 ); break; } // To Here Apr. 13, 2002 genta List_SetCurSel( hwndResList, nIndex1 ); break; case IDC_BUTTON_UP: nIndex1 = List_GetCurSel( hwndResList ); if( LB_ERR == nIndex1 || 0 >= nIndex1 ){ break; } i = List_GetItemData( hwndResList, nIndex1 ); j = List_DeleteString( hwndResList, nIndex1 ); if( j == LB_ERR ){ break; } // From Here Apr. 13, 2002 genta nIndex1 = ::Listbox_INSERTDATA( hwndResList, nIndex1 - 1, i ); if( nIndex1 == LB_ERR || nIndex1 == LB_ERRSPACE ){ TopErrorMessage( NULL, LS(STR_PROPCOMTOOL_ERR05), nIndex1 ); break; } // To Here Apr. 13, 2002 genta List_SetCurSel( hwndResList, nIndex1 ); break; case IDC_BUTTON_DOWN: i = List_GetCount( hwndResList ); nIndex1 = List_GetCurSel( hwndResList ); if( LB_ERR == nIndex1 || nIndex1 + 1 >= i ){ break; } i = List_GetItemData( hwndResList, nIndex1 ); j = List_DeleteString( hwndResList, nIndex1 ); if( j == LB_ERR ){ break; } // From Here Apr. 13, 2002 genta nIndex1 = ::Listbox_INSERTDATA( hwndResList, nIndex1 + 1, i ); if( nIndex1 == LB_ERR || nIndex1 == LB_ERRSPACE ){ TopErrorMessage( NULL, LS(STR_PROPCOMTOOL_ERR05), nIndex1 ); break; } List_SetCurSel( hwndResList, nIndex1 ); // To Here Apr. 13, 2002 genta break; } break; } } break; case WM_TIMER: SetDlgItemsEnableState( hwndDlg, hwndResList, hwndFuncList ); break; case WM_DESTROY: ::KillTimer( hwndDlg, 1 ); break; //@@@ 2001.02.04 Start by MIK: Popup Help case WM_HELP: { HELPINFO *p = (HELPINFO *)lParam; MyWinHelp( (HWND)p->hItemHandle, HELP_WM_HELP, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 } return TRUE; /*NOTREACHED*/ //break; //@@@ 2001.02.04 End //@@@ 2001.12.22 Start by MIK: Context Menu Help //Context Menu case WM_CONTEXTMENU: MyWinHelp( hwndDlg, HELP_CONTEXTMENU, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 return TRUE; //@@@ 2001.12.22 End } return FALSE; }
//Stonee, 2001/05/18 機能番号からヘルプトピック番号を調べるようにした void CPropCommon::OnHelp( HWND hwndParent, int nPageID ) { int nContextID; switch( nPageID ){ case IDD_PROP_GENERAL: nContextID = ::FuncID_To_HelpContextID(F_OPTION_GENERAL); break; case IDD_PROP_FORMAT: nContextID = ::FuncID_To_HelpContextID(F_OPTION_FORMAT); break; case IDD_PROP_FILE: nContextID = ::FuncID_To_HelpContextID(F_OPTION_FILE); break; // Sept. 10, 2000 JEPRO ID名を実際の名前に変更するため以下の行はコメントアウト // 変更は少し後の行(Sept. 9, 2000)で行っている // case IDD_PROP1P5: // nContextID = 84; // break; case IDD_PROP_TOOLBAR: nContextID = ::FuncID_To_HelpContextID(F_OPTION_TOOLBAR); break; case IDD_PROP_KEYWORD: nContextID = ::FuncID_To_HelpContextID(F_OPTION_KEYWORD); break; case IDD_PROP_CUSTMENU: nContextID = ::FuncID_To_HelpContextID(F_OPTION_CUSTMENU); break; case IDD_PROP_HELPER: nContextID = ::FuncID_To_HelpContextID(F_OPTION_HELPER); break; // From Here Sept. 9, 2000 JEPRO 共通設定のヘルプボタンが効かなくなっていた部分を以下の追加によって修正 case IDD_PROP_EDIT: nContextID = ::FuncID_To_HelpContextID(F_OPTION_EDIT); break; case IDD_PROP_BACKUP: nContextID = ::FuncID_To_HelpContextID(F_OPTION_BACKUP); break; case IDD_PROP_WIN: nContextID = ::FuncID_To_HelpContextID(F_OPTION_WINDOW); break; case IDD_PROP_TAB: nContextID = ::FuncID_To_HelpContextID(F_OPTION_TAB); break; case IDD_PROP_STATUSBAR: nContextID = ::FuncID_To_HelpContextID(F_OPTION_STATUSBAR); break; case IDD_PROP_GREP: nContextID = ::FuncID_To_HelpContextID(F_OPTION_GREP); break; case IDD_PROP_KEYBIND: nContextID = ::FuncID_To_HelpContextID(F_OPTION_KEYBIND); break; // To Here Sept. 9, 2000 case IDD_PROP_MACRO: //@@@ 2002.01.02 nContextID = ::FuncID_To_HelpContextID(F_OPTION_MACRO); break; case IDD_PROP_FNAME: // 2002.12.09 Moca FNAME追加 nContextID = ::FuncID_To_HelpContextID(F_OPTION_FNAME); break; case IDD_PROP_PLUGIN: //@@@ 2002.01.02 nContextID = ::FuncID_To_HelpContextID(F_OPTION_PLUGIN); break; case IDD_PROP_MAINMENU: //@@@ 2010/6/2 Uchi nContextID = ::FuncID_To_HelpContextID(F_OPTION_MAINMENU); break; default: nContextID = -1; break; } if( -1 != nContextID ){ MyWinHelp( hwndParent, HELP_CONTEXT, nContextID ); // 2006.10.10 ryoji MyWinHelpに変更に変更 } return; }
BOOL CDlgGrep::OnBnClicked( int wID ) { switch( wID ){ case IDC_BUTTON_HELP: /* 「Grep」のヘルプ */ //Stonee, 2001/03/12 第四引数を、機能番号からヘルプトピック番号を調べるようにした MyWinHelp( GetHwnd(), HELP_CONTEXT, ::FuncID_To_HelpContextID(F_GREP_DIALOG) ); // 2006.10.10 ryoji MyWinHelpに変更に変更 return TRUE; case IDC_CHK_FROMTHISTEXT: /* この編集中のテキストから検索する */ // 2010.05.30 関数化 SetDataFromThisText( 0 != ::IsDlgButtonChecked( GetHwnd(), IDC_CHK_FROMTHISTEXT ) ); return TRUE; case IDC_BUTTON_CURRENTFOLDER: /* 現在編集中のファイルのフォルダ */ /* ファイルを開いているか */ if( m_szCurrentFilePath[0] != _T('\0') ){ TCHAR szWorkFolder[MAX_PATH]; TCHAR szWorkFile[MAX_PATH]; SplitPath_FolderAndFile( m_szCurrentFilePath, szWorkFolder, szWorkFile ); SetGrepFolder( GetItemHwnd(IDC_COMBO_FOLDER), szWorkFolder ); } else{ /* 現在のプロセスのカレントディレクトリを取得します */ TCHAR szWorkFolder[MAX_PATH]; ::GetCurrentDirectory( _countof( szWorkFolder ) - 1, szWorkFolder ); SetGrepFolder( GetItemHwnd(IDC_COMBO_FOLDER), szWorkFolder ); } return TRUE; case IDC_BUTTON_FOLDER_UP: { HWND hwnd = GetItemHwnd( IDC_COMBO_FOLDER ); TCHAR szFolder[_MAX_PATH]; ::GetWindowText( hwnd, szFolder, _countof(szFolder) ); std::vector<std::tstring> vPaths; CGrepAgent::CreateFolders( szFolder, vPaths ); if( 0 < vPaths.size() ){ // 最後のパスが操作対象 auto_strncpy( szFolder, vPaths.rbegin()->c_str(), _MAX_PATH ); szFolder[_MAX_PATH-1] = _T('\0'); if( DirectoryUp( szFolder ) ){ *(vPaths.rbegin()) = szFolder; szFolder[0] = _T('\0'); for( int i = 0 ; i < (int)vPaths.size(); i++ ){ TCHAR szFolderItem[_MAX_PATH]; auto_strncpy( szFolderItem, vPaths[i].c_str(), _MAX_PATH ); szFolderItem[_MAX_PATH-1] = _T('\0'); if( auto_strchr( szFolderItem, _T(';') ) ){ szFolderItem[0] = _T('"'); auto_strncpy( szFolderItem + 1, vPaths[i].c_str(), _MAX_PATH - 1 ); szFolderItem[_MAX_PATH-1] = _T('\0'); auto_strcat( szFolderItem, _T("\"") ); szFolderItem[_MAX_PATH-1] = _T('\0'); } if( i ){ auto_strcat( szFolder, _T(";") ); szFolder[_MAX_PATH-1] = _T('\0'); } auto_strcat_s( szFolder, _MAX_PATH, szFolderItem ); } ::SetWindowText( hwnd, szFolder ); } } } return TRUE; // case IDC_CHK_LOHICASE: /* 英大文字と英小文字を区別する */ // MYTRACE( _T("IDC_CHK_LOHICASE\n") ); // return TRUE; case IDC_CHK_REGULAREXP: /* 正規表現 */ // MYTRACE( _T("IDC_CHK_REGULAREXP ::IsDlgButtonChecked( GetHwnd(), IDC_CHK_REGULAREXP ) = %d\n"), ::IsDlgButtonChecked( GetHwnd(), IDC_CHK_REGULAREXP ) ); if( ::IsDlgButtonChecked( GetHwnd(), IDC_CHK_REGULAREXP ) ){ // From Here Jun. 26, 2001 genta // 正規表現ライブラリの差し替えに伴う処理の見直し if( !CheckRegexpVersion( GetHwnd(), IDC_STATIC_JRE32VER, true ) ){ ::CheckDlgButton( GetHwnd(), IDC_CHK_REGULAREXP, 0 ); }else{ // To Here Jun. 26, 2001 genta /* 英大文字と英小文字を区別する */ // 正規表現のときも選択できるように。 // ::CheckDlgButton( GetHwnd(), IDC_CHK_LOHICASE, 1 ); // ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHK_LOHICASE ), FALSE ); //2001/06/23 N.Nakatani /* 単語単位で検索 */ ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHK_WORD ), FALSE ); } }else{ /* 英大文字と英小文字を区別する */ // 正規表現のときも選択できるように。 // ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHK_LOHICASE ), TRUE ); // ::CheckDlgButton( GetHwnd(), IDC_CHK_LOHICASE, 0 ); //2001/06/23 N.Nakatani //単語単位のgrepが実装されたらコメントを外すと思います //2002/03/07実装してみた。 /* 単語単位で検索 */ ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHK_WORD ), TRUE ); } return TRUE; case IDC_BUTTON_FOLDER: /* フォルダ参照ボタン */ { TCHAR szFolder[MAX_PATH]; /* 検索フォルダ */ ::DlgItem_GetText( GetHwnd(), IDC_COMBO_FOLDER, szFolder, _MAX_PATH - 1 ); if( szFolder[0] == _T('\0') ){ ::GetCurrentDirectory( _countof( szFolder ), szFolder ); } if( SelectDir( GetHwnd(), LS(STR_DLGGREP1), szFolder, szFolder ) ){ SetGrepFolder( GetItemHwnd(IDC_COMBO_FOLDER), szFolder ); } } return TRUE; case IDC_CHECK_CP: { if( IsDlgButtonChecked( GetHwnd(), IDC_CHECK_CP ) ){ ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_CP ), FALSE ); HWND combo = ::GetDlgItem( GetHwnd(), IDC_COMBO_CHARSET ); CCodePage::AddComboCodePages(GetHwnd(), combo, -1); } } return TRUE; case IDC_CHK_DEFAULTFOLDER: /* フォルダの初期値をカレントフォルダにする */ { m_pShareData->m_Common.m_sSearch.m_bGrepDefaultFolder = ::IsDlgButtonChecked( GetHwnd(), IDC_CHK_DEFAULTFOLDER ); } return TRUE; case IDC_RADIO_OUTPUTSTYLE3: { ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_BASE_PATH ), FALSE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_SEP_FOLDER ),FALSE ); } break; case IDC_RADIO_OUTPUTSTYLE1: case IDC_RADIO_OUTPUTSTYLE2: { ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_BASE_PATH ), TRUE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_SEP_FOLDER ),TRUE ); } break; case IDOK: /* ダイアログデータの取得 */ if( GetData() ){ // ::EndDialog( hwndDlg, TRUE ); CloseDialog( TRUE ); } return TRUE; case IDCANCEL: // ::EndDialog( hwndDlg, FALSE ); CloseDialog( FALSE ); return TRUE; } /* 基底クラスメンバ */ return CDialog::OnBnClicked( wID ); }
/*! Pluginページのメッセージ処理 @param hwndDlg ダイアログボックスのWindow Handlw @param uMsg メッセージ @param wParam パラメータ1 @param lParam パラメータ2 */ INT_PTR CPropPlugin::DispatchEvent( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { NMHDR* pNMHDR; int idCtrl; WORD wNotifyCode; WORD wID; switch( uMsg ) { case WM_INITDIALOG: /* ダイアログデータの設定 Plugin */ InitDialog( hwndDlg ); SetData( hwndDlg ); // Modified by KEITA for WIN64 2003.9.6 ::SetWindowLongPtr( hwndDlg, DWLP_USER, lParam ); return TRUE; case WM_NOTIFY: idCtrl = (int)wParam; pNMHDR = (NMHDR*)lParam; switch( idCtrl ) { case IDC_PLUGINLIST: switch( pNMHDR->code ) { case LVN_ITEMCHANGED: { HWND hListView = ::GetDlgItem( hwndDlg, IDC_PLUGINLIST ); int sel = ListView_GetNextItem( hListView, -1, LVNI_SELECTED ); if( sel >= 0 ) { CPlugin* plugin = CPluginManager::getInstance()->GetPlugin(sel); if( plugin != NULL ) { ::SetWindowText( ::GetDlgItem( hwndDlg, IDC_LABEL_PLUGIN_Description ), to_tchar(plugin->m_sDescription.c_str()) ); ::SetWindowText( ::GetDlgItem( hwndDlg, IDC_LABEL_PLUGIN_Author ), to_tchar(plugin->m_sAuthor.c_str()) ); ::SetWindowText( ::GetDlgItem( hwndDlg, IDC_LABEL_PLUGIN_Version ), to_tchar(plugin->m_sVersion.c_str()) ); } else { ::SetWindowText( ::GetDlgItem( hwndDlg, IDC_LABEL_PLUGIN_Description ), _T("") ); ::SetWindowText( ::GetDlgItem( hwndDlg, IDC_LABEL_PLUGIN_Author ), _T("") ); ::SetWindowText( ::GetDlgItem( hwndDlg, IDC_LABEL_PLUGIN_Version ), _T("") ); } // 2010.08.21 明らかに使えないときはDisableにする EPluginState state = m_Common.m_sPlugin.m_PluginTable[sel].m_state; BOOL bEdit = (state != PLS_DELETED && state != PLS_NONE); ::EnableWindow( ::GetDlgItem( hwndDlg, IDC_PLUGIN_Remove ), bEdit ); ::EnableWindow( ::GetDlgItem( hwndDlg, IDC_PLUGIN_OPTION ), state == PLS_LOADED && plugin && plugin->m_options.size() > 0 ); ::EnableWindow( ::GetDlgItem( hwndDlg, IDC_PLUGIN_README ), (state == PLS_INSTALLED || state == PLS_UPDATED || state == PLS_LOADED || state == PLS_DELETED) && !GetReadMeFile(to_tchar(m_Common.m_sPlugin.m_PluginTable[sel].m_szName)).empty()); ::EnableWindow(::GetDlgItem(hwndDlg, IDC_PLUGIN_URL), state == PLS_LOADED && plugin && plugin->m_sUrl.size() > 0); } } break; case NM_DBLCLK: // リストビューへのダブルクリックで「プラグイン設定」を呼び出す if (::IsWindowEnabled(::GetDlgItem( hwndDlg, IDC_PLUGIN_OPTION ))) { DispatchEvent( hwndDlg, WM_COMMAND, MAKEWPARAM(IDC_PLUGIN_OPTION, BN_CLICKED), (LPARAM)::GetDlgItem( hwndDlg, IDC_PLUGIN_OPTION ) ); } break; } break; default: switch( pNMHDR->code ) { case PSN_HELP: OnHelp( hwndDlg, IDD_PROP_PLUGIN ); return TRUE; case PSN_KILLACTIVE: /* ダイアログデータの取得 Plugin */ GetData( hwndDlg ); return TRUE; case PSN_SETACTIVE: m_nPageNum = ID_PROPCOM_PAGENUM_PLUGIN; return TRUE; } break; } break; case WM_COMMAND: wNotifyCode = HIWORD(wParam); /* 通知コード */ wID = LOWORD(wParam); /* 項目ID、 コントロールID、 またはアクセラレータID */ switch( wNotifyCode ) { /* ボタン/チェックボックスがクリックされた */ case BN_CLICKED: switch( wID ) { case IDC_PLUGIN_SearchNew: // 新規プラグインを追加 GetData( hwndDlg ); CPluginManager::getInstance()->SearchNewPlugin( m_Common, hwndDlg ); if( m_bTrayProc ) { LoadPluginTemp(m_Common, *m_pcMenuDrawer); } SetData_LIST( hwndDlg ); //リストの再構築 break; case IDC_PLUGIN_INST_ZIP: // ZIPプラグインを追加 { static std::tstring sTrgDir; CDlgOpenFile cDlgOpenFile; TCHAR szPath[_MAX_PATH + 1]; _tcscpy( szPath, (sTrgDir.empty() ? CPluginManager::getInstance()->GetBaseDir().c_str() : sTrgDir.c_str())); // ファイルオープンダイアログの初期化 cDlgOpenFile.Create( G_AppInstance(), hwndDlg, _T("*.zip"), szPath ); if( cDlgOpenFile.DoModal_GetOpenFileName( szPath ) ) { GetData( hwndDlg ); CPluginManager::getInstance()->InstZipPlugin( m_Common, hwndDlg, szPath ); if( m_bTrayProc ) { LoadPluginTemp(m_Common, *m_pcMenuDrawer); } SetData_LIST( hwndDlg ); //リストの再構築 } // フォルダを記憶 TCHAR szFolder[_MAX_PATH + 1]; TCHAR szFname[_MAX_PATH + 1]; SplitPath_FolderAndFile(szPath, szFolder, szFname); sTrgDir = szFolder; } break; case IDC_CHECK_PluginEnable: // プラグインを有効にする EnablePluginPropInput( hwndDlg ); break; case IDC_PLUGIN_Remove: // プラグインを削除 { HWND hListView = ::GetDlgItem( hwndDlg, IDC_PLUGINLIST ); int sel = ListView_GetNextItem( hListView, -1, LVNI_SELECTED ); if( sel >= 0 ) { if( MYMESSAGEBOX( hwndDlg, MB_YESNO, GSTR_APPNAME, LS(STR_PROPCOMPLG_DELETE), m_Common.m_sPlugin.m_PluginTable[sel].m_szName ) == IDYES ) { CPluginManager::getInstance()->UninstallPlugin( m_Common, sel ); SetData_LIST( hwndDlg ); } } } break; case IDC_PLUGIN_OPTION: // プラグイン設定 // 2010/3/22 Uchi { HWND hListView = ::GetDlgItem( hwndDlg, IDC_PLUGINLIST ); int sel = ListView_GetNextItem( hListView, -1, LVNI_SELECTED ); if( sel >= 0 && m_Common.m_sPlugin.m_PluginTable[sel].m_state == PLS_LOADED ) { // 2010.08.21 プラグイン名(フォルダ名)の同一性の確認 CPlugin* plugin = CPluginManager::getInstance()->GetPlugin(sel); wstring sDirName = to_wchar(plugin->GetFolderName().c_str()); if( plugin && 0 == auto_stricmp(sDirName.c_str(), m_Common.m_sPlugin.m_PluginTable[sel].m_szName ) ) { CDlgPluginOption cDlgPluginOption; cDlgPluginOption.DoModal( ::GetModuleHandle(NULL), hwndDlg, this, sel ); } else { WarningMessage( hwndDlg, LS(STR_PROPCOMPLG_ERR1) ); } } } break; case IDC_PLUGIN_OpenFolder: // フォルダを開く { std::tstring sBaseDir = CPluginManager::getInstance()->GetBaseDir() + _T("."); if( ! IsDirectory(sBaseDir.c_str()) ) { if( ::CreateDirectory(sBaseDir.c_str(), NULL) == 0 ) { break; } } ::ShellExecute( NULL, _T("open"), sBaseDir.c_str(), NULL, NULL, SW_SHOW ); } break; case IDC_PLUGIN_README: // ReadMe表示 // 2011/11/2 Uchi { HWND hListView = ::GetDlgItem( hwndDlg, IDC_PLUGINLIST ); int sel = ListView_GetNextItem( hListView, -1, LVNI_SELECTED ); std::tstring sName = to_tchar(m_Common.m_sPlugin.m_PluginTable[sel].m_szName); // 個別フォルダ名 std::tstring sReadMeName = GetReadMeFile(sName); if (!sReadMeName.empty()) { if (!BrowseReadMe(sReadMeName)) { WarningMessage( hwndDlg, LS(STR_PROPCOMPLG_ERR2) ); } } else { WarningMessage( hwndDlg, LS(STR_PROPCOMPLG_ERR3) ); } } break; case IDC_PLUGIN_URL: { HWND hListView = ::GetDlgItem(hwndDlg, IDC_PLUGINLIST); int sel = ListView_GetNextItem(hListView, -1, LVNI_SELECTED); if (sel >= 0) { CPlugin* plugin = CPluginManager::getInstance()->GetPlugin(sel); if (plugin != NULL) { ::ShellExecute(NULL, _T("Open"), to_tchar(plugin->m_sUrl.c_str()), NULL, NULL, SW_SHOW); } } } break; } break; case CBN_DROPDOWN: //switch( wID ){ //default: // break; //} break; /* CBN_DROPDOWN */ case EN_KILLFOCUS: //switch( wID ){ //default: // break; //} break; } break; /* WM_COMMAND */ //@@@ 2001.02.04 Start by MIK: Popup Help case WM_HELP: { HELPINFO *p = (HELPINFO *)lParam; MyWinHelp( (HWND)p->hItemHandle, HELP_WM_HELP, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 } return TRUE; /*NOTREACHED*/ //break; //@@@ 2001.02.04 End //@@@ 2001.12.22 Start by MIK: Context Menu Help //Context Menu case WM_CONTEXTMENU: MyWinHelp( hwndDlg, HELP_CONTEXTMENU, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 return TRUE; //@@@ 2001.12.22 End } return FALSE; }
BOOL CDlgJump::OnBnClicked( int wID ) { switch( wID ){ case IDC_BUTTON_HELP: /* 「指定行へジャンプ」のヘルプ */ //Stonee, 2001/03/12 第四引数を、機能番号からヘルプトピック番号を調べるようにした MyWinHelp( GetHwnd(), HELP_CONTEXT, ::FuncID_To_HelpContextID(F_JUMP_DIALOG) ); // 2006.10.10 ryoji MyWinHelpに変更に変更 return TRUE; case IDC_CHECK_PLSQL: /* PL/SQLソースの有効行か */ if( BST_CHECKED == ::IsDlgButtonChecked( GetHwnd(), IDC_CHECK_PLSQL ) ){ ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_LABEL_PLSQL1 ), TRUE ); //Sept. 12, 2000 JEPRO ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_LABEL_PLSQL2 ), TRUE ); //Sept. 12, 2000 JEPRO ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_LABEL_PLSQL3 ), TRUE ); //Sept. 12, 2000 JEPRO ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_EDIT_PLSQL_E1 ), TRUE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_SPIN_PLSQL_E1 ), TRUE ); //Oct. 6, 2000 JEPRO ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_COMBO_PLSQLBLOCKS ), TRUE ); m_pShareData->m_bLineNumIsCRLF_ForJump = true; ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_RADIO_LINENUM_LAYOUT ), FALSE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_RADIO_LINENUM_CRLF ), FALSE ); }else{ ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_LABEL_PLSQL1 ), FALSE ); //Sept. 12, 2000 JEPRO ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_LABEL_PLSQL2 ), FALSE ); //Sept. 12, 2000 JEPRO ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_LABEL_PLSQL3 ), FALSE ); //Sept. 12, 2000 JEPRO ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_EDIT_PLSQL_E1 ), FALSE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_SPIN_PLSQL_E1 ), FALSE ); //Oct. 6, 2000 JEPRO ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_COMBO_PLSQLBLOCKS ), FALSE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_RADIO_LINENUM_LAYOUT ), TRUE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_RADIO_LINENUM_CRLF ), TRUE ); } /* 行番号の表示 false=折り返し単位/true=改行単位 */ if( m_pShareData->m_bLineNumIsCRLF_ForJump ){ ::CheckDlgButton( GetHwnd(), IDC_RADIO_LINENUM_LAYOUT, FALSE ); ::CheckDlgButton( GetHwnd(), IDC_RADIO_LINENUM_CRLF, TRUE ); }else{ ::CheckDlgButton( GetHwnd(), IDC_RADIO_LINENUM_LAYOUT, TRUE ); ::CheckDlgButton( GetHwnd(), IDC_RADIO_LINENUM_CRLF, FALSE ); } return TRUE; case IDC_BUTTON_JUMP: /* 指定行へジャンプ */ //Feb. 20, 2001 JEPRO ボタン名を[IDOK]→[IDC_BUTTON_JUMP]に変更 /* ダイアログデータの取得 */ //From Here Feb. 20, 2001 JEPRO 次行をコメントアウト (CEditView_Command.cpp の Command_JUMP も関係しているので参照のこと) // ::EndDialog( GetHwnd(), GetData() ); // 次行から追加 if( 0 < GetData() ){ CloseDialog( 1 ); }else{ OkMessage( GetHwnd(), LS(STR_DLGJUMP1) ); } //To Here Feb. 20, 2001 { //@@@ 2002.2.2 YAZAKI 指定行へジャンプを、ダイアログを表示するコマンドと、実際にジャンプするコマンドに分離。 CEditDoc* pCEditDoc = (CEditDoc*)m_lParam; pCEditDoc->m_pcEditWnd->GetActiveView().GetCommander().HandleCommand(F_JUMP, true, 0, 0, 0, 0); // ジャンプコマンド発行 } return TRUE; case IDCANCEL: ::EndDialog( GetHwnd(), FALSE ); return TRUE; } /* 基底クラスメンバ */ return CDialog::OnBnClicked( wID ); }
/* Keyword メッセージ処理 */ INT_PTR CPropKeyword::DispatchEvent( HWND hwndDlg, // handle to dialog box UINT uMsg, // message WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ) { WORD wNotifyCode; WORD wID; HWND hwndCtl; NMHDR* pNMHDR; int nIndex1; int i; LV_COLUMN lvc; LV_ITEM* plvi; static HWND hwndCOMBO_SET; static HWND hwndLIST_KEYWORD; RECT rc; CDlgInput1 cDlgInput1; wchar_t szKeyWord[MAX_KEYWORDLEN + 1]; LONG_PTR lStyle; LV_DISPINFO* plvdi; LV_KEYDOWN* pnkd; switch( uMsg ){ case WM_INITDIALOG: /* ダイアログデータの設定 Keyword */ SetData( hwndDlg ); // Modified by KEITA for WIN64 2003.9.6 ::SetWindowLongPtr( hwndDlg, DWLP_USER, lParam ); if( wParam == IDOK ){ // 独立ウィンドウ hwndCtl = ::GetDlgItem( hwndDlg, IDOK ); GetWindowRect( hwndCtl, &rc ); i = rc.bottom; // OK,CANCELボタンの下端 GetWindowRect( hwndDlg, &rc ); SetWindowPos( hwndDlg, NULL, 0, 0, rc.right-rc.left, i-rc.top+10, SWP_NOZORDER|SWP_NOMOVE ); std::tstring title = LS(STR_PROPCOMMON); title += _T(" - "); title += LS(STR_PROPCOMMON_KEYWORD); SetWindowText( hwndDlg, title.c_str() ); hwndCOMBO_SET = ::GetDlgItem( hwndDlg, IDC_COMBO_SET ); Combo_SetCurSel( hwndCOMBO_SET, m_nKeywordSet1 ); } else{ hwndCtl = ::GetDlgItem( hwndDlg, IDOK ); ShowWindow( hwndCtl, SW_HIDE ); hwndCtl = ::GetDlgItem( hwndDlg, IDCANCEL ); ShowWindow( hwndCtl, SW_HIDE ); } /* コントロールのハンドルを取得 */ hwndCOMBO_SET = ::GetDlgItem( hwndDlg, IDC_COMBO_SET ); hwndLIST_KEYWORD = ::GetDlgItem( hwndDlg, IDC_LIST_KEYWORD ); ::GetWindowRect( hwndLIST_KEYWORD, &rc ); lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; lvc.fmt = LVCFMT_LEFT; lvc.cx = rc.right - rc.left; lvc.pszText = const_cast<TCHAR*>(_T("")); lvc.iSubItem = 0; ListView_InsertColumn( hwndLIST_KEYWORD, 0, &lvc ); lStyle = ::GetWindowLongPtr( hwndLIST_KEYWORD, GWL_STYLE ); ::SetWindowLongPtr( hwndLIST_KEYWORD, GWL_STYLE, lStyle | LVS_SHOWSELALWAYS ); /* コントロール更新のタイミング用のタイマーを起動 */ ::SetTimer( hwndDlg, 1, 300, NULL ); return TRUE; case WM_NOTIFY: pNMHDR = (NMHDR*)lParam; pnkd = (LV_KEYDOWN *)lParam; plvdi = (LV_DISPINFO*)lParam; plvi = &plvdi->item; if( hwndLIST_KEYWORD == pNMHDR->hwndFrom ){ switch( pNMHDR->code ){ case NM_DBLCLK: // MYTRACE( _T("NM_DBLCLK \n") ); /* リスト中で選択されているキーワードを編集する */ Edit_List_KeyWord( hwndDlg, hwndLIST_KEYWORD ); return TRUE; case LVN_BEGINLABELEDIT: #ifdef _DEBUG MYTRACE( _T("LVN_BEGINLABELEDIT\n") ); MYTRACE( _T(" plvi->mask =[%xh]\n"), plvi->mask ); MYTRACE( _T(" plvi->iItem =[%d]\n"), plvi->iItem ); MYTRACE( _T(" plvi->iSubItem =[%d]\n"), plvi->iSubItem ); if (plvi->mask & LVIF_STATE) MYTRACE( _T(" plvi->state =[%xf]\n"), plvi->state ); MYTRACE( _T(" plvi->stateMask =[%xh]\n"), plvi->stateMask ); if (plvi->mask & LVIF_TEXT) MYTRACE( _T(" plvi->pszText =[%ts]\n"), plvi->pszText ); MYTRACE( _T(" plvi->cchTextMax=[%d]\n"), plvi->cchTextMax ); if (plvi->mask & LVIF_IMAGE) MYTRACE( _T(" plvi->iImage=[%d]\n"), plvi->iImage ); if (plvi->mask & LVIF_PARAM) MYTRACE( _T(" plvi->lParam=[%xh(%d)]\n"), plvi->lParam, plvi->lParam ); #endif return TRUE; case LVN_ENDLABELEDIT: #ifdef _DEBUG MYTRACE( _T("LVN_ENDLABELEDIT\n") ); MYTRACE( _T(" plvi->mask =[%xh]\n"), plvi->mask ); MYTRACE( _T(" plvi->iItem =[%d]\n"), plvi->iItem ); MYTRACE( _T(" plvi->iSubItem =[%d]\n"), plvi->iSubItem ); if (plvi->mask & LVIF_STATE) MYTRACE( _T(" plvi->state =[%xf]\n"), plvi->state ); MYTRACE( _T(" plvi->stateMask =[%xh]\n"), plvi->stateMask ); if (plvi->mask & LVIF_TEXT) MYTRACE( _T(" plvi->pszText =[%ts]\n"), plvi->pszText ); MYTRACE( _T(" plvi->cchTextMax=[%d]\n"), plvi->cchTextMax ); if (plvi->mask & LVIF_IMAGE) MYTRACE( _T(" plvi->iImage=[%d]\n"), plvi->iImage ); if (plvi->mask & LVIF_PARAM) MYTRACE( _T(" plvi->lParam=[%xh(%d)]\n"), plvi->lParam, plvi->lParam ); #endif if( NULL == plvi->pszText ){ return TRUE; } if( plvi->pszText[0] != _T('\0') ){ if( MAX_KEYWORDLEN < _tcslen( plvi->pszText ) ){ InfoMessage( hwndDlg, LS(STR_PROPCOMKEYWORD_ERR_LEN), MAX_KEYWORDLEN ); return TRUE; } /* n番目のセットにキーワードを編集 */ m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.UpdateKeyWord( m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx, plvi->lParam, to_wchar(plvi->pszText) ); }else{ /* n番目のセットのm番目のキーワードを削除 */ m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.DelKeyWord( m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx, plvi->lParam ); } /* ダイアログデータの設定 Keyword 指定キーワードセットの設定 */ SetKeyWordSet( hwndDlg, m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx ); ListView_SetItemState( hwndLIST_KEYWORD, plvi->iItem, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED ); return TRUE; case LVN_KEYDOWN: // MYTRACE( _T("LVN_KEYDOWN\n") ); switch( pnkd->wVKey ){ case VK_DELETE: /* リスト中で選択されているキーワードを削除する */ Delete_List_KeyWord( hwndDlg, hwndLIST_KEYWORD ); break; case VK_SPACE: /* リスト中で選択されているキーワードを編集する */ Edit_List_KeyWord( hwndDlg, hwndLIST_KEYWORD ); break; } return TRUE; } }else{ switch( pNMHDR->code ){ case PSN_HELP: OnHelp( hwndDlg, IDD_PROP_KEYWORD ); return TRUE; case PSN_KILLACTIVE: DEBUG_TRACE( _T("Keyword PSN_KILLACTIVE\n") ); /* ダイアログデータの取得 Keyword */ GetData( hwndDlg ); return TRUE; //@@@ 2002.01.03 YAZAKI 最後に表示していたシートを正しく覚えていないバグ修正 case PSN_SETACTIVE: m_nPageNum = ID_PROPCOM_PAGENUM_KEYWORD; return TRUE; } } break; case WM_COMMAND: wNotifyCode = HIWORD(wParam); /* 通知コード */ wID = LOWORD(wParam); /* 項目ID、 コントロールID、 またはアクセラレータID */ hwndCtl = (HWND) lParam; /* コントロールのハンドル */ if( hwndCOMBO_SET == hwndCtl){ switch( wNotifyCode ){ case CBN_SELCHANGE: nIndex1 = Combo_GetCurSel( hwndCOMBO_SET ); /* ダイアログデータの設定 Keyword 指定キーワードセットの設定 */ SetKeyWordSet( hwndDlg, nIndex1 ); return TRUE; } }else{ switch( wNotifyCode ){ /* ボタン/チェックボックスがクリックされた */ case BN_CLICKED: switch( wID ){ case IDC_BUTTON_ADDSET: /* セット追加 */ if( MAX_SETNUM <= m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nKeyWordSetNum ){ InfoMessage( hwndDlg, LS(STR_PROPCOMKEYWORD_SETMAX), MAX_SETNUM ); return TRUE; } /* モードレスダイアログの表示 */ szKeyWord[0] = L'\0'; // Oct. 5, 2002 genta 長さ制限の設定を修正.バッファオーバーランしていた. if( !cDlgInput1.DoModal( G_AppInstance(), hwndDlg, LS(STR_PROPCOMKEYWORD_SETNAME1), LS(STR_PROPCOMKEYWORD_SETNAME2), MAX_SETNAMELEN, szKeyWord ) ){ return TRUE; } if( szKeyWord[0] != L'\0' ){ /* セットの追加 */ m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.AddKeyWordSet( szKeyWord, false ); m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx = m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nKeyWordSetNum - 1; /* ダイアログデータの設定 Keyword */ SetData( hwndDlg ); } return TRUE; case IDC_BUTTON_DELSET: /* セット削除 */ nIndex1 = Combo_GetCurSel( hwndCOMBO_SET ); if( CB_ERR == nIndex1 ){ return TRUE; } /* 削除対象のセットを使用しているファイルタイプを列挙 */ static TCHAR pszLabel[1024]; _tcscpy( pszLabel, _T("") ); for( i = 0; i < GetDllShareData().m_nTypesCount; ++i ){ std::auto_ptr<STypeConfig> type(new STypeConfig()); CDocTypeManager().GetTypeConfig( CTypeConfig(i), *type ); // 2002/04/25 YAZAKI STypeConfig全体を保持する必要はないし、m_pShareDataを直接見ても問題ない。 if( nIndex1 == m_Types_nKeyWordSetIdx[i].index[0] || nIndex1 == m_Types_nKeyWordSetIdx[i].index[1] || nIndex1 == m_Types_nKeyWordSetIdx[i].index[2] || nIndex1 == m_Types_nKeyWordSetIdx[i].index[3] || nIndex1 == m_Types_nKeyWordSetIdx[i].index[4] || nIndex1 == m_Types_nKeyWordSetIdx[i].index[5] || nIndex1 == m_Types_nKeyWordSetIdx[i].index[6] || nIndex1 == m_Types_nKeyWordSetIdx[i].index[7] || nIndex1 == m_Types_nKeyWordSetIdx[i].index[8] || nIndex1 == m_Types_nKeyWordSetIdx[i].index[9] ){ _tcscat( pszLabel, _T("・") ); _tcscat( pszLabel, type->m_szTypeName ); _tcscat( pszLabel, _T("(") ); _tcscat( pszLabel, type->m_szTypeExts ); _tcscat( pszLabel, _T(")") ); _tcscat( pszLabel, _T("\n") ); } } if( IDCANCEL == ::MYMESSAGEBOX( hwndDlg, MB_OKCANCEL | MB_ICONQUESTION, GSTR_APPNAME, LS(STR_PROPCOMKEYWORD_SETDEL), m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.GetTypeName( nIndex1 ), pszLabel ) ){ return TRUE; } /* 削除対象のセットを使用しているファイルタイプのセットをクリア */ for( i = 0; i < GetDllShareData().m_nTypesCount; ++i ){ // 2002/04/25 YAZAKI STypeConfig全体を保持する必要はない。 for( int j = 0; j < MAX_KEYWORDSET_PER_TYPE; j++ ){ if( nIndex1 == m_Types_nKeyWordSetIdx[i].index[j] ){ m_Types_nKeyWordSetIdx[i].index[j] = -1; } else if( nIndex1 < m_Types_nKeyWordSetIdx[i].index[j] ){ m_Types_nKeyWordSetIdx[i].index[j]--; } } } /* n番目のセットを削除 */ m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.DelKeyWordSet( m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx ); /* ダイアログデータの設定 Keyword */ SetData( hwndDlg ); return TRUE; case IDC_BUTTON_KEYSETRENAME: // キーワードセットの名称変更 // モードレスダイアログの表示 wcscpy( szKeyWord, m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.GetTypeName( m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx ) ); { BOOL bDlgInputResult = cDlgInput1.DoModal( G_AppInstance(), hwndDlg, LS(STR_PROPCOMKEYWORD_RENAME1), LS(STR_PROPCOMKEYWORD_RENAME2), MAX_SETNAMELEN, szKeyWord ); if( !bDlgInputResult ){ return TRUE; } } if( szKeyWord[0] != L'\0' ){ m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.SetTypeName( m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx, szKeyWord ); // ダイアログデータの設定 Keyword SetData( hwndDlg ); } return TRUE; case IDC_CHECK_KEYWORDCASE: /* キーワードの英大文字小文字区別 */ // m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_bKEYWORDCASEArr[ m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx ] = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_KEYWORDCASE ); //MIK 2000.12.01 case sense m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.SetKeyWordCase(m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx, ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_KEYWORDCASE )); //MIK 2000.12.01 case sense return TRUE; case IDC_BUTTON_ADDKEYWORD: /* キーワード追加 */ /* n番目のセットのキーワードの数を返す */ if( !m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.CanAddKeyWord( m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx ) ){ InfoMessage( hwndDlg, LS(STR_PROPCOMKEYWORD_KEYMAX) ); return TRUE; } /* モードレスダイアログの表示 */ szKeyWord[0] = L'\0'; if( !cDlgInput1.DoModal( G_AppInstance(), hwndDlg, LS(STR_PROPCOMKEYWORD_KEYADD1), LS(STR_PROPCOMKEYWORD_KEYADD2), MAX_KEYWORDLEN, szKeyWord ) ){ return TRUE; } if( szKeyWord[0] != L'\0' ){ /* n番目のセットにキーワードを追加 */ if( 0 == m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.AddKeyWord( m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx, szKeyWord ) ){ // ダイアログデータの設定 Keyword 指定キーワードセットの設定 SetKeyWordSet( hwndDlg, m_Common.m_sSpecialKeyword.m_CKeyWordSetMgr.m_nCurrentKeyWordSetIdx ); } } return TRUE; case IDC_BUTTON_EDITKEYWORD: /* キーワード編集 */ /* リスト中で選択されているキーワードを編集する */ Edit_List_KeyWord( hwndDlg, hwndLIST_KEYWORD ); return TRUE; case IDC_BUTTON_DELKEYWORD: /* キーワード削除 */ /* リスト中で選択されているキーワードを削除する */ Delete_List_KeyWord( hwndDlg, hwndLIST_KEYWORD ); return TRUE; // From Here 2005.01.26 Moca case IDC_BUTTON_KEYCLEAN: Clean_List_KeyWord( hwndDlg, hwndLIST_KEYWORD ); return TRUE; // To Here 2005.01.26 Moca case IDC_BUTTON_IMPORT: /* インポート */ /* リスト中のキーワードをインポートする */ Import_List_KeyWord( hwndDlg, hwndLIST_KEYWORD ); return TRUE; case IDC_BUTTON_EXPORT: /* エクスポート */ /* リスト中のキーワードをエクスポートする */ Export_List_KeyWord( hwndDlg, hwndLIST_KEYWORD ); return TRUE; // 独立ウィンドウで使用する case IDOK: EndDialog( hwndDlg, IDOK ); break; case IDCANCEL: EndDialog( hwndDlg, IDCANCEL ); break; } break; /* BN_CLICKED */ } } break; /* WM_COMMAND */ case WM_TIMER: nIndex1 = ListView_GetNextItem( hwndLIST_KEYWORD, -1, LVNI_ALL | LVNI_SELECTED ); if( -1 == nIndex1 ){ ::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_EDITKEYWORD ), FALSE ); ::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_DELKEYWORD ), FALSE ); }else{ ::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_EDITKEYWORD ), TRUE ); ::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_DELKEYWORD ), TRUE ); } break; case WM_DESTROY: ::KillTimer( hwndDlg, 1 ); break; //@@@ 2001.02.04 Start by MIK: Popup Help case WM_HELP: { HELPINFO *p = (HELPINFO *)lParam; MyWinHelp( (HWND)p->hItemHandle, HELP_WM_HELP, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 } return TRUE; /*NOTREACHED*/ //break; //@@@ 2001.02.04 End //@@@ 2001.12.22 Start by MIK: Context Menu Help //Context Menu case WM_CONTEXTMENU: MyWinHelp( hwndDlg, HELP_CONTEXTMENU, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 return TRUE; //@@@ 2001.12.22 End } return FALSE; }
/* メッセージ処理 */ INT_PTR CPropBackup::DispatchEvent( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { WORD wNotifyCode; WORD wID; NMHDR* pNMHDR; NM_UPDOWN* pMNUD; int idCtrl; // int nVal; int nVal; //Sept.21, 2000 JEPRO スピン要素を加えたので復活させた // int nDummy; // int nCharChars; switch( uMsg ){ case WM_INITDIALOG: /* ダイアログデータの設定 Backup */ SetData( hwndDlg ); // Modified by KEITA for WIN64 2003.9.6 ::SetWindowLongPtr( hwndDlg, DWLP_USER, lParam ); /* ユーザーがエディット コントロールに入力できるテキストの長さを制限する */ // Oct. 5, 2002 genta バックアップフォルダ名の入力サイズを指定 // Oct. 8, 2002 genta 最後に付加される\の領域を残すためバッファサイズ-1しか入力させない EditCtl_LimitText( ::GetDlgItem( hwndDlg, IDC_EDIT_BACKUPFOLDER ), _countof2(m_Common.m_sBackup.m_szBackUpFolder) - 1 - 1 ); // 20051107 aroka EditCtl_LimitText( ::GetDlgItem( hwndDlg, IDC_EDIT_BACKUPFILE ), _countof2(m_Common.m_sBackup.m_szBackUpPathAdvanced) - 1 - 1 ); return TRUE; case WM_NOTIFY: idCtrl = (int)wParam; pNMHDR = (NMHDR*)lParam; pMNUD = (NM_UPDOWN*)lParam; switch( idCtrl ){ default: switch( pNMHDR->code ){ case PSN_HELP: OnHelp( hwndDlg, IDD_PROP_BACKUP ); return TRUE; case PSN_KILLACTIVE: /* ダイアログデータの取得 Backup */ GetData( hwndDlg ); return TRUE; //@@@ 2002.01.03 YAZAKI 最後に表示していたシートを正しく覚えていないバグ修正 case PSN_SETACTIVE: m_nPageNum = ID_PROPCOM_PAGENUM_BACKUP; return TRUE; } break; case IDC_SPIN_BACKUP_GENS: /* バックアップファイルの世代数 */ nVal = ::GetDlgItemInt( hwndDlg, IDC_EDIT_BACKUP_3, NULL, FALSE ); if( pMNUD->iDelta < 0 ){ ++nVal; }else if( pMNUD->iDelta > 0 ){ --nVal; } if( nVal < 1 ){ nVal = 1; } if( nVal > 99 ){ nVal = 99; } ::SetDlgItemInt( hwndDlg, IDC_EDIT_BACKUP_3, nVal, FALSE ); return TRUE; } //**** To Here Sept. 21, 2000 JEPRO ダイアログ要素にスピンを入れるので以下のWM_NOTIFYをコメントアウトにし下に修正を置いた break; case WM_COMMAND: wNotifyCode = HIWORD(wParam); /* 通知コード */ wID = LOWORD(wParam); /* 項目ID、 コントロールID、 またはアクセラレータID */ switch( wNotifyCode ){ /* ボタン/チェックボックスがクリックされた */ case BN_CLICKED: switch( wID ){ case IDC_RADIO_BACKUP_TYPE1: // Aug. 16, 2000 genta // バックアップ方式追加 case IDC_RADIO_BACKUP_TYPE3: case IDC_CHECK_BACKUP: case IDC_CHECK_BACKUPFOLDER: // Aug. 21, 2000 genta case IDC_CHECK_AUTOSAVE: // Jun. 5, 2004 genta IDC_RADIO_BACKUP_TYPE2を廃止して, // IDC_RADIO_BACKUP_DATETYPE1, IDC_RADIO_BACKUP_DATETYPE2を同列に持ってきた case IDC_RADIO_BACKUP_DATETYPE1: case IDC_RADIO_BACKUP_DATETYPE2: // 20051107 aroka case IDC_CHECK_BACKUP_ADVANCED: GetData( hwndDlg ); UpdateBackupFile( hwndDlg ); EnableBackupInput(hwndDlg); return TRUE; case IDC_BUTTON_BACKUP_FOLDER_REF: /* フォルダ参照 */ { /* バックアップを作成するフォルダ */ TCHAR szFolder[_MAX_PATH]; ::DlgItem_GetText( hwndDlg, IDC_EDIT_BACKUPFOLDER, szFolder, _countof( szFolder )); if( SelectDir( hwndDlg, LS(STR_PROPCOMBK_SEL_FOLDER), szFolder, szFolder ) ){ _tcscpy( m_Common.m_sBackup.m_szBackUpFolder, szFolder ); ::DlgItem_SetText( hwndDlg, IDC_EDIT_BACKUPFOLDER, m_Common.m_sBackup.m_szBackUpFolder ); } UpdateBackupFile( hwndDlg ); } return TRUE; default: // 20051107 aroka Default節 追加 GetData( hwndDlg ); UpdateBackupFile( hwndDlg ); } break; /* BN_CLICKED */ case EN_CHANGE: // 20051107 aroka フォルダが変更されたらリアルタイムにエディットボックス内を更新 switch( wID ){ case IDC_EDIT_BACKUPFOLDER: // 2009.02.21 ryoji 後ろに\が追加されるので,1文字余裕をみる必要がある. ::DlgItem_GetText( hwndDlg, IDC_EDIT_BACKUPFOLDER, m_Common.m_sBackup.m_szBackUpFolder, _countof2(m_Common.m_sBackup.m_szBackUpFolder) - 1 ); UpdateBackupFile( hwndDlg ); break; } break; /* EN_CHANGE */ } break; /* WM_COMMAND */ //@@@ 2001.02.04 Start by MIK: Popup Help case WM_HELP: { HELPINFO *p = (HELPINFO *)lParam; MyWinHelp( (HWND)p->hItemHandle, HELP_WM_HELP, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 } return TRUE; /*NOTREACHED*/ //break; //@@@ 2001.02.04 End //@@@ 2001.12.22 Start by MIK: Context Menu Help //Context Menu case WM_CONTEXTMENU: MyWinHelp( hwndDlg, HELP_CONTEXTMENU, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 return TRUE; //@@@ 2001.12.22 End } return FALSE; }
BOOL CDlgPrintSetting::OnBnClicked( int wID ) { TCHAR szWork[256]; CDlgInput1 cDlgInput1; HWND hwndComboSettingName; switch( wID ){ case IDC_BUTTON_HELP: /* 「印刷ページ設定」のヘルプ */ //Stonee, 2001/03/12 第四引数を、機能番号からヘルプトピック番号を調べるようにした MyWinHelp( GetHwnd(), HELP_CONTEXT, ::FuncID_To_HelpContextID(F_PRINT_PAGESETUP) ); // 2006.10.10 ryoji MyWinHelpに変更に変更 return TRUE; case IDC_BUTTON_EDITSETTINGNAME: _tcscpy( szWork, m_PrintSettingArr[m_nCurrentPrintSetting].m_szPrintSettingName ); { BOOL bDlgInputResult=cDlgInput1.DoModal( m_hInstance, GetHwnd(), LS(STR_DLGPRNST1), LS(STR_DLGPRNST2), _countof( m_PrintSettingArr[m_nCurrentPrintSetting].m_szPrintSettingName ) - 1, szWork ); if( !bDlgInputResult ){ return TRUE; } } if( szWork[0] != _T('\0') ){ int size = _countof(m_PrintSettingArr[0].m_szPrintSettingName) - 1; _tcsncpy( m_PrintSettingArr[m_nCurrentPrintSetting].m_szPrintSettingName, szWork, size); m_PrintSettingArr[m_nCurrentPrintSetting].m_szPrintSettingName[size] = _T('\0'); /* 印刷設定名一覧 */ hwndComboSettingName = GetItemHwnd( IDC_COMBO_SETTINGNAME ); Combo_ResetContent( hwndComboSettingName ); int nSelectIdx; int i; int nItemIdx; nSelectIdx = 0; for( i = 0; i < MAX_PRINTSETTINGARR; ++i ){ nItemIdx = Combo_AddString( hwndComboSettingName, m_PrintSettingArr[i].m_szPrintSettingName ); Combo_SetItemData( hwndComboSettingName, nItemIdx, i ); if( i == m_nCurrentPrintSetting ){ nSelectIdx = nItemIdx; } } Combo_SetCurSel( hwndComboSettingName, nSelectIdx ); } return TRUE; case IDC_BUTTON_FONT_HEAD: { LOGFONT lf = m_PrintSettingArr[m_nCurrentPrintSetting].m_lfHeader; INT nPointSize; if (lf.lfFaceName[0] == _T('\0')) { // 半角フォントを設定 auto_strcpy( lf.lfFaceName, m_PrintSettingArr[m_nCurrentPrintSetting].m_szPrintFontFaceHan ); // 1/10mm→画面ドット数 lf.lfHeight = -( m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintFontHeight * ::GetDeviceCaps ( ::GetDC( m_hwndParent ), LOGPIXELSY ) / 254 ); } if (MySelectFont( &lf, &nPointSize, GetHwnd(), false)) { m_PrintSettingArr[m_nCurrentPrintSetting].m_lfHeader = lf; m_PrintSettingArr[m_nCurrentPrintSetting].m_nHeaderPointSize = nPointSize; SetFontName( IDC_STATIC_FONT_HEAD, IDC_CHECK_USE_FONT_HEAD, m_PrintSettingArr[m_nCurrentPrintSetting].m_lfHeader, m_PrintSettingArr[m_nCurrentPrintSetting].m_nHeaderPointSize ); UpdatePrintableLineAndColumn(); } } return TRUE; case IDC_BUTTON_FONT_FOOT: { LOGFONT lf = m_PrintSettingArr[m_nCurrentPrintSetting].m_lfFooter; INT nPointSize; if (lf.lfFaceName[0] == _T('\0')) { // 半角フォントを設定 auto_strcpy( lf.lfFaceName, m_PrintSettingArr[m_nCurrentPrintSetting].m_szPrintFontFaceHan ); // 1/10mm→画面ドット数 lf.lfHeight = -( m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintFontHeight * ::GetDeviceCaps ( ::GetDC( m_hwndParent ), LOGPIXELSY ) / 254 ); } if (MySelectFont( &lf, &nPointSize, GetHwnd(), false)) { m_PrintSettingArr[m_nCurrentPrintSetting].m_lfFooter = lf; m_PrintSettingArr[m_nCurrentPrintSetting].m_nFooterPointSize = nPointSize; SetFontName( IDC_STATIC_FONT_FOOT, IDC_CHECK_USE_FONT_FOOT, m_PrintSettingArr[m_nCurrentPrintSetting].m_lfFooter, m_PrintSettingArr[m_nCurrentPrintSetting].m_nFooterPointSize ); UpdatePrintableLineAndColumn(); } } return TRUE; case IDC_CHECK_USE_FONT_HEAD: if (m_PrintSettingArr[m_nCurrentPrintSetting].m_lfHeader.lfFaceName[0] != _T('\0')) { memset( &m_PrintSettingArr[m_nCurrentPrintSetting].m_lfHeader, 0, sizeof(LOGFONT) ); m_PrintSettingArr[m_nCurrentPrintSetting].m_nHeaderPointSize = 0; SetFontName( IDC_STATIC_FONT_HEAD, IDC_CHECK_USE_FONT_HEAD, m_PrintSettingArr[m_nCurrentPrintSetting].m_lfHeader, m_PrintSettingArr[m_nCurrentPrintSetting].m_nHeaderPointSize ); } UpdatePrintableLineAndColumn(); return TRUE; case IDC_CHECK_USE_FONT_FOOT: if (m_PrintSettingArr[m_nCurrentPrintSetting].m_lfFooter.lfFaceName[0] != _T('\0')) { memset( &m_PrintSettingArr[m_nCurrentPrintSetting].m_lfFooter, 0, sizeof(LOGFONT) ); m_PrintSettingArr[m_nCurrentPrintSetting].m_nFooterPointSize = 0; SetFontName( IDC_STATIC_FONT_FOOT, IDC_CHECK_USE_FONT_FOOT, m_PrintSettingArr[m_nCurrentPrintSetting].m_lfFooter, m_PrintSettingArr[m_nCurrentPrintSetting].m_nFooterPointSize ); } UpdatePrintableLineAndColumn(); return TRUE; case IDOK: if( CalcPrintableLineAndColumn() ){ /* ダイアログデータの取得 */ ::EndDialog( GetHwnd(), GetData() ); } return TRUE; case IDCANCEL: ::EndDialog( GetHwnd(), FALSE ); return TRUE; case IDC_RADIO_PORTRAIT: case IDC_RADIO_LANDSCAPE: UpdatePrintableLineAndColumn(); break; // ここでは行と桁の更新要求のみ。後の処理はCDialogに任せる。 case IDC_CHECK_LINENUMBER: UpdatePrintableLineAndColumn(); break; // ここでは行と桁の更新要求のみ。後の処理はCDialogに任せる。 } /* 基底クラスメンバ */ return CDialog::OnBnClicked( wID ); }
/* ヘルプキーワード検索 */ void CViewCommander::Command_HELP_SEARCH( void ) { MyWinHelp( m_pCommanderView->GetHwnd(), HELP_KEY, (ULONG_PTR)_T("") ); // 2006.10.10 ryoji MyWinHelpに変更に変更 return; }
/* Format メッセージ処理 */ INT_PTR CPropFormat::DispatchEvent( HWND hwndDlg, // handle to dialog box UINT uMsg, // message WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ) { WORD wNotifyCode; WORD wID; NMHDR* pNMHDR; // NM_UPDOWN* pMNUD; // int idCtrl; // int nVal; switch( uMsg ){ case WM_INITDIALOG: /* ダイアログデータの設定 Format */ SetData( hwndDlg ); // Modified by KEITA for WIN64 2003.9.6 ::SetWindowLongPtr( hwndDlg, DWLP_USER, lParam ); ChangeDateExample( hwndDlg ); ChangeTimeExample( hwndDlg ); /* 見出し記号 */ EditCtl_LimitText( ::GetDlgItem( hwndDlg, IDC_EDIT_MIDASHIKIGOU ), _countof(m_Common.m_sFormat.m_szMidashiKigou) - 1 ); /* 引用符 */ EditCtl_LimitText( ::GetDlgItem( hwndDlg, IDC_EDIT_INYOUKIGOU ), _countof(m_Common.m_sFormat.m_szInyouKigou) - 1 ); /* 日付書式 */ EditCtl_LimitText( ::GetDlgItem( hwndDlg, IDC_EDIT_DFORM ), _countof(m_Common.m_sFormat.m_szDateFormat) - 1 ); /* 時刻書式 */ EditCtl_LimitText( ::GetDlgItem( hwndDlg, IDC_EDIT_TFORM ), _countof(m_Common.m_sFormat.m_szTimeFormat) - 1 ); return TRUE; case WM_COMMAND: wNotifyCode = HIWORD(wParam); /* 通知コード */ wID = LOWORD(wParam); /* 項目ID、 コントロールID、 またはアクセラレータID */ switch( wNotifyCode ){ case EN_CHANGE: if( IDC_EDIT_DFORM == wID ){ ChangeDateExample( hwndDlg ); return 0; } if( IDC_EDIT_TFORM == wID ){ ChangeTimeExample( hwndDlg ); return 0; } break; /* ボタン/チェックボックスがクリックされた */ case BN_CLICKED: switch( wID ){ case IDC_RADIO_DFORM_0: case IDC_RADIO_DFORM_1: ChangeDateExample( hwndDlg ); // From Here Sept. 10, 2000 JEPRO // 日付書式 0=標準 1=カスタム // 日付書式をカスタムにするときだけ書式指定文字入力をEnableに設定 EnableFormatPropInput( hwndDlg ); // To Here Sept. 10, 2000 return 0; case IDC_RADIO_TFORM_0: case IDC_RADIO_TFORM_1: ChangeTimeExample( hwndDlg ); // From Here Sept. 10, 2000 JEPRO // 時刻書式 0=標準 1=カスタム // 時刻書式をカスタムにするときだけ書式指定文字入力をEnableに設定 EnableFormatPropInput( hwndDlg ); // To Here Sept. 10, 2000 return 0; } break; /* BN_CLICKED */ } break; /* WM_COMMAND */ case WM_NOTIFY: // idCtrl = (int)wParam; pNMHDR = (NMHDR*)lParam; // pMNUD = (NM_UPDOWN*)lParam; // switch( idCtrl ){ // case ???????: // return 0L; // default: switch( pNMHDR->code ){ case PSN_HELP: OnHelp( hwndDlg, IDD_PROP_FORMAT ); return TRUE; case PSN_KILLACTIVE: // MYTRACE( _T("Format PSN_KILLACTIVE\n") ); /* ダイアログデータの取得 Format */ GetData( hwndDlg ); return TRUE; //@@@ 2002.01.03 YAZAKI 最後に表示していたシートを正しく覚えていないバグ修正 case PSN_SETACTIVE: m_nPageNum = ID_PROPCOM_PAGENUM_FORMAT; return TRUE; } // break; /* default */ // } // MYTRACE( _T("pNMHDR->hwndFrom=%xh\n"), pNMHDR->hwndFrom ); // MYTRACE( _T("pNMHDR->idFrom =%xh\n"), pNMHDR->idFrom ); // MYTRACE( _T("pNMHDR->code =%xh\n"), pNMHDR->code ); // MYTRACE( _T("pMNUD->iPos =%d\n"), pMNUD->iPos ); // MYTRACE( _T("pMNUD->iDelta =%d\n"), pMNUD->iDelta ); break; /* WM_NOTIFY */ //@@@ 2001.02.04 Start by MIK: Popup Help case WM_HELP: { HELPINFO *p = (HELPINFO *)lParam; MyWinHelp( (HWND)p->hItemHandle, HELP_WM_HELP, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 } return TRUE; /*NOTREACHED*/ break; //@@@ 2001.02.04 End //@@@ 2001.12.22 Start by MIK: Context Menu Help //Context Menu case WM_CONTEXTMENU: MyWinHelp( hwndDlg, HELP_CONTEXTMENU, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 return TRUE; //@@@ 2001.12.22 End } return FALSE; }