?? cdlgreplace.cpp
字號:
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_SEARCHPREV ), FALSE ); // 2001.12.03 hor コメント解除
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_SEARCHNEXT ), FALSE ); // 2001.12.03 hor コメント解除
::EnableWindow( ::GetDlgItem( hwndDlg, IDC_BUTTON_REPALCE ), FALSE ); // 2001.12.03 hor コメント解除
::CheckDlgButton( m_hWnd, IDC_RADIO_SELECTEDAREA, TRUE );
// ::CheckDlgButton( m_hWnd, IDC_RADIO_ALLAREA, FALSE ); // 2001.12.03 hor コメント
}else{
// ::EnableWindow( ::GetDlgItem( hwndDlg, IDC_RADIO_SELECTEDAREA ), FALSE ); // 2001.12.03 hor コメント
// ::CheckDlgButton( m_hWnd, IDC_RADIO_SELECTEDAREA, FALSE ); // 2001.12.03 hor コメント
::CheckDlgButton( m_hWnd, IDC_RADIO_ALLAREA, TRUE );
}
/* 基底クラスメンバ */
return CDialog::OnInitDialog( hwndDlg, wParam, lParam );
}
BOOL CDlgReplace::OnBnClicked( int wID )
{
CEditView* pcEditView = (CEditView*)m_lParam;
// int nNewPos;
// int nReplaceNum;
// char szLabel[64];
// int nAllLineNum;
// HWND hwndProgress;
// HWND hwndStatic;
// MSG msg;
// From Here 2001.12.03 hor
// int colFrom; //選択範囲開始桁
// int linFrom; //選択範囲開始行
// int colTo,colToP; //選択範囲終了桁
// int linTo,linToP; //選択範囲終了行
// int colDif = 0; //置換後の桁調整
// int linDif = 0; //置換後の行調整
// int colOld = 0; //検索後の選択範囲次桁
// int linOld = 0; //検索後の行
// int lineCnt; //置換前の行數
// int linPrev = 0; //前回の検索行(矩形) @@@2001.12.31 YAZAKI warning退治
// int linNext; //次回の検索行(矩形)
// int colTmp,linTmp,colLast,linLast;
// int bBeginBoxSelect; // 矩形選択?
// const char* pLine;
// int nLineLen;
// const CLayout* pcLayout;
// int bLineOffset=FALSE;
// int bLineChecked=FALSE;
switch( wID ){
case IDC_CHK_PASTE:
/* テキストの貼り付け */
if( ::IsDlgButtonChecked( m_hWnd, IDC_CHK_PASTE ) &&
!pcEditView->m_pcEditDoc->IsEnablePaste() ){
::MYMESSAGEBOX( m_hWnd, MB_OK , GSTR_APPNAME,"クリップボードに有効なデータがありません!");
::CheckDlgButton( m_hWnd, IDC_CHK_PASTE, FALSE );
}
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_COMBO_TEXT2 ), !(::IsDlgButtonChecked( m_hWnd, IDC_CHK_PASTE)) );
return TRUE;
case IDC_RADIO_SELECTEDAREA:
/* 範囲範囲 */
if( ::IsDlgButtonChecked( m_hWnd, IDC_RADIO_ALLAREA ) ){
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_BUTTON_SEARCHPREV ), TRUE );
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_BUTTON_SEARCHNEXT ), TRUE );
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_BUTTON_REPALCE ), TRUE );
}else{
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_BUTTON_SEARCHPREV ), FALSE );
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_BUTTON_SEARCHNEXT ), FALSE );
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_BUTTON_REPALCE ), FALSE );
}
return TRUE;
case IDC_RADIO_ALLAREA:
/* ファイル全體 */
if( ::IsDlgButtonChecked( m_hWnd, IDC_RADIO_ALLAREA ) ){
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_BUTTON_SEARCHPREV ), TRUE );
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_BUTTON_SEARCHNEXT ), TRUE );
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_BUTTON_REPALCE ), TRUE );
}else{
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_BUTTON_SEARCHPREV ), FALSE );
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_BUTTON_SEARCHNEXT ), FALSE );
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_BUTTON_REPALCE ), FALSE );
}
return TRUE;
// To Here 2001.12.03 hor
case IDC_BUTTON_HELP:
/* 「置換」のヘルプ */
//Stonee, 2001/03/12 第四引數を、機能番號からヘルプトピック番號を調べるようにした
::WinHelp( m_hWnd, m_szHelpFile, HELP_CONTEXT, ::FuncID_To_HelpContextID(F_REPLACE_DIALOG) );
return TRUE;
// case IDC_CHK_LOHICASE: /* 大文字と小文字を區別する */
// MYTRACE( "IDC_CHK_LOHICASE\n" );
// return TRUE;
// case IDC_CHK_WORDONLY: /* 一致する単語のみ検索 */
// MYTRACE( "IDC_CHK_WORDONLY\n" );
// 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 N.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 N.Nakatani
/* 単語単位で探す */
::EnableWindow( ::GetDlgItem( m_hWnd, IDC_CHK_WORD ), TRUE );
}
return TRUE;
// case IDOK: /* 下検索 */
// /* ダイアログデータの取得 */
// nRet = GetData();
// if( 0 < nRet ){
// ::EndDialog( hwndDlg, 2 );
// }else
// if( 0 == nRet ){
// ::EndDialog( hwndDlg, 0 );
// }
// return TRUE;
case IDC_BUTTON_SEARCHPREV: /* 上検索 */
if( 0 < GetData() ){
// 検索開始位置を登録 02/07/28 ai start
if( TRUE == pcEditView->m_bSearch ){
pcEditView->m_nSrchStartPosX_PHY = m_nEscCaretPosX_PHY;
pcEditView->m_nSrchStartPosY_PHY = m_nEscCaretPosY_PHY;
pcEditView->m_bSearch = FALSE;
}// 02/07/28 ai end
/* コマンドコードによる処理振り分け */
/* 前を検索 */
pcEditView->HandleCommand( F_SEARCH_PREV, TRUE, (LPARAM)m_hWnd, 0, 0, 0 );
/* 再描畫 */
pcEditView->HandleCommand( F_REDRAW, TRUE, 0, 0, 0, 0 );
}else{
::MYMESSAGEBOX( m_hWnd, MB_OK , GSTR_APPNAME,
"文字列を指定してください。"
);
}
return TRUE;
case IDC_BUTTON_SEARCHNEXT: /* 下検索 */
if( 0 < GetData() ){
// 検索開始位置を登録 02/07/28 ai start
if( TRUE == pcEditView->m_bSearch ){
pcEditView->m_nSrchStartPosX_PHY = m_nEscCaretPosX_PHY;
pcEditView->m_nSrchStartPosY_PHY = m_nEscCaretPosY_PHY;
pcEditView->m_bSearch = FALSE;
}// 02/07/28 ai end
/* コマンドコードによる処理振り分け */
/* 次を検索 */
pcEditView->HandleCommand( F_SEARCH_NEXT, TRUE, (LPARAM)m_hWnd, 0, 0, 0 );
/* 再描畫 */
pcEditView->HandleCommand( F_REDRAW, TRUE, 0, 0, 0, 0 );
// 2001.12.03 hor
// ダイアログを閉じないとき、IDC_COMBO_TEXT 上で Enter した場合に
// キャレットが表示されなくなるのを回避する
::SendMessage(m_hWnd,WM_NEXTDLGCTL,(WPARAM)::GetDlgItem(m_hWnd,IDC_COMBO_TEXT ),TRUE);
// To Here 2001.12.03 hor
}else{
::MYMESSAGEBOX( m_hWnd, MB_OK , GSTR_APPNAME,
"文字列を指定してください。"
);
}
return TRUE;
case IDC_BUTTON_SETMARK: //2002.01.16 hor 該當行マーク
if( 0 < GetData() ){
pcEditView->HandleCommand( F_BOOKMARK_PATTERN, FALSE, 0, 0, 0, 0 );
::SendMessage(m_hWnd,WM_NEXTDLGCTL,(WPARAM)::GetDlgItem(m_hWnd,IDC_COMBO_TEXT ),TRUE);
}
return TRUE;
case IDC_BUTTON_REPALCE: /* 置換 */
if( 0 < GetData() ){
// 置換開始位置を登録 02/07/28 ai start
if( TRUE == pcEditView->m_bSearch ){
pcEditView->m_nSrchStartPosX_PHY = m_nEscCaretPosX_PHY;
pcEditView->m_nSrchStartPosY_PHY = m_nEscCaretPosY_PHY;
pcEditView->m_bSearch = FALSE;
}// 02/07/28 ai end
/* 置換 */
//@@@ 2002.2.2 YAZAKI 置換コマンドをCEditViewに新設
//@@@ 2002/04/08 YAZAKI 親ウィンドウのハンドルを渡すように変更。
pcEditView->HandleCommand( F_REPLACE, TRUE, (LPARAM)m_hWnd, 0, 0, 0 );
/* 再描畫 */
pcEditView->HandleCommand( F_REDRAW, TRUE, 0, 0, 0, 0 );
}else{
::MYMESSAGEBOX( m_hWnd, MB_OK , GSTR_APPNAME,
"文字列を指定してください。"
);
}
return TRUE;
case IDC_BUTTON_REPALCEALL: /* すべて置換 */
if( 0 < GetData() ){
// 置換開始位置を登録 02/07/28 ai start
if( TRUE == pcEditView->m_bSearch ){
pcEditView->m_nSrchStartPosX_PHY = m_nEscCaretPosX_PHY;
pcEditView->m_nSrchStartPosY_PHY = m_nEscCaretPosY_PHY;
pcEditView->m_bSearch = FALSE;
}// 02/07/28 ai end
pcEditView->HandleCommand( F_REPLACE_ALL, TRUE, 0, 0, 0, 0 );
pcEditView->HandleCommand( F_REDRAW, TRUE, 0, 0, 0, 0 );
/* アクティブにする */
ActivateFrameWindow( m_hWnd );
::MYMESSAGEBOX( m_hWnd, MB_OK | MB_TOPMOST, GSTR_APPNAME,
"%d箇所を置換しました。", m_nReplaceCnt/*nReplaceNum*/
);
// nNewPos = 100;
// ::SendMessage( ::GetDlgItem( m_hWnd, IDC_PROGRESS_REPLACE ), PBM_SETPOS, nNewPos, 0 );
// ::ShowWindow( ::GetDlgItem( m_hWnd, IDC_PROGRESS_REPLACE ), SW_HIDE );
// if( !cDlgCancel.IsCanceled() ){
if( !m_bCanceled ){
if( m_bModal ){ /* モーダルダイアログか */
/* 置換ダイアログを閉じる */
::EndDialog( m_hWnd, 0 );
}else{
/* 置換 ダイアログを自動的に閉じる */
if( m_pShareData->m_Common.m_bAutoCloseDlgReplace ){
::DestroyWindow( m_hWnd );
}
}
}
return TRUE;
}else{
::MYMESSAGEBOX( m_hWnd, MB_OK , GSTR_APPNAME,
"置換條件を指定してください。"
);
}
return TRUE;
// case IDCANCEL:
// ::EndDialog( hwndDlg, 0 );
// return TRUE;
}
/* 基底クラスメンバ */
return CDialog::OnBnClicked( wID );
}
//@@@ 2002.01.18 add start
LPVOID CDlgReplace::GetHelpIdTable(void)
{
return (LPVOID)p_helpids;
}
//@@@ 2002.01.18 add end
/*[EOF]*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -