📄 cdlgfind.cpp
字号:
if( 0 < lstrlen( m_szText ) ){
/* 正規表現? */
// From Here Jun. 26, 2001 genta
// 正規表現ライブラリの差し替えに伴う処理の見直し
int nFlag = 0x00;
nFlag |= m_bLoHiCase ? 0x01 : 0x00;
if( m_bRegularExp && !CheckRegexpSyntax( m_szText, m_hWnd, true, nFlag ) ){
return -1;
}
// To Here Jun. 26, 2001 genta 正規表現ライブラリ差し替え
/* 検索文字列 */
//@@@ 2002.2.2 YAZAKI CShareDataに移動
CShareData::getInstance()->AddToSearchKeyArr( (const char*)m_szText );
if( FALSE == m_bModal ){
/* ダイアログデータの設定 */
SetData();
}
return 1;
}else{
return 0;
}
}
BOOL CDlgFind::OnBnClicked( int wID )
{
int nRet;
CEditView* pcEditView = (CEditView*)m_lParam;
switch( wID ){
case IDC_BUTTON_HELP:
/* 「検索」のヘルプ */
//Stonee, 2001/03/12 第四引数を、機能番号からヘルプトピック番号を調べるようにした
::WinHelp( m_hWnd, m_szHelpFile, HELP_CONTEXT, ::FuncID_To_HelpContextID(F_SEARCH_DIALOG) ); //Apr. 5, 2001 JEPRO 修正漏れを追加
break;
case IDC_CHK_REGULAREXP: /* 正規表現 */
// MYTRACE( "IDC_CHK_REGULAREXP ::IsDlgButtonChecked( m_hWnd, IDC_CHK_REGULAREXP ) = %d\n", ::IsDlgButtonChecked( m_hWnd, IDC_CHK_REGULAREXP ) );
if( ::IsDlgButtonChecked( m_hWnd, IDC_CHK_REGULAREXP ) ){
// From Here Jun. 26, 2001 genta
// 正規表現ライブラリの差し替えに伴う処理の見直し
if( !CheckRegexpVersion( m_hWnd, IDC_STATIC_JRE32VER, true ) ){
::CheckDlgButton( m_hWnd, IDC_CHK_REGULAREXP, 0 );
}else{
// To Here Jun. 26, 2001 genta
/* 英大文字と英小文字を区別する */
// Jan. 31, 2002 genta
// 大文字?小文字の区別は正規表現の設定に関わらず保存する
//::CheckDlgButton( m_hWnd, IDC_CHK_LOHICASE, 1 );
//::EnableWindow( ::GetDlgItem( m_hWnd, IDC_CHK_LOHICASE ), FALSE );
// 2001/06/23 Norio Nakatani
/* 単語単位で検索 */
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_CHK_WORD ), FALSE );
}
}else{
/* 英大文字と英小文字を区別する */
//::EnableWindow( ::GetDlgItem( m_hWnd, IDC_CHK_LOHICASE ), TRUE );
// Jan. 31, 2002 genta
// 大文字?小文字の区別は正規表現の設定に関わらず保存する
//::CheckDlgButton( m_hWnd, IDC_CHK_LOHICASE, 0 );
// 2001/06/23 Norio Nakatani
/* 単語単位で検索 */
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_CHK_WORD ), TRUE );
}
break;
case IDC_BUTTON_SEARCHPREV: /* 上検索 */ //Feb. 13, 2001 JEPRO ボタン名を[IDC_BUTTON1]→[IDC_BUTTON_SERACHPREV]に変更
/* ダイアログデータの取得 */
nRet = GetData();
if( 0 < nRet ){
if( m_bModal ){ /* モーダルダイアログか */
CloseDialog( 1 );
}else{
/* 前を検索 */
pcEditView->HandleCommand( F_SEARCH_PREV, TRUE, (LPARAM)m_hWnd, 0, 0, 0 );
/* 再描画 2005.04.06 zenryaku 0文字幅マッチでキャレットを表示するため */
pcEditView->HandleCommand( F_REDRAW, TRUE, 0, 0, 0, 0 );
// 02/06/26 ai Start
// 検索開始位置を登録
if( TRUE == pcEditView->m_bSearch ){
// 検索開始時のカーソル位置登録条件変更 02/07/28 ai start
pcEditView->m_nSrchStartPosX_PHY = m_nEscCaretPosX_PHY;
pcEditView->m_nSrchStartPosY_PHY = m_nEscCaretPosY_PHY;
pcEditView->m_bSearch = FALSE;
// 02/07/28 ai end
}// 02/06/26 ai End
// /* 再描画 */
// pcEditView->HandleCommand( F_REDRAW, TRUE, 0, 0, 0, 0 );
/* 検索ダイアログを自動的に閉じる */
if( m_pShareData->m_Common.m_bAutoCloseDlgFind ){
CloseDialog( 0 );
}
}
//From Here Feb. 20, 2001 JEPRO 「置換」ダイアログと同じように警告メッセージを表示するように変更
// }else
// if( 0 == nRet ){
// ::MessageBeep( MB_ICONHAND );
// CloseDialog( 0 );
// }
// return TRUE;
//ここまでコメントアウトし、代わりに以下を追加
}else{
::MYMESSAGEBOX( m_hWnd, MB_OK , GSTR_APPNAME,
"検索条件を指定してください。"
);
}
return TRUE;
//To Here Feb. 20, 2001
case IDC_BUTTON_SEARCHNEXT: /* 下検索 */ //Feb. 13, 2001 JEPRO ボタン名を[IDOK]→[IDC_BUTTON_SERACHNEXT]に変更
/* ダイアログデータの取得 */
nRet = GetData();
if( 0 < nRet ){
if( m_bModal ){ /* モーダルダイアログか */
CloseDialog( 2 );
}else{
/* 次を検索 */
pcEditView->HandleCommand( F_SEARCH_NEXT, TRUE, (LPARAM)m_hWnd, 0, 0, 0 );
/* 再描画 2005.04.06 zenryaku 0文字幅マッチでキャレットを表示するため */
pcEditView->HandleCommand( F_REDRAW, TRUE, 0, 0, 0, 0 );
// 02/06/26 ai Start
// 検索開始位置を登録
if( TRUE == pcEditView->m_bSearch ){
// 検索開始時のカーソル位置登録条件変更 02/07/28 ai start
pcEditView->m_nSrchStartPosX_PHY = m_nEscCaretPosX_PHY;
pcEditView->m_nSrchStartPosY_PHY = m_nEscCaretPosY_PHY;
pcEditView->m_bSearch = FALSE;
// 02/07/28 ai end
}// 02/06/26 ai End
// /* 再描画 */
// pcEditView->HandleCommand( F_REDRAW, TRUE, 0, 0, 0, 0 );
/* 検索ダイアログを自動的に閉じる */
if( m_pShareData->m_Common.m_bAutoCloseDlgFind ){
CloseDialog( 0 );
}
// 2001.12.03 hor
// ダイアログを閉じないとき、IDC_COMBO_TEXT 上で Enter した場合に
// キャレットが表示されなくなるのを回避する
else{
::SendMessage(m_hWnd,WM_NEXTDLGCTL,(WPARAM)::GetDlgItem(m_hWnd,IDC_COMBO_TEXT ),TRUE);
}
}
//From Here Feb. 20, 2001 JEPRO 「置換」ダイアログと同じように警告メッセージを表示するように変更
// }else
// if( 0 == nRet ){
// ::MessageBeep( MB_ICONHAND );
// CloseDialog( 0 );
// }
// return TRUE;
//ここまでコメントアウトし、代わりに以下を追加
}else{
::MYMESSAGEBOX( m_hWnd, MB_OK , GSTR_APPNAME,
"検索条件を指定してください。"
);
}
return TRUE;
//To Here Feb. 20, 2001
case IDC_BUTTON_SETMARK: //2002.01.16 hor 該当行マーク
if( 0 < GetData() ){
if( m_bModal ){ /* モーダルダイアログか */
CloseDialog( 2 );
}else{
pcEditView->HandleCommand( F_BOOKMARK_PATTERN, FALSE, 0, 0, 0, 0 );
/* 検索ダイアログを自動的に閉じる */
if( m_pShareData->m_Common.m_bAutoCloseDlgFind ){
CloseDialog( 0 );
}
else{
::SendMessage(m_hWnd,WM_NEXTDLGCTL,(WPARAM)::GetDlgItem(m_hWnd,IDC_COMBO_TEXT ),TRUE);
}
}
}
return TRUE;
case IDCANCEL:
CloseDialog( 0 );
return TRUE;
}
return FALSE;
}
//@@@ 2002.01.18 add start
LPVOID CDlgFind::GetHelpIdTable(void)
{
return (LPVOID)p_helpids;
}
//@@@ 2002.01.18 add end
/*[EOF]*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -