/* ダイアログデータの取得 */ int CPropTab::GetData( HWND hwndDlg ) { // Feb. 11, 2007 genta「ウィンドウ」シートより移動 m_Common.m_sTabBar.m_bDispTabWnd = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_DispTabWnd ); m_Common.m_sTabBar.m_bSameTabWidth = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_SameTabWidth ); // 2006.01.28 ryoji m_Common.m_sTabBar.m_bDispTabIcon = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_DispTabIcon ); // 2006.01.28 ryoji m_Common.m_sTabBar.m_bSortTabList = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_SortTabList ); // 2006.03.23 fon m_Common.m_sTabBar.m_bTabMultiLine = ::IsDlgButtonCheckedBool( hwndDlg, IDC_CHECK_TAB_MULTILINE ); m_Common.m_sTabBar.m_bDispTabWndMultiWin = ( ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_DispTabWndMultiWin ) == BST_CHECKED ) ? FALSE : TRUE; ::DlgItem_GetText( hwndDlg, IDC_TABWND_CAPTION, m_Common.m_sTabBar.m_szTabWndCaption, _countof( m_Common.m_sTabBar.m_szTabWndCaption ) ); HWND hwndCombo = ::GetDlgItem( hwndDlg, IDC_CHECK_DispTabClose ); int nSelPos = Combo_GetCurSel( hwndCombo ); m_Common.m_sTabBar.m_bDispTabClose = DispTabCloseArr[nSelPos].nMethod; hwndCombo = ::GetDlgItem( hwndDlg, IDC_COMBO_TAB_POSITION ); nSelPos = Combo_GetCurSel( hwndCombo ); m_Common.m_sTabBar.m_eTabPosition = TabPosArr[nSelPos].nMethod; // Feb. 11, 2007 genta 新規作成 m_Common.m_sTabBar.m_bTab_RetainEmptyWin = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_RetainEmptyWindow ); m_Common.m_sTabBar.m_bTab_CloseOneWin = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_CloseOneWin ); m_Common.m_sTabBar.m_bChgWndByWheel = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_ChgWndByWheel ); // 2007.04.03 ryoji m_Common.m_sTabBar.m_bNewWindow = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_OpenNewWin ); // 2009.06.17 return TRUE; }
BOOL CDlgJump::OnCbnSelChange( HWND hwndCtl, int wID ) { int nIndex; int nWorkLine; switch( wID ){ case IDC_COMBO_PLSQLBLOCKS: nIndex = Combo_GetCurSel( ::GetDlgItem( GetHwnd(), IDC_COMBO_PLSQLBLOCKS ) ); nWorkLine = (int)Combo_GetItemData( ::GetDlgItem( GetHwnd(), IDC_COMBO_PLSQLBLOCKS ), nIndex ); ::SetDlgItemInt( GetHwnd(), IDC_EDIT_PLSQL_E1, nWorkLine, FALSE ); return TRUE; } return FALSE; }
/*! ダイアログデータの設定 */ int CDlgKeywordSelect::GetData( void ) { HWND hwndCombo; int index; int n; for( index = 0; index < KEYWORD_SELECT_NUM; index++ ) { hwndCombo = ::GetDlgItem( GetHwnd(), keyword_select_target_combo[ index ] ); n = Combo_GetCurSel( hwndCombo ); if( CB_ERR == n || 0 == n ) { m_nSet[ index ] = -1; } else { m_nSet[ index ] = n - 1; } } return TRUE; }
/* ダイアログデータの取得 */ int CPropWin::GetData( HWND hwndDlg ) { /* 次回ウィンドウを開いたときツールバーを表示する */ m_Common.m_sWindow.m_bDispTOOLBAR = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_DispTOOLBAR ); /* 次回ウィンドウを開いたときファンクションキーを表示する */ m_Common.m_sWindow.m_bDispFUNCKEYWND = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_DispFUNCKEYWND ); /* ファンクションキー表示位置/0:上 1:下 */ if( ::IsDlgButtonChecked( hwndDlg, IDC_RADIO_FUNCKEYWND_PLACE1 ) ){ m_Common.m_sWindow.m_nFUNCKEYWND_Place = 0; } if( ::IsDlgButtonChecked( hwndDlg, IDC_RADIO_FUNCKEYWND_PLACE2) ){ m_Common.m_sWindow.m_nFUNCKEYWND_Place = 1; } // 2002/11/04 Moca ファンクションキーのグループボタン数 m_Common.m_sWindow.m_nFUNCKEYWND_GroupNum = ::GetDlgItemInt( hwndDlg, IDC_EDIT_FUNCKEYWND_GROUPNUM, NULL, FALSE ); if( m_Common.m_sWindow.m_nFUNCKEYWND_GroupNum < 1 ){ m_Common.m_sWindow.m_nFUNCKEYWND_GroupNum = 1; } if( m_Common.m_sWindow.m_nFUNCKEYWND_GroupNum > 12 ){ m_Common.m_sWindow.m_nFUNCKEYWND_GroupNum = 12; } //From Here@@@ 2003.06.13 MIK // Feb. 12, 2007 genta TAB関連は「タブバー」シートへ移動 //To Here@@@ 2003.06.13 MIK /* 次回ウィンドウを開いたときステータスバーを表示する */ m_Common.m_sWindow.m_bDispSTATUSBAR = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_DispSTATUSBAR ); /* ルーラーのタイプ */// del 2008/7/4 Uchi // if( ::IsDlgButtonChecked( hwndDlg, IDC_RADIO_nRulerType_0 ) ){ // m_Common.m_sWindow.m_nRulerType = 0; // } // if( ::IsDlgButtonChecked( hwndDlg, IDC_RADIO_nRulerType_1 ) ){ // m_Common.m_sWindow.m_nRulerType = 1; // } /* ルーラー高さ */ m_Common.m_sWindow.m_nRulerHeight = ::GetDlgItemInt( hwndDlg, IDC_EDIT_nRulerHeight, NULL, FALSE ); if( m_Common.m_sWindow.m_nRulerHeight < IDC_SPIN_nRulerHeight_MIN ){ m_Common.m_sWindow.m_nRulerHeight = IDC_SPIN_nRulerHeight_MIN; } if( m_Common.m_sWindow.m_nRulerHeight > IDC_SPIN_nRulerHeight_MAX ){ m_Common.m_sWindow.m_nRulerHeight = IDC_SPIN_nRulerHeight_MAX; } /* ルーラーとテキストの隙間 */ m_Common.m_sWindow.m_nRulerBottomSpace = ::GetDlgItemInt( hwndDlg, IDC_EDIT_nRulerBottomSpace, NULL, FALSE ); if( m_Common.m_sWindow.m_nRulerBottomSpace < 0 ){ m_Common.m_sWindow.m_nRulerBottomSpace = 0; } if( m_Common.m_sWindow.m_nRulerBottomSpace > 32 ){ m_Common.m_sWindow.m_nRulerBottomSpace = 32; } // Sep. 18. 2002 genta 行番号とテキストの隙間 m_Common.m_sWindow.m_nLineNumRightSpace = ::GetDlgItemInt( hwndDlg, IDC_EDIT_nLineNumberRightSpace, NULL, FALSE ); if( m_Common.m_sWindow.m_nLineNumRightSpace < 0 ){ m_Common.m_sWindow.m_nLineNumRightSpace = 0; } if( m_Common.m_sWindow.m_nLineNumRightSpace > 32 ){ m_Common.m_sWindow.m_nLineNumRightSpace = 32; } /* 水平スクロールバー */ m_Common.m_sWindow.m_bScrollBarHorz = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_bScrollBarHorz ); /* アイコン付きメニュー */ m_Common.m_sWindow.m_bMenuIcon = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_bMenuIcon ); // 2001/06/20 Start by asa-o: スクロールの同期 m_Common.m_sWindow.m_bSplitterWndVScroll = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_SplitterWndVScroll ); m_Common.m_sWindow.m_bSplitterWndHScroll = ::IsDlgButtonChecked( hwndDlg, IDC_CHECK_SplitterWndHScroll ); // 2001/06/20 End // Apr. 05, 2003 genta ウィンドウキャプションのカスタマイズ ::DlgItem_GetText( hwndDlg, IDC_WINCAPTION_ACTIVE, m_Common.m_sWindow.m_szWindowCaptionActive, _countof( m_Common.m_sWindow.m_szWindowCaptionActive ) ); ::DlgItem_GetText( hwndDlg, IDC_WINCAPTION_INACTIVE, m_Common.m_sWindow.m_szWindowCaptionInactive, _countof( m_Common.m_sWindow.m_szWindowCaptionInactive ) ); // 言語選択 HWND hwndCombo = ::GetDlgItem( hwndDlg, IDC_COMBO_LANGUAGE ); int nSelPos = Combo_GetCurSel( hwndCombo ); CSelectLang::SSelLangInfo *psLangInfo = CSelectLang::m_psLangInfoList.at( nSelPos ); if ( _tcscmp( m_Common.m_sWindow.m_szLanguageDll, psLangInfo->szDllName ) != 0 ) { _tcsncpy( m_Common.m_sWindow.m_szLanguageDll, psLangInfo->szDllName, _countof(m_Common.m_sWindow.m_szLanguageDll) ); } return TRUE; }
/* 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; }
/* TRUE==正常 FALSE==入力エラー */ int CDlgGrep::GetData( void ) { /* サブフォルダからも検索する*/ m_bSubFolder = ::IsDlgButtonChecked( GetHwnd(), IDC_CHK_SUBFOLDER ); m_pShareData->m_Common.m_sSearch.m_bGrepSubFolder = m_bSubFolder; /* Grep:サブフォルダも検索 */ /* この編集中のテキストから検索する */ m_bFromThisText = ::IsDlgButtonChecked( GetHwnd(), IDC_CHK_FROMTHISTEXT ); /* 英大文字と英小文字を区別する */ m_sSearchOption.bLoHiCase = (0!=::IsDlgButtonChecked( GetHwnd(), IDC_CHK_LOHICASE )); //2001/06/23 N.Nakatani /* 単語単位で検索 */ m_sSearchOption.bWordOnly = (0!=::IsDlgButtonChecked( GetHwnd(), IDC_CHK_WORD )); /* 正規表現 */ m_sSearchOption.bRegularExp = (0!=::IsDlgButtonChecked( GetHwnd(), IDC_CHK_REGULAREXP )); /* 文字コード自動判別 */ // m_bKanjiCode_AutoDetect = ::IsDlgButtonChecked( GetHwnd(), IDC_CHK_KANJICODEAUTODETECT ); /* 文字コードセット */ { int nIdx; HWND hWndCombo = ::GetDlgItem( GetHwnd(), IDC_COMBO_CHARSET ); nIdx = Combo_GetCurSel( hWndCombo ); m_nGrepCharSet = (ECodeType)Combo_GetItemData( hWndCombo, nIdx ); } /* 行を出力/該当部分/否マッチ行 を出力 */ if( ::IsDlgButtonChecked( GetHwnd(), IDC_RADIO_OUTPUTLINE ) ){ m_nGrepOutputLineType = 1; }else if( ::IsDlgButtonChecked( GetHwnd(), IDC_RADIO_NOHIT ) ){ m_nGrepOutputLineType = 2; }else{ m_nGrepOutputLineType = 0; } /* Grep: 出力形式 */ if( FALSE != ::IsDlgButtonChecked( GetHwnd(), IDC_RADIO_OUTPUTSTYLE1 ) ){ m_nGrepOutputStyle = 1; /* Grep: 出力形式 */ } if( FALSE != ::IsDlgButtonChecked( GetHwnd(), IDC_RADIO_OUTPUTSTYLE2 ) ){ m_nGrepOutputStyle = 2; /* Grep: 出力形式 */ } if( FALSE != ::IsDlgButtonChecked( GetHwnd(), IDC_RADIO_OUTPUTSTYLE3 ) ){ m_nGrepOutputStyle = 3; } m_bGrepOutputFileOnly = IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_FILE_ONLY ); m_bGrepOutputBaseFolder = IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_BASE_PATH ); m_bGrepSeparateFolder = IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_SEP_FOLDER ); /* 検索文字列 */ int nBufferSize = ::GetWindowTextLength( GetItemHwnd(IDC_COMBO_TEXT) ) + 1; std::vector<TCHAR> vText(nBufferSize); ::DlgItem_GetText( GetHwnd(), IDC_COMBO_TEXT, &vText[0], nBufferSize); m_strText = to_wchar(&vText[0]); m_bSetText = true; /* 検索ファイル */ ::DlgItem_GetText( GetHwnd(), IDC_COMBO_FILE, m_szFile, _countof2(m_szFile) ); /* 検索フォルダ */ ::DlgItem_GetText( GetHwnd(), IDC_COMBO_FOLDER, m_szFolder, _countof2(m_szFolder) ); m_pShareData->m_Common.m_sSearch.m_nGrepCharSet = m_nGrepCharSet; // 文字コード自動判別 m_pShareData->m_Common.m_sSearch.m_nGrepOutputLineType = m_nGrepOutputLineType; // 行を出力/該当部分/否マッチ行 を出力 m_pShareData->m_Common.m_sSearch.m_nGrepOutputStyle = m_nGrepOutputStyle; // Grep: 出力形式 m_pShareData->m_Common.m_sSearch.m_bGrepOutputFileOnly = m_bGrepOutputFileOnly; m_pShareData->m_Common.m_sSearch.m_bGrepOutputBaseFolder = m_bGrepOutputBaseFolder; m_pShareData->m_Common.m_sSearch.m_bGrepSeparateFolder = m_bGrepSeparateFolder; //やめました // if( 0 == wcslen( m_szText ) ){ // WarningMessage( GetHwnd(), _T("検索のキーワードを指定してください。") ); // return FALSE; // } if( 0 != auto_strlen( m_szFile ) ){ CGrepEnumKeys enumKeys; int nErrorNo = enumKeys.SetFileKeys( m_szFile ); if( 1 == nErrorNo ){ WarningMessage( GetHwnd(), LS(STR_DLGGREP2) ); return FALSE; }else if( nErrorNo == 2 ){ WarningMessage( GetHwnd(), LS(STR_DLGGREP3) ); return FALSE; } } /* この編集中のテキストから検索する */ if( m_szFile[0] == _T('\0') ){ // Jun. 16, 2003 Moca // 検索パターンが指定されていない場合のメッセージ表示をやめ、 // 「*.*」が指定されたものと見なす. _tcscpy( m_szFile, _T("*.*") ); } if( m_szFolder[0] == _T('\0') ){ WarningMessage( GetHwnd(), LS(STR_DLGGREP4) ); return FALSE; } { //カレントディレクトリを保存。このブロックから抜けるときに自動でカレントディレクトリは復元される。 CCurrentDirectoryBackupPoint cCurDirBackup; // 2011.11.24 Moca 複数フォルダ指定 std::vector<std::tstring> vPaths; CGrepAgent::CreateFolders( m_szFolder, vPaths ); int nFolderLen = 0; TCHAR szFolder[_MAX_PATH]; szFolder[0] = _T('\0'); for( int i = 0 ; i < (int)vPaths.size(); i ++ ){ // 相対パス→絶対パス if( !::SetCurrentDirectory( vPaths[i].c_str() ) ){ WarningMessage( GetHwnd(), LS(STR_DLGGREP5) ); return FALSE; } TCHAR szFolderItem[_MAX_PATH]; ::GetCurrentDirectory( _MAX_PATH, szFolderItem ); // ;がフォルダ名に含まれていたら""で囲う if( auto_strchr( szFolderItem, _T(';') ) ){ szFolderItem[0] = _T('"'); ::GetCurrentDirectory( _MAX_PATH, szFolderItem + 1 ); auto_strcat(szFolderItem, _T("\"")); } int nFolderItemLen = auto_strlen( szFolderItem ); if( _MAX_PATH < nFolderLen + nFolderItemLen + 1 ){ WarningMessage( GetHwnd(), LS(STR_DLGGREP6) ); return FALSE; } if( i ){ auto_strcat( szFolder, _T(";") ); } auto_strcat( szFolder, szFolderItem ); nFolderLen = auto_strlen( szFolder ); } auto_strcpy( m_szFolder, szFolder ); } //@@@ 2002.2.2 YAZAKI CShareData.AddToSearchKeyArr()追加に伴う変更 /* 検索文字列 */ if( 0 < m_strText.size() ){ // From Here Jun. 26, 2001 genta // 正規表現ライブラリの差し替えに伴う処理の見直し int nFlag = 0; nFlag |= m_sSearchOption.bLoHiCase ? 0x01 : 0x00; if( m_sSearchOption.bRegularExp && !CheckRegexpSyntax( m_strText.c_str(), GetHwnd(), true, nFlag) ){ return FALSE; } // To Here Jun. 26, 2001 genta 正規表現ライブラリ差し替え if( m_strText.size() < _MAX_PATH ){ CSearchKeywordManager().AddToSearchKeyArr( m_strText.c_str() ); m_pShareData->m_Common.m_sSearch.m_sSearchOption = m_sSearchOption; // 検索オプション } }else{ // 2014.07.01 空キーも登録する CSearchKeywordManager().AddToSearchKeyArr( L"" ); } // この編集中のテキストから検索する場合、履歴に残さない Uchi 2008/5/23 if (!m_bFromThisText) { /* 検索ファイル */ CSearchKeywordManager().AddToGrepFileArr( m_szFile ); /* 検索フォルダ */ CSearchKeywordManager().AddToGrepFolderArr( m_szFolder ); } return TRUE; }
/* ダイアログデータの設定 */ void CDlgGrep::SetData( void ) { /* 検索文字列 */ ::DlgItem_SetText( GetHwnd(), IDC_COMBO_TEXT, m_strText.c_str() ); /* 検索ファイル */ ::DlgItem_SetText( GetHwnd(), IDC_COMBO_FILE, m_szFile ); /* 検索フォルダ */ ::DlgItem_SetText( GetHwnd(), IDC_COMBO_FOLDER, m_szFolder ); if((m_szFolder[0] == _T('\0') || m_pShareData->m_Common.m_sSearch.m_bGrepDefaultFolder) && 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 ); } /* サブフォルダからも検索する */ ::CheckDlgButton( GetHwnd(), IDC_CHK_SUBFOLDER, m_bSubFolder ); // この編集中のテキストから検索する ::CheckDlgButton( GetHwnd(), IDC_CHK_FROMTHISTEXT, m_bFromThisText ); // 2010.05.30 関数化 SetDataFromThisText( m_bFromThisText != FALSE ); /* 英大文字と英小文字を区別する */ ::CheckDlgButton( GetHwnd(), IDC_CHK_LOHICASE, m_sSearchOption.bLoHiCase ); // 2001/06/23 N.Nakatani 現時点ではGrepでは単語単位の検索はサポートできていません // 2002/03/07 テストサポート /* 一致する単語のみ検索する */ ::CheckDlgButton( GetHwnd(), IDC_CHK_WORD, m_sSearchOption.bWordOnly ); // ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHK_WORD ) , false ); //チェックボックスを使用不可にすも /* 文字コード自動判別 */ // ::CheckDlgButton( GetHwnd(), IDC_CHK_KANJICODEAUTODETECT, m_bKanjiCode_AutoDetect ); // 2002/09/22 Moca Add /* 文字コードセット */ { int nIdx, nCurIdx = -1; ECodeType nCharSet; HWND hWndCombo = ::GetDlgItem( GetHwnd(), IDC_COMBO_CHARSET ); nCurIdx = Combo_GetCurSel( hWndCombo ); CCodeTypesForCombobox cCodeTypes; for( nIdx = 0; nIdx < cCodeTypes.GetCount(); nIdx++ ){ nCharSet = (ECodeType)Combo_GetItemData( hWndCombo, nIdx ); if( nCharSet == m_nGrepCharSet ){ nCurIdx = nIdx; } } if( nCurIdx != -1 ){ Combo_SetCurSel( hWndCombo, nCurIdx ); }else{ ::CheckDlgButton( GetHwnd(), IDC_CHECK_CP, TRUE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_CP ), FALSE ); nCurIdx = CCodePage::AddComboCodePages(GetHwnd(), hWndCombo, m_nGrepCharSet); if( nCurIdx == -1 ){ Combo_SetCurSel( hWndCombo, 0 ); } } } /* 行を出力するか該当部分だけ出力するか */ if( m_nGrepOutputLineType == 1 ){ ::CheckDlgButton( GetHwnd(), IDC_RADIO_OUTPUTLINE, TRUE ); }else if( m_nGrepOutputLineType == 2 ){ ::CheckDlgButton( GetHwnd(), IDC_RADIO_NOHIT, TRUE ); }else{ ::CheckDlgButton( GetHwnd(), IDC_RADIO_OUTPUTMARKED, TRUE ); } ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_BASE_PATH ), TRUE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_SEP_FOLDER ),TRUE ); /* Grep: 出力形式 */ if( 1 == m_nGrepOutputStyle ){ ::CheckDlgButton( GetHwnd(), IDC_RADIO_OUTPUTSTYLE1, TRUE ); }else if( 2 == m_nGrepOutputStyle ){ ::CheckDlgButton( GetHwnd(), IDC_RADIO_OUTPUTSTYLE2, TRUE ); }else if( 3 == m_nGrepOutputStyle ){ ::CheckDlgButton( GetHwnd(), IDC_RADIO_OUTPUTSTYLE3, TRUE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_BASE_PATH ), FALSE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_SEP_FOLDER ),FALSE ); }else{ ::CheckDlgButton( GetHwnd(), IDC_RADIO_OUTPUTSTYLE1, TRUE ); } // From Here Jun. 29, 2001 genta // 正規表現ライブラリの差し替えに伴う処理の見直し // 処理フロー及び判定条件の見直し。必ず正規表現のチェックと // 無関係にCheckRegexpVersionを通過するようにした。 if( CheckRegexpVersion( GetHwnd(), IDC_STATIC_JRE32VER, false ) && m_sSearchOption.bRegularExp){ /* 英大文字と英小文字を区別する */ ::CheckDlgButton( GetHwnd(), IDC_CHK_REGULAREXP, 1 ); // 正規表現のときも選択できるように。 // ::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 { ::CheckDlgButton( GetHwnd(), IDC_CHK_REGULAREXP, 0 ); } // To Here Jun. 29, 2001 genta if( m_szCurrentFilePath[0] != _T('\0') ){ ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHK_FROMTHISTEXT ), TRUE ); }else{ ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHK_FROMTHISTEXT ), FALSE ); } CheckDlgButtonBool( GetHwnd(), IDC_CHECK_FILE_ONLY, m_bGrepOutputFileOnly ); CheckDlgButtonBool( GetHwnd(), IDC_CHECK_BASE_PATH, m_bGrepOutputBaseFolder ); CheckDlgButtonBool( GetHwnd(), IDC_CHECK_SEP_FOLDER, m_bGrepSeparateFolder ); // フォルダの初期値をカレントフォルダにする ::CheckDlgButton( GetHwnd(), IDC_CHK_DEFAULTFOLDER, m_pShareData->m_Common.m_sSearch.m_bGrepDefaultFolder ); return; }
/* 設定のタイプが変わった */ void CDlgPrintSetting::OnChangeSettingType( BOOL bGetData ) { HWND hwndComboSettingName; HWND hwndCtrl; int nIdx1; int nItemNum; int nItemData; int i; if( bGetData ){ GetData(); } hwndComboSettingName = GetItemHwnd( IDC_COMBO_SETTINGNAME ); nIdx1 = Combo_GetCurSel( hwndComboSettingName ); if( CB_ERR == nIdx1 ){ return; } m_nCurrentPrintSetting = Combo_GetItemData( hwndComboSettingName, nIdx1 ); /* フォント一覧 */ hwndCtrl = GetItemHwnd( IDC_COMBO_FONT_HAN ); nIdx1 = Combo_FindStringExact( hwndCtrl, 0, m_PrintSettingArr[m_nCurrentPrintSetting].m_szPrintFontFaceHan ); Combo_SetCurSel( hwndCtrl, nIdx1 ); /* フォント一覧 */ hwndCtrl = GetItemHwnd( IDC_COMBO_FONT_ZEN ); nIdx1 = Combo_FindStringExact( hwndCtrl, 0, m_PrintSettingArr[m_nCurrentPrintSetting].m_szPrintFontFaceZen ); Combo_SetCurSel( hwndCtrl, nIdx1 ); ::SetDlgItemInt( GetHwnd(), IDC_EDIT_FONTHEIGHT, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintFontHeight, FALSE ); ::SetDlgItemInt( GetHwnd(), IDC_EDIT_LINESPACE, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintLineSpacing, FALSE ); ::SetDlgItemInt( GetHwnd(), IDC_EDIT_DANSUU, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDansuu, FALSE ); ::SetDlgItemInt( GetHwnd(), IDC_EDIT_DANSPACE, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDanSpace / 10, FALSE ); /* 用紙サイズ一覧 */ hwndCtrl = GetItemHwnd( IDC_COMBO_PAPER ); nItemNum = Combo_GetCount( hwndCtrl ); for( i = 0; i < nItemNum; ++i ){ nItemData = Combo_GetItemData( hwndCtrl, i ); if( m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintPaperSize == nItemData ){ Combo_SetCurSel( hwndCtrl, i ); break; } } // 用紙の向き // 2006.08.14 Moca 用紙方向コンボボックスを廃止し、ボタンを有効化 bool bIsPortrait = ( m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintPaperOrientation == DMORIENT_PORTRAIT ); CheckDlgButtonBool( GetHwnd(), IDC_RADIO_PORTRAIT, bIsPortrait ); CheckDlgButtonBool( GetHwnd(), IDC_RADIO_LANDSCAPE, !bIsPortrait ); // 余白 ::SetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINTY, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginTY / 10, FALSE ); ::SetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINBY, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginBY / 10, FALSE ); ::SetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINLX, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginLX / 10, FALSE ); ::SetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINRX, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginRX / 10, FALSE ); // 行番号を印刷 CheckDlgButtonBool( GetHwnd(), IDC_CHECK_LINENUMBER, m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintLineNumber ); // 英文ワードラップ CheckDlgButtonBool( GetHwnd(), IDC_CHECK_WORDWRAP, m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintWordWrap ); // 行頭禁則 //@@@ 2002.04.09 MIK CheckDlgButtonBool( GetHwnd(), IDC_CHECK_PS_KINSOKUHEAD, m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintKinsokuHead ); // 行末禁則 //@@@ 2002.04.09 MIK CheckDlgButtonBool( GetHwnd(), IDC_CHECK_PS_KINSOKUTAIL, m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintKinsokuTail ); // 改行文字をぶら下げる //@@@ 2002.04.13 MIK CheckDlgButtonBool( GetHwnd(), IDC_CHECK_PS_KINSOKURET, m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintKinsokuRet ); // 句読点をぶら下げる //@@@ 2002.04.17 MIK CheckDlgButtonBool( GetHwnd(), IDC_CHECK_PS_KINSOKUKUTO, m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintKinsokuKuto ); // カラー印刷 ::CheckDlgButton( GetHwnd(), IDC_CHECK_COLORPRINT, m_PrintSettingArr[m_nCurrentPrintSetting].m_bColorPrint ? BST_CHECKED : BST_UNCHECKED); /* ヘッダー */ ::DlgItem_SetText( GetHwnd(), IDC_EDIT_HEAD1, m_PrintSettingArr[m_nCurrentPrintSetting].m_szHeaderForm[POS_LEFT] ); // 100文字で制限しないと。。。 ::DlgItem_SetText( GetHwnd(), IDC_EDIT_HEAD2, m_PrintSettingArr[m_nCurrentPrintSetting].m_szHeaderForm[POS_CENTER] ); // 100文字で制限しないと。。。 ::DlgItem_SetText( GetHwnd(), IDC_EDIT_HEAD3, m_PrintSettingArr[m_nCurrentPrintSetting].m_szHeaderForm[POS_RIGHT] ); // 100文字で制限しないと。。。 /* フッター */ ::DlgItem_SetText( GetHwnd(), IDC_EDIT_FOOT1, m_PrintSettingArr[m_nCurrentPrintSetting].m_szFooterForm[POS_LEFT] ); // 100文字で制限しないと。。。 ::DlgItem_SetText( GetHwnd(), IDC_EDIT_FOOT2, m_PrintSettingArr[m_nCurrentPrintSetting].m_szFooterForm[POS_CENTER] ); // 100文字で制限しないと。。。 ::DlgItem_SetText( GetHwnd(), IDC_EDIT_FOOT3, m_PrintSettingArr[m_nCurrentPrintSetting].m_szFooterForm[POS_RIGHT] ); // 100文字で制限しないと。。。 // ヘッダフォント SetFontName( IDC_STATIC_FONT_HEAD, IDC_CHECK_USE_FONT_HEAD, m_PrintSettingArr[m_nCurrentPrintSetting].m_lfHeader, m_PrintSettingArr[m_nCurrentPrintSetting].m_nHeaderPointSize ); // フッタフォント 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==正常 FALSE==入力エラー */ int CDlgPrintSetting::GetData( void ) { HWND hwndCtrl; int nIdx1; int nWork; /* フォント一覧 */ hwndCtrl = GetItemHwnd( IDC_COMBO_FONT_HAN ); nIdx1 = Combo_GetCurSel( hwndCtrl ); Combo_GetLBText( hwndCtrl, nIdx1, m_PrintSettingArr[m_nCurrentPrintSetting].m_szPrintFontFaceHan ); /* フォント一覧 */ hwndCtrl = GetItemHwnd( IDC_COMBO_FONT_ZEN ); nIdx1 = Combo_GetCurSel( hwndCtrl ); Combo_GetLBText( hwndCtrl, nIdx1, m_PrintSettingArr[m_nCurrentPrintSetting].m_szPrintFontFaceZen ); m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintFontHeight = ::GetDlgItemInt( GetHwnd(), IDC_EDIT_FONTHEIGHT, NULL, FALSE ); m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintLineSpacing = ::GetDlgItemInt( GetHwnd(), IDC_EDIT_LINESPACE, NULL, FALSE ); m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDansuu = ::GetDlgItemInt( GetHwnd(), IDC_EDIT_DANSUU, NULL, FALSE ); m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDanSpace = ::GetDlgItemInt( GetHwnd(), IDC_EDIT_DANSPACE, NULL, FALSE ) * 10; /* 入力値(数値)のエラーチェックをして正しい値を返す */ nWork = DataCheckAndCorrect( IDC_EDIT_FONTHEIGHT, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintFontHeight ); if( nWork != m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintFontHeight ){ m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintFontHeight = nWork; ::SetDlgItemInt( GetHwnd(), IDC_EDIT_FONTHEIGHT, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintFontHeight, FALSE ); } m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintFontWidth = ( m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintFontHeight+1 ) / 2; nWork = DataCheckAndCorrect( IDC_EDIT_LINESPACE, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintLineSpacing ); if( nWork != m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintLineSpacing ){ m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintLineSpacing = nWork; ::SetDlgItemInt( GetHwnd(), IDC_EDIT_LINESPACE, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintLineSpacing, FALSE ); } nWork = DataCheckAndCorrect( IDC_EDIT_DANSUU, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDansuu ); if( nWork != m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDansuu ){ m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDansuu = nWork; ::SetDlgItemInt( GetHwnd(), IDC_EDIT_DANSUU, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDansuu, FALSE ); } nWork = DataCheckAndCorrect( IDC_EDIT_DANSPACE, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDanSpace / 10 ); if( nWork != m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDanSpace / 10 ){ m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDanSpace = nWork * 10; ::SetDlgItemInt( GetHwnd(), IDC_EDIT_DANSPACE, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintDanSpace / 10, FALSE ); } /* 用紙サイズ一覧 */ hwndCtrl = GetItemHwnd( IDC_COMBO_PAPER ); nIdx1 = Combo_GetCurSel( hwndCtrl ); m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintPaperSize = (short)Combo_GetItemData( hwndCtrl, nIdx1 ); // 用紙の向き // 2006.08.14 Moca 用紙方向コンボボックスを廃止し、ボタンを有効化 if( IsDlgButtonCheckedBool( GetHwnd(), IDC_RADIO_PORTRAIT ) ){ m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintPaperOrientation = DMORIENT_PORTRAIT; }else{ m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintPaperOrientation = DMORIENT_LANDSCAPE; } m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginTY = ::GetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINTY, NULL, FALSE ) * 10; m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginBY = ::GetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINBY, NULL, FALSE ) * 10; m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginLX = ::GetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINLX, NULL, FALSE ) * 10; m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginRX = ::GetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINRX, NULL, FALSE ) * 10; /* 入力値(数値)のエラーチェックをして正しい値を返す */ nWork = DataCheckAndCorrect( IDC_EDIT_MARGINTY, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginTY / 10 ); if( nWork != m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginTY / 10 ){ m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginTY = nWork * 10; ::SetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINTY, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginTY / 10, FALSE ); } nWork = DataCheckAndCorrect( IDC_EDIT_MARGINBY, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginBY / 10 ); if( nWork != m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginBY / 10 ){ m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginBY = nWork * 10; ::SetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINBY, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginBY / 10, FALSE ); } nWork = DataCheckAndCorrect( IDC_EDIT_MARGINLX, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginLX / 10 ); if( nWork != m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginLX / 10 ){ m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginLX = nWork * 10; ::SetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINLX, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginLX / 10, FALSE ); } nWork = DataCheckAndCorrect( IDC_EDIT_MARGINRX, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginRX / 10 ); if( nWork != m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginRX / 10 ){ m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginRX = nWork * 10; ::SetDlgItemInt( GetHwnd(), IDC_EDIT_MARGINRX, m_PrintSettingArr[m_nCurrentPrintSetting].m_nPrintMarginRX / 10, FALSE ); } // 行番号を印刷 m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintLineNumber = IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_LINENUMBER ); // 英文ワードラップ m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintWordWrap = IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_WORDWRAP ); //行頭禁則 //@@@ 2002.04.09 MIK m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintKinsokuHead = IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_PS_KINSOKUHEAD ); //行末禁則 //@@@ 2002.04.09 MIK m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintKinsokuTail = IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_PS_KINSOKUTAIL ); //改行文字をぶら下げる //@@@ 2002.04.13 MIK m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintKinsokuRet = IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_PS_KINSOKURET ); //句読点をぶら下げる //@@@ 2002.04.17 MIK m_PrintSettingArr[m_nCurrentPrintSetting].m_bPrintKinsokuKuto = IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_PS_KINSOKUKUTO ); // カラー印刷 m_PrintSettingArr[m_nCurrentPrintSetting].m_bColorPrint = ( BST_CHECKED == ::IsDlgButtonChecked( GetHwnd(), IDC_CHECK_COLORPRINT ) ); //@@@ 2002.2.4 YAZAKI /* ヘッダー */ ::DlgItem_GetText( GetHwnd(), IDC_EDIT_HEAD1, m_PrintSettingArr[m_nCurrentPrintSetting].m_szHeaderForm[0], HEADER_MAX ); // 100文字で制限しないと。。。 ::DlgItem_GetText( GetHwnd(), IDC_EDIT_HEAD2, m_PrintSettingArr[m_nCurrentPrintSetting].m_szHeaderForm[1], HEADER_MAX ); // 100文字で制限しないと。。。 ::DlgItem_GetText( GetHwnd(), IDC_EDIT_HEAD3, m_PrintSettingArr[m_nCurrentPrintSetting].m_szHeaderForm[2], HEADER_MAX ); // 100文字で制限しないと。。。 /* フッター */ ::DlgItem_GetText( GetHwnd(), IDC_EDIT_FOOT1, m_PrintSettingArr[m_nCurrentPrintSetting].m_szFooterForm[0], HEADER_MAX ); // 100文字で制限しないと。。。 ::DlgItem_GetText( GetHwnd(), IDC_EDIT_FOOT2, m_PrintSettingArr[m_nCurrentPrintSetting].m_szFooterForm[1], HEADER_MAX ); // 100文字で制限しないと。。。 ::DlgItem_GetText( GetHwnd(), IDC_EDIT_FOOT3, m_PrintSettingArr[m_nCurrentPrintSetting].m_szFooterForm[2], HEADER_MAX ); // 100文字で制限しないと。。。 // ヘッダフォント if (!IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_USE_FONT_HEAD )) { memset( &m_PrintSettingArr[m_nCurrentPrintSetting].m_lfHeader, 0, sizeof(LOGFONT) ); } // フッタフォント if (!IsDlgButtonCheckedBool( GetHwnd(), IDC_CHECK_USE_FONT_FOOT )) { memset( &m_PrintSettingArr[m_nCurrentPrintSetting].m_lfFooter, 0, sizeof(LOGFONT) ); } return TRUE; }
/* 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; }