diff --git a/sakura_core/CAutoReloadAgent.cpp b/sakura_core/CAutoReloadAgent.cpp index fa2b4c39fd..14f38d154f 100644 --- a/sakura_core/CAutoReloadAgent.cpp +++ b/sakura_core/CAutoReloadAgent.cpp @@ -89,7 +89,7 @@ bool CAutoReloadAgent::_ToDoChecking() const if(hwndActive!=CEditWnd::getInstance()->GetHwnd())return false; if(!GetListeningDoc()->m_cDocFile.GetFilePathClass().IsValidPath())return false; if(GetListeningDoc()->m_cDocFile.IsFileTimeZero()) return false; /* 現在編集中のファイルのタイムスタンプ */ - if(GetListeningDoc()->m_pcEditWnd->m_pPrintPreview ) return false; // 印刷プレビュー中 2013/5/8 Uchi + if(GetEditWnd().m_pPrintPreview ) return false; // 印刷プレビュー中 2013/5/8 Uchi return true; } @@ -134,7 +134,7 @@ void CAutoReloadAgent::CheckFileTimeStamp() WCHAR szText[40]; const CFileTime& ctime = pcDoc->m_cDocFile.GetFileTime(); auto_sprintf( szText, LS(STR_AUTORELOAD_NOFITY), ctime->wHour, ctime->wMinute, ctime->wSecond ); - pcDoc->m_pcEditWnd->SendStatusMessage( szText ); + GetEditWnd().SendStatusMessage( szText ); } break; case WU_AUTOLOAD: //以後未編集で再ロード diff --git a/sakura_core/CCodeChecker.cpp b/sakura_core/CCodeChecker.cpp index 11d888d3ec..cc0fc09aa4 100644 --- a/sakura_core/CCodeChecker.cpp +++ b/sakura_core/CCodeChecker.cpp @@ -218,7 +218,7 @@ ECallbackResult CCodeChecker::OnCheckSave(SSaveInfo* pSaveInfo) case IDCANCEL: { CLogicPoint pt(point.x < 0 ? CLogicInt(0) : point.x, point.y); - pcDoc->m_pcEditWnd->GetActiveView().GetCommander().Command_MOVECURSOR(pt, 0); + GetEditWnd().GetActiveView().GetCommander().Command_MOVECURSOR(pt, 0); } return CALLBACK_INTERRUPT; //中断 } diff --git a/sakura_core/CEditApp.cpp b/sakura_core/CEditApp.cpp index d61378ad43..b578548e1a 100644 --- a/sakura_core/CEditApp.cpp +++ b/sakura_core/CEditApp.cpp @@ -64,10 +64,11 @@ void CEditApp::Create(HINSTANCE hInst, int nGroupId) //マクロ m_pcSMacroMgr = new CSMacroMgr(); + //ドキュメントの作成 + m_pcEditDoc->Create(); + //ウィンドウの作成 m_pcEditWnd = CEditWnd::getInstance(); - - m_pcEditDoc->Create( m_pcEditWnd ); m_pcEditWnd->Create( m_pcEditDoc, &m_cIcons, nGroupId ); //MRU管理 diff --git a/sakura_core/CGrepAgent.cpp b/sakura_core/CGrepAgent.cpp index f8e2909231..9a691b3e8b 100644 --- a/sakura_core/CGrepAgent.cpp +++ b/sakura_core/CGrepAgent.cpp @@ -478,13 +478,13 @@ DWORD CGrepAgent::DoGrep( } //2014.06.13 別ウィンドウで検索したとき用にGrepダイアログの検索キーを設定 - pcViewDst->m_pcEditWnd->m_cDlgGrep.m_strText = pcmGrepKey->GetStringPtr(); - pcViewDst->m_pcEditWnd->m_cDlgGrep.m_bSetText = true; - pcViewDst->m_pcEditWnd->m_cDlgGrepReplace.m_strText = pcmGrepKey->GetStringPtr(); + GetEditWnd().m_cDlgGrep.m_strText = pcmGrepKey->GetStringPtr(); + GetEditWnd().m_cDlgGrep.m_bSetText = true; + GetEditWnd().m_cDlgGrepReplace.m_strText = pcmGrepKey->GetStringPtr(); if( bGrepReplace ){ - pcViewDst->m_pcEditWnd->m_cDlgGrepReplace.m_strText2 = pcmGrepReplace->GetStringPtr(); + GetEditWnd().m_cDlgGrepReplace.m_strText2 = pcmGrepReplace->GetStringPtr(); } - pcViewDst->m_pcEditWnd->m_cDlgGrepReplace.m_bSetText = true; + GetEditWnd().m_cDlgGrepReplace.m_bSetText = true; hwndCancel = cDlgCancel.DoModeless( G_AppInstance(), pcViewDst->m_hwndParent, IDD_GREPRUNNING ); ::SetDlgItemInt( hwndCancel, IDC_STATIC_HITCOUNT, 0, FALSE ); diff --git a/sakura_core/CLoadAgent.cpp b/sakura_core/CLoadAgent.cpp index bcfa9b8fa1..af5c8c0246 100644 --- a/sakura_core/CLoadAgent.cpp +++ b/sakura_core/CLoadAgent.cpp @@ -207,18 +207,18 @@ ELoadResult CLoadAgent::OnLoad(const SLoadInfo& sLoadInfo) // 文書種別確定 pcDoc->m_cDocType.SetDocumentType( sLoadInfo.nType, true ); - pcDoc->m_pcEditWnd->m_pcViewFontMiniMap->UpdateFont(&pcDoc->m_pcEditWnd->GetLogfont()); - InitCharWidthCache( pcDoc->m_pcEditWnd->m_pcViewFontMiniMap->GetLogfont(), CWM_FONT_MINIMAP ); - SelectCharWidthCache( CWM_FONT_EDIT, pcDoc->m_pcEditWnd->GetLogfontCacheMode() ); - InitCharWidthCache( pcDoc->m_pcEditWnd->GetLogfont() ); - pcDoc->m_pcEditWnd->m_pcViewFont->UpdateFont(&pcDoc->m_pcEditWnd->GetLogfont()); + GetEditWnd().m_pcViewFontMiniMap->UpdateFont(&GetEditWnd().GetLogfont()); + InitCharWidthCache( GetEditWnd().m_pcViewFontMiniMap->GetLogfont(), CWM_FONT_MINIMAP ); + SelectCharWidthCache( CWM_FONT_EDIT, GetEditWnd().GetLogfontCacheMode() ); + InitCharWidthCache( GetEditWnd().GetLogfont() ); + GetEditWnd().m_pcViewFont->UpdateFont(&GetEditWnd().GetLogfont()); // 起動と同時に読む場合は予めアウトライン解析画面を配置しておく // (ファイル読み込み開始とともにビューが表示されるので、あとで配置すると画面のちらつきが大きいの) - if( !pcDoc->m_pcEditWnd->m_cDlgFuncList.m_bEditWndReady ){ - pcDoc->m_pcEditWnd->m_cDlgFuncList.Refresh(); - HWND hEditWnd = pcDoc->m_pcEditWnd->GetHwnd(); - if( !::IsIconic( hEditWnd ) && pcDoc->m_pcEditWnd->m_cDlgFuncList.GetHwnd() ){ + if( !GetEditWnd().m_cDlgFuncList.m_bEditWndReady ){ + GetEditWnd().m_cDlgFuncList.Refresh(); + HWND hEditWnd = GetEditWnd().GetHwnd(); + if( !::IsIconic( hEditWnd ) && GetEditWnd().m_cDlgFuncList.GetHwnd() ){ RECT rc; ::GetClientRect( hEditWnd, &rc ); ::SendMessageAny( hEditWnd, WM_SIZE, ::IsZoomed( hEditWnd )? SIZE_MAXIMIZED: SIZE_RESTORED, MAKELONG( rc.right - rc.left, rc.bottom - rc.top ) ); @@ -258,8 +258,8 @@ ELoadResult CLoadAgent::OnLoad(const SLoadInfo& sLoadInfo) nMaxLineKetas = CKetaXInt(MAXLINEKETAS); CProgressSubject* pOld = CEditApp::getInstance()->m_pcVisualProgress->CProgressListener::Listen(&pcDoc->m_cLayoutMgr); - pcDoc->m_cLayoutMgr.SetLayoutInfo( true, true, ref, ref.m_nTabSpace, ref.m_nTsvMode, nMaxLineKetas, CLayoutXInt(-1), &pcDoc->m_pcEditWnd->GetLogfont() ); - pcDoc->m_pcEditWnd->ClearViewCaretPosInfo(); + pcDoc->m_cLayoutMgr.SetLayoutInfo( true, true, ref, ref.m_nTabSpace, ref.m_nTsvMode, nMaxLineKetas, CLayoutXInt(-1), &GetEditWnd().GetLogfont() ); + GetEditWnd().ClearViewCaretPosInfo(); if (pcDoc->m_cLayoutMgr.m_tsvInfo.m_nTsvMode != TSV_MODE_NONE) { pcDoc->m_cLayoutMgr.m_tsvInfo.CalcTabLength(pcDoc->m_cLayoutMgr.m_pcDocLineMgr); } @@ -274,7 +274,7 @@ void CLoadAgent::OnAfterLoad(const SLoadInfo& sLoadInfo) CEditDoc* pcDoc = GetListeningDoc(); /* 親ウィンドウのタイトルを更新 */ - pcDoc->m_pcEditWnd->UpdateCaption(); + GetEditWnd().UpdateCaption(); // -- -- ※ InitAllViewでやってたこと -- -- // // 2009.08.28 nasukoji CEditView::OnAfterLoad()からここに移動 pcDoc->m_nCommandExecNum=0; diff --git a/sakura_core/_main/global.cpp b/sakura_core/_main/global.cpp index e9fccb355b..fbc095f8ee 100644 --- a/sakura_core/_main/global.cpp +++ b/sakura_core/_main/global.cpp @@ -46,9 +46,6 @@ LPCWSTR GetAppName( void ) return pcProcess->GetAppName(); } -//2007.10.02 kobake CEditWndのインスタンスへのポインタをここに保存しておく -CEditWnd* g_pcEditWnd = NULL; - /*! 選択領域描画用パラメータ */ const COLORREF SELECTEDAREA_RGB = RGB( 255, 255, 255 ); const int SELECTEDAREA_ROP2 = R2_XORPEN; diff --git a/sakura_core/_main/global.h b/sakura_core/_main/global.h index 479b7be128..cb4681d716 100644 --- a/sakura_core/_main/global.h +++ b/sakura_core/_main/global.h @@ -173,9 +173,5 @@ struct SSearchOption{ bool operator != (const SSearchOption& rhs) const noexcept; }; -//2007.10.02 kobake CEditWndのインスタンスへのポインタをここに保存しておく -class CEditWnd; -extern CEditWnd* g_pcEditWnd; - HINSTANCE G_AppInstance(); #endif /* SAKURA_GLOBAL_BD124BE7_A850_41F3_9F5D_8A4F0E45A4C9_H_ */ diff --git a/sakura_core/cmd/CViewCommander_inline.h b/sakura_core/cmd/CViewCommander_inline.h index 308c201ccf..610f67d188 100644 --- a/sakura_core/cmd/CViewCommander_inline.h +++ b/sakura_core/cmd/CViewCommander_inline.h @@ -39,7 +39,7 @@ inline CEditDoc* CViewCommander::GetDocument() } inline CEditWnd* CViewCommander::GetEditWindow() { - return m_pCommanderView->m_pcEditWnd; + return &GetEditWnd(); } inline HWND CViewCommander::GetMainWindow() { diff --git a/sakura_core/dlg/CDlgJump.cpp b/sakura_core/dlg/CDlgJump.cpp index 711116066d..149e740050 100644 --- a/sakura_core/dlg/CDlgJump.cpp +++ b/sakura_core/dlg/CDlgJump.cpp @@ -177,8 +177,7 @@ BOOL CDlgJump::OnBnClicked( int wID ) } //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); // ジャンプコマンド発行 + GetEditWnd().GetActiveView().GetCommander().HandleCommand(F_JUMP, true, 0, 0, 0, 0); // ジャンプコマンド発行 } return TRUE; case IDCANCEL: diff --git a/sakura_core/doc/CDocEditor.cpp b/sakura_core/doc/CDocEditor.cpp index 2195a17cd6..ce12c8f47f 100644 --- a/sakura_core/doc/CDocEditor.cpp +++ b/sakura_core/doc/CDocEditor.cpp @@ -57,7 +57,7 @@ CDocEditor::CDocEditor(CEditDoc* pcDoc) void CDocEditor::SetModified( bool flag, bool redraw) { if( redraw ){ - m_pcDocRef->m_pcEditWnd->m_cDlgFuncList.NotifyDocModification(); + GetEditWnd().m_cDlgFuncList.NotifyDocModification(); } if( m_bIsDocModified == flag ) // 変更がなければ何もしない @@ -65,13 +65,13 @@ void CDocEditor::SetModified( bool flag, bool redraw) m_bIsDocModified = flag; if( redraw ) - m_pcDocRef->m_pcEditWnd->UpdateCaption(); + GetEditWnd().UpdateCaption(); } void CDocEditor::OnBeforeLoad(SLoadInfo* sLoadInfo) { //ビューのテキスト選択解除 - GetListeningDoc()->m_pcEditWnd->Views_DisableSelectArea(true); + GetEditWnd().Views_DisableSelectArea(true); } void CDocEditor::OnAfterLoad(const SLoadInfo& sLoadInfo) @@ -129,7 +129,7 @@ void CDocEditor::SetImeMode( int mode ) { DWORD conv, sent; HIMC hIme; - HWND hwnd = m_pcDocRef->m_pcEditWnd->GetActiveView().GetHwnd(); + HWND hwnd = GetEditWnd().GetActiveView().GetHwnd(); hIme = ImmGetContext( hwnd ); //######大丈夫? // 2013.06.04 EditWndからViewに変更 diff --git a/sakura_core/doc/CDocFileOperation.cpp b/sakura_core/doc/CDocFileOperation.cpp index eb64c5531f..1c95bde3e4 100644 --- a/sakura_core/doc/CDocFileOperation.cpp +++ b/sakura_core/doc/CDocFileOperation.cpp @@ -147,7 +147,7 @@ bool CDocFileOperation::FileLoad( m_pcDocRef->RunAutoMacro( GetDllShareData().m_Common.m_sMacro.m_nMacroOnOpened ); //プラグイン:DocumentOpenイベント実行 - CJackManager::getInstance()->InvokePlugins( PP_DOCUMENT_OPEN, &m_pcDocRef->m_pcEditWnd->GetActiveView() ); + CJackManager::getInstance()->InvokePlugins( PP_DOCUMENT_OPEN, &GetEditWnd().GetActiveView() ); } return bRet; } @@ -167,21 +167,21 @@ void CDocFileOperation::ReloadCurrentFile( ) { //プラグイン:DocumentCloseイベント実行 - CJackManager::getInstance()->InvokePlugins( PP_DOCUMENT_CLOSE, &m_pcDocRef->m_pcEditWnd->GetActiveView() ); + CJackManager::getInstance()->InvokePlugins( PP_DOCUMENT_CLOSE, &GetEditWnd().GetActiveView() ); if( !fexist(m_pcDocRef->m_cDocFile.GetFilePath()) ){ /* ファイルが存在しない */ // Jul. 26, 2003 ryoji BOMを標準設定に // IsBomDefOn使用 2013/5/17 Uchi m_pcDocRef->m_cDocFile.SetCodeSet( nCharCode, CCodeTypeName( nCharCode ).IsBomDefOn() ); // カーソル位置表示を更新する // 2008.07.22 ryoji - m_pcDocRef->m_pcEditWnd->GetActiveView().GetCaret().ShowCaretPosInfo(); + GetEditWnd().GetActiveView().GetCaret().ShowCaretPosInfo(); return; } //カーソル位置保存 - CLayoutInt nViewTopLine = m_pcDocRef->m_pcEditWnd->GetActiveView().GetTextArea().GetViewTopLine(); /* 表示域の一番上の行(0開始) */ - CLayoutInt nViewLeftCol = m_pcDocRef->m_pcEditWnd->GetActiveView().GetTextArea().GetViewLeftCol(); /* 表示域の一番左の桁(0開始) */ - CLayoutPoint ptCaretPosXY = m_pcDocRef->m_pcEditWnd->GetActiveView().GetCaret().GetCaretLayoutPos(); + CLayoutInt nViewTopLine = GetEditWnd().GetActiveView().GetTextArea().GetViewTopLine(); /* 表示域の一番上の行(0開始) */ + CLayoutInt nViewLeftCol = GetEditWnd().GetActiveView().GetTextArea().GetViewLeftCol(); /* 表示域の一番左の桁(0開始) */ + CLayoutPoint ptCaretPosXY = GetEditWnd().GetActiveView().GetCaret().GetCaretLayoutPos(); //ロード SLoadInfo sLoadInfo; @@ -195,18 +195,18 @@ void CDocFileOperation::ReloadCurrentFile( // カーソル位置復元 (※ここではオプションのカーソル位置復元(=改行単位)が指定されていない場合でも復元する) // 2007.08.23 ryoji 表示領域復元 if( ptCaretPosXY.GetY2() < m_pcDocRef->m_cLayoutMgr.GetLineCount() ){ - m_pcDocRef->m_pcEditWnd->GetActiveView().GetTextArea().SetViewTopLine(nViewTopLine); - m_pcDocRef->m_pcEditWnd->GetActiveView().GetTextArea().SetViewLeftCol(nViewLeftCol); + GetEditWnd().GetActiveView().GetTextArea().SetViewTopLine(nViewTopLine); + GetEditWnd().GetActiveView().GetTextArea().SetViewLeftCol(nViewLeftCol); } - m_pcDocRef->m_pcEditWnd->GetActiveView().GetCaret().MoveCursorProperly( ptCaretPosXY, true ); // 2007.08.23 ryoji MoveCursor()->MoveCursorProperly() - m_pcDocRef->m_pcEditWnd->GetActiveView().GetCaret().m_nCaretPosX_Prev = m_pcDocRef->m_pcEditWnd->GetActiveView().GetCaret().GetCaretLayoutPos().GetX2(); + GetEditWnd().GetActiveView().GetCaret().MoveCursorProperly( ptCaretPosXY, true ); // 2007.08.23 ryoji MoveCursor()->MoveCursorProperly() + GetEditWnd().GetActiveView().GetCaret().m_nCaretPosX_Prev = GetEditWnd().GetActiveView().GetCaret().GetCaretLayoutPos().GetX2(); // 2006.09.01 ryoji オープン後自動実行マクロを実行する if( bRet ){ m_pcDocRef->RunAutoMacro( GetDllShareData().m_Common.m_sMacro.m_nMacroOnOpened ); //プラグイン:DocumentOpenイベント実行 - CJackManager::getInstance()->InvokePlugins( PP_DOCUMENT_OPEN, &m_pcDocRef->m_pcEditWnd->GetActiveView() ); + CJackManager::getInstance()->InvokePlugins( PP_DOCUMENT_OPEN, &GetEditWnd().GetActiveView() ); } } @@ -273,7 +273,7 @@ bool CDocFileOperation::SaveFileDialog( SYSTEMTIME localTime = {}; ::GetLocalTime( &localTime ); auto dateTimeString = GetDateTimeFormat( L"_%Y%m%d_%H%M%S", localTime ); - const EditNode* node = CAppNodeManager::getInstance()->GetEditNode( m_pcDocRef->m_pcEditWnd->GetHwnd() ); + const EditNode* node = CAppNodeManager::getInstance()->GetEditNode( GetEditWnd().GetHwnd() ); const int nId = (node != NULL && 0 < node->m_nId) ? node->m_nId : 0; auto_sprintf_s( pSaveInfo->cFilePath, pSaveInfo->cFilePath.GetBufferCount(), L"%s%.0d%s", LS(STR_NO_TITLE2), nId, dateTimeString.c_str() ); } @@ -339,11 +339,11 @@ bool CDocFileOperation::DoSaveFlow(SSaveInfo* pSaveInfo) m_pcDocRef->RunAutoMacro( GetDllShareData().m_Common.m_sMacro.m_nMacroOnSave, pSaveInfo->cFilePath ); //プラグイン:DocumentBeforeSaveイベント実行 - CJackManager::getInstance()->InvokePlugins( PP_DOCUMENT_BEFORE_SAVE, &m_pcDocRef->m_pcEditWnd->GetActiveView() ); + CJackManager::getInstance()->InvokePlugins( PP_DOCUMENT_BEFORE_SAVE, &GetEditWnd().GetActiveView() ); if(!pSaveInfo->bOverwriteMode){ //上書きでなければ前文書のクローズイベントを呼ぶ //プラグイン:DocumentCloseイベント実行 - CJackManager::getInstance()->InvokePlugins( PP_DOCUMENT_CLOSE, &m_pcDocRef->m_pcEditWnd->GetActiveView() ); + CJackManager::getInstance()->InvokePlugins( PP_DOCUMENT_CLOSE, &GetEditWnd().GetActiveView() ); } //セーブ処理 @@ -352,7 +352,7 @@ bool CDocFileOperation::DoSaveFlow(SSaveInfo* pSaveInfo) m_pcDocRef->NotifyAfterSave(*pSaveInfo); //後処理 //プラグイン:DocumentAfterSaveイベント実行 - CJackManager::getInstance()->InvokePlugins( PP_DOCUMENT_AFTER_SAVE, &m_pcDocRef->m_pcEditWnd->GetActiveView() ); + CJackManager::getInstance()->InvokePlugins( PP_DOCUMENT_AFTER_SAVE, &GetEditWnd().GetActiveView() ); //結果 eSaveResult = SAVED_OK; //###仮 @@ -435,7 +435,7 @@ bool CDocFileOperation::FileSaveAs( const WCHAR* filename,ECodeType eCodeType, E m_pcDocRef->RunAutoMacro( GetDllShareData().m_Common.m_sMacro.m_nMacroOnOpened ); //プラグイン:DocumentOpenイベント実行 - CJackManager::getInstance()->InvokePlugins( PP_DOCUMENT_OPEN, &m_pcDocRef->m_pcEditWnd->GetActiveView() ); + CJackManager::getInstance()->InvokePlugins( PP_DOCUMENT_OPEN, &GetEditWnd().GetActiveView() ); return true; } @@ -461,7 +461,7 @@ bool CDocFileOperation::FileClose() } //プラグイン:DocumentCloseイベント実行 - CJackManager::getInstance()->InvokePlugins( PP_DOCUMENT_CLOSE, &m_pcDocRef->m_pcEditWnd->GetActiveView() ); + CJackManager::getInstance()->InvokePlugins( PP_DOCUMENT_CLOSE, &GetEditWnd().GetActiveView() ); /* 既存データのクリア */ m_pcDocRef->InitDoc(); @@ -472,10 +472,10 @@ bool CDocFileOperation::FileClose() m_pcDocRef->SetCurDirNotitle(); // 無題番号取得 - CAppNodeManager::getInstance()->GetNoNameNumber( m_pcDocRef->m_pcEditWnd->GetHwnd() ); + CAppNodeManager::getInstance()->GetNoNameNumber( GetEditWnd().GetHwnd() ); /* 親ウィンドウのタイトルを更新 */ - m_pcDocRef->m_pcEditWnd->UpdateCaption(); + GetEditWnd().UpdateCaption(); // 2006.09.01 ryoji オープン後自動実行マクロを実行する m_pcDocRef->RunAutoMacro( GetDllShareData().m_Common.m_sMacro.m_nMacroOnOpened ); @@ -498,7 +498,7 @@ void CDocFileOperation::FileCloseOpen( const SLoadInfo& _sLoadInfo ) } //プラグイン:DocumentCloseイベント実行 - CJackManager::getInstance()->InvokePlugins( PP_DOCUMENT_CLOSE, &m_pcDocRef->m_pcEditWnd->GetActiveView() ); + CJackManager::getInstance()->InvokePlugins( PP_DOCUMENT_CLOSE, &GetEditWnd().GetActiveView() ); //ファイル名指定が無い場合はダイアログで入力させる SLoadInfo sLoadInfo = _sLoadInfo; @@ -534,16 +534,16 @@ void CDocFileOperation::FileCloseOpen( const SLoadInfo& _sLoadInfo ) if( !m_pcDocRef->m_cDocFile.GetFilePathClass().IsValidPath() ){ m_pcDocRef->SetCurDirNotitle(); - CAppNodeManager::getInstance()->GetNoNameNumber( m_pcDocRef->m_pcEditWnd->GetHwnd() ); + CAppNodeManager::getInstance()->GetNoNameNumber( GetEditWnd().GetHwnd() ); } /* 親ウィンドウのタイトルを更新 */ - m_pcDocRef->m_pcEditWnd->UpdateCaption(); + GetEditWnd().UpdateCaption(); // オープン後自動実行マクロを実行する // ※ロードしてなくても(無題)には変更済み m_pcDocRef->RunAutoMacro( GetDllShareData().m_Common.m_sMacro.m_nMacroOnOpened ); //プラグイン:DocumentOpenイベント実行 - CJackManager::getInstance()->InvokePlugins( PP_DOCUMENT_OPEN, &m_pcDocRef->m_pcEditWnd->GetActiveView() ); + CJackManager::getInstance()->InvokePlugins( PP_DOCUMENT_OPEN, &GetEditWnd().GetActiveView() ); } diff --git a/sakura_core/doc/CDocType.cpp b/sakura_core/doc/CDocType.cpp index d2c2902061..8d87b9203b 100644 --- a/sakura_core/doc/CDocType.cpp +++ b/sakura_core/doc/CDocType.cpp @@ -108,10 +108,10 @@ void CDocType::SetDocumentIcon() HICON hIconBig, hIconSmall; if( this->GetDocumentAttribute().m_bUseDocumentIcon ) - m_pcDocRef->m_pcEditWnd->GetRelatedIcon( m_pcDocRef->m_cDocFile.GetFilePath(), &hIconBig, &hIconSmall ); + GetEditWnd().GetRelatedIcon( m_pcDocRef->m_cDocFile.GetFilePath(), &hIconBig, &hIconSmall ); else - m_pcDocRef->m_pcEditWnd->GetDefaultIcon( &hIconBig, &hIconSmall ); + GetEditWnd().GetDefaultIcon( &hIconBig, &hIconSmall ); - m_pcDocRef->m_pcEditWnd->SetWindowIcon( hIconBig, ICON_BIG ); - m_pcDocRef->m_pcEditWnd->SetWindowIcon( hIconSmall, ICON_SMALL ); + GetEditWnd().SetWindowIcon( hIconBig, ICON_BIG ); + GetEditWnd().SetWindowIcon( hIconSmall, ICON_SMALL ); } diff --git a/sakura_core/doc/CDocVisitor.cpp b/sakura_core/doc/CDocVisitor.cpp index 9767ea40fb..e70d5a6d12 100644 --- a/sakura_core/doc/CDocVisitor.cpp +++ b/sakura_core/doc/CDocVisitor.cpp @@ -81,7 +81,7 @@ void CDocVisitor::SetAllEol(CEol cEol) if( bReplace ){ m_pcDocRef->m_cLayoutMgr._DoLayout(false); - m_pcDocRef->m_pcEditWnd->ClearViewCaretPosInfo(); + GetEditWnd().ClearViewCaretPosInfo(); if( m_pcDocRef->m_nTextWrapMethodCur == WRAP_NO_TEXT_WRAP ){ m_pcDocRef->m_cLayoutMgr.CalculateTextWidth(); }else{ diff --git a/sakura_core/doc/CEditDoc.cpp b/sakura_core/doc/CEditDoc.cpp index a845fac8f9..abca67d5ef 100644 --- a/sakura_core/doc/CEditDoc.cpp +++ b/sakura_core/doc/CEditDoc.cpp @@ -259,11 +259,11 @@ void CEditDoc::Clear() // 「基本」のタイプ別設定を適用 m_cDocType.SetDocumentType( CDocTypeManager().GetDocumentTypeOfPath( m_cDocFile.GetFilePath() ), true ); m_blfCurTemp = false; - m_pcEditWnd->m_pcViewFontMiniMap->UpdateFont(&m_pcEditWnd->GetLogfont()); - InitCharWidthCache( m_pcEditWnd->m_pcViewFontMiniMap->GetLogfont(), CWM_FONT_MINIMAP ); - SelectCharWidthCache( CWM_FONT_EDIT, m_pcEditWnd->GetLogfontCacheMode() ); - InitCharWidthCache( m_pcEditWnd->GetLogfont() ); - m_pcEditWnd->m_pcViewFont->UpdateFont(&m_pcEditWnd->GetLogfont()); + GetEditWnd().m_pcViewFontMiniMap->UpdateFont(&GetEditWnd().GetLogfont()); + InitCharWidthCache( GetEditWnd().m_pcViewFontMiniMap->GetLogfont(), CWM_FONT_MINIMAP ); + SelectCharWidthCache( CWM_FONT_EDIT, GetEditWnd().GetLogfontCacheMode() ); + InitCharWidthCache( GetEditWnd().GetLogfont() ); + GetEditWnd().m_pcViewFont->UpdateFont(&GetEditWnd().GetLogfont()); // 2008.06.07 nasukoji 折り返し方法の追加に対応 const STypeConfig& ref = m_cDocType.GetDocumentAttribute(); @@ -271,8 +271,8 @@ void CEditDoc::Clear() if( ref.m_nTextWrapMethod != WRAP_SETTING_WIDTH ){ nMaxLineKetas = CKetaXInt(MAXLINEKETAS); } - m_cLayoutMgr.SetLayoutInfo( true, false, ref, ref.m_nTabSpace, ref.m_nTsvMode, nMaxLineKetas, CLayoutXInt(-1), &m_pcEditWnd->GetLogfont() ); - m_pcEditWnd->ClearViewCaretPosInfo(); + m_cLayoutMgr.SetLayoutInfo( true, false, ref, ref.m_nTabSpace, ref.m_nTsvMode, nMaxLineKetas, CLayoutXInt(-1), &GetEditWnd().GetLogfont() ); + GetEditWnd().ClearViewCaretPosInfo(); } /* 既存データのクリア */ @@ -408,7 +408,7 @@ void CEditDoc::InitAllView( void ) m_cLayoutMgr.ClearLayoutLineWidth(); // 各行のレイアウト行長の記憶をクリアする // CEditWndに引越し - m_pcEditWnd->InitAllViews(); + GetEditWnd().InitAllViews(); return; } @@ -418,12 +418,10 @@ void CEditDoc::InitAllView( void ) @date 2001.09.29 genta マクロクラスを渡すように @date 2002.01.03 YAZAKI m_tbMyButtonなどをCShareDataからCMenuDrawerへ移動したことによる修正。 */ -BOOL CEditDoc::Create( CEditWnd* pcEditWnd ) +BOOL CEditDoc::Create( void ) { MY_RUNNINGTIMER( cRunningTimer, L"CEditDoc::Create" ); - m_pcEditWnd = pcEditWnd; - // Oct. 2, 2001 genta m_cFuncLookup.Init( GetDllShareData().m_Common.m_sMacro.m_MacroTable, &GetDllShareData().m_Common ); @@ -500,11 +498,11 @@ void CEditDoc::GetEditInfo( wcscpy(pfi->m_szPath, m_cDocFile.GetFilePath()); //表示域 - pfi->m_nViewTopLine = m_pcEditWnd->GetActiveView().GetTextArea().GetViewTopLine(); /* 表示域の一番上の行(0開始) */ - pfi->m_nViewLeftCol = m_pcEditWnd->GetActiveView().GetTextArea().GetViewLeftCol(); /* 表示域の一番左の桁(0開始) */ + pfi->m_nViewTopLine = GetEditWnd().GetActiveView().GetTextArea().GetViewTopLine(); /* 表示域の一番上の行(0開始) */ + pfi->m_nViewLeftCol = GetEditWnd().GetActiveView().GetTextArea().GetViewLeftCol(); /* 表示域の一番左の桁(0開始) */ //キャレット位置 - pfi->m_ptCursor.Set(m_pcEditWnd->GetActiveView().GetCaret().GetCaretLogicPos()); + pfi->m_ptCursor.Set(GetEditWnd().GetActiveView().GetCaret().GetCaretLogicPos()); //各種状態 pfi->m_bIsModified = m_cDocEditor.IsModified(); /* 変更フラグ */ @@ -595,30 +593,30 @@ BOOL CEditDoc::HandleCommand( EFunctionCode nCommand ) switch( LOWORD( nCommand )){ case F_PREVWINDOW: //前のウィンドウ { - int nPane = m_pcEditWnd->m_cSplitterWnd.GetPrevPane(); + int nPane = GetEditWnd().m_cSplitterWnd.GetPrevPane(); if( -1 != nPane ){ - m_pcEditWnd->SetActivePane( nPane ); + GetEditWnd().SetActivePane( nPane ); }else{ - CControlTray::ActiveNextWindow( m_pcEditWnd->GetHwnd() ); + CControlTray::ActiveNextWindow( GetEditWnd().GetHwnd() ); } } return TRUE; case F_NEXTWINDOW: //次のウィンドウ { - int nPane = m_pcEditWnd->m_cSplitterWnd.GetNextPane(); + int nPane = GetEditWnd().m_cSplitterWnd.GetNextPane(); if( -1 != nPane ){ - m_pcEditWnd->SetActivePane( nPane ); + GetEditWnd().SetActivePane( nPane ); } else{ - CControlTray::ActivePrevWindow( m_pcEditWnd->GetHwnd() ); + CControlTray::ActivePrevWindow( GetEditWnd().GetHwnd() ); } } return TRUE; case F_CHG_CHARSET: - return m_pcEditWnd->GetActiveView().GetCommander().HandleCommand( nCommand, true, (LPARAM)CODE_NONE, 0, 0, 0 ); + return GetEditWnd().GetActiveView().GetCommander().HandleCommand( nCommand, true, (LPARAM)CODE_NONE, 0, 0, 0 ); default: - return m_pcEditWnd->GetActiveView().GetCommander().HandleCommand( nCommand, true, 0, 0, 0, 0 ); + return GetEditWnd().GetActiveView().GetCommander().HandleCommand( nCommand, true, 0, 0, 0, 0 ); } } @@ -639,7 +637,7 @@ void CEditDoc::OnChangeType() const STypeConfig& types = m_cDocType.GetDocumentAttribute(); m_cDocFile.SetCodeSet( types.m_encoding.m_eDefaultCodetype, types.m_encoding.m_bDefaultBom ); m_cDocEditor.m_cNewLineCode = types.m_encoding.m_eDefaultEoltype; - m_pcEditWnd->GetActiveView().GetCaret().ShowCaretPosInfo(); + GetEditWnd().GetActiveView().GetCaret().ShowCaretPosInfo(); } } @@ -665,7 +663,7 @@ void CEditDoc::OnChangeSetting( int i; HWND hwndProgress = NULL; - CEditWnd* pCEditWnd = m_pcEditWnd; // Sep. 10, 2002 genta + CEditWnd* pCEditWnd = &GetEditWnd(); // Sep. 10, 2002 genta if( NULL != pCEditWnd ){ hwndProgress = pCEditWnd->m_cStatusBar.GetProgressHwnd(); @@ -700,18 +698,18 @@ void CEditDoc::OnChangeSetting( CLogicPointEx* posSaveAry = NULL; - if( m_pcEditWnd->m_posSaveAry ){ + if( GetEditWnd().m_posSaveAry ){ if( bDoLayout ){ - posSaveAry = m_pcEditWnd->m_posSaveAry; - m_pcEditWnd->m_posSaveAry = NULL; + posSaveAry = GetEditWnd().m_posSaveAry; + GetEditWnd().m_posSaveAry = NULL; } }else{ - if( m_pcEditWnd->m_pPrintPreview ){ + if( GetEditWnd().m_pPrintPreview ){ // 一時的に設定を戻す SelectCharWidthCache( CWM_FONT_EDIT, CWM_CACHE_NEUTRAL ); } if( bDoLayout ){ - posSaveAry = m_pcEditWnd->SavePhysPosOfAllView(); + posSaveAry = GetEditWnd().SavePhysPosOfAllView(); } } @@ -755,12 +753,12 @@ void CEditDoc::OnChangeSetting( } // フォント更新 - m_pcEditWnd->m_pcViewFont->UpdateFont(&m_pcEditWnd->GetLogfont()); - m_pcEditWnd->m_pcViewFontMiniMap->UpdateFont(&m_pcEditWnd->GetLogfont()); + GetEditWnd().m_pcViewFont->UpdateFont(&GetEditWnd().GetLogfont()); + GetEditWnd().m_pcViewFontMiniMap->UpdateFont(&GetEditWnd().GetLogfont()); - InitCharWidthCache( m_pcEditWnd->m_pcViewFontMiniMap->GetLogfont(), CWM_FONT_MINIMAP ); - SelectCharWidthCache( CWM_FONT_EDIT, m_pcEditWnd->GetLogfontCacheMode() ); - InitCharWidthCache( m_pcEditWnd->GetLogfont() ); + InitCharWidthCache( GetEditWnd().m_pcViewFontMiniMap->GetLogfont(), CWM_FONT_MINIMAP ); + SelectCharWidthCache( CWM_FONT_EDIT, GetEditWnd().GetLogfontCacheMode() ); + InitCharWidthCache( GetEditWnd().GetLogfont() ); CKetaXInt nMaxLineKetas = ref.m_nMaxLineKetas; CKetaXInt nTabSpace = ref.m_nTabSpace; @@ -813,9 +811,9 @@ void CEditDoc::OnChangeSetting( nTabSpace = m_cLayoutMgr.GetTabSpaceKetas(); // 現在のタブ幅 } CProgressSubject* pOld = CEditApp::getInstance()->m_pcVisualProgress->CProgressListener::Listen(&m_cLayoutMgr); - m_cLayoutMgr.SetLayoutInfo( bDoLayout, bBlockingHook, ref, nTabSpace, nTsvMode, nMaxLineKetas, CLayoutXInt(-1), &m_pcEditWnd->GetLogfont() ); + m_cLayoutMgr.SetLayoutInfo( bDoLayout, bBlockingHook, ref, nTabSpace, nTsvMode, nMaxLineKetas, CLayoutXInt(-1), &GetEditWnd().GetLogfont() ); CEditApp::getInstance()->m_pcVisualProgress->CProgressListener::Listen(pOld); - m_pcEditWnd->ClearViewCaretPosInfo(); + GetEditWnd().ClearViewCaretPosInfo(); // 2009.08.28 nasukoji 「折り返さない」ならテキスト最大幅を算出、それ以外は変数をクリア if( m_nTextWrapMethodCur == WRAP_NO_TEXT_WRAP ) @@ -824,29 +822,29 @@ void CEditDoc::OnChangeSetting( m_cLayoutMgr.ClearLayoutLineWidth(); // 各行のレイアウト行長の記憶をクリアする /* ビューに設定変更を反映させる */ - int viewCount = m_pcEditWnd->GetAllViewCount(); + int viewCount = GetEditWnd().GetAllViewCount(); for( i = 0; i < viewCount; ++i ){ - m_pcEditWnd->GetView(i).OnChangeSetting(); + GetEditWnd().GetView(i).OnChangeSetting(); } - m_pcEditWnd->GetMiniMap().OnChangeSetting(); + GetEditWnd().GetMiniMap().OnChangeSetting(); if( posSaveAry ){ - m_pcEditWnd->RestorePhysPosOfAllView( posSaveAry ); + GetEditWnd().RestorePhysPosOfAllView( posSaveAry ); } for( i = 0; i < viewCount; i++ ){ - m_pcEditWnd->GetView(i).AdjustScrollBars(); // 2008.06.18 ryoji + GetEditWnd().GetView(i).AdjustScrollBars(); // 2008.06.18 ryoji } - m_pcEditWnd->GetMiniMap().AdjustScrollBars(); + GetEditWnd().GetMiniMap().AdjustScrollBars(); if( hwndProgress ){ ::ShowWindow( hwndProgress, SW_HIDE ); } - if( m_pcEditWnd->m_pPrintPreview ){ + if( GetEditWnd().m_pPrintPreview ){ // 設定を戻す SelectCharWidthCache( CWM_FONT_PRINT, CWM_CACHE_LOCAL ); } if(!bFromSetFontSize ){ // 親ウィンドウのタイトルを更新 - m_pcEditWnd->UpdateCaption(); + GetEditWnd().UpdateCaption(); } } @@ -958,7 +956,7 @@ BOOL CEditDoc::OnFileClose(bool bGrepNoConfirm) default: if (m_cDocFile.IsChgCodeSet()) { m_cDocFile.CancelChgCodeSet(); // 文字コードセットの変更をキャンセルする - this->m_pcEditWnd->GetActiveView().GetCaret().ShowCaretPosInfo(); // ステータス表示 + GetEditWnd().GetActiveView().GetCaret().ShowCaretPosInfo(); // ステータス表示 } return FALSE; } @@ -979,7 +977,7 @@ void CEditDoc::RunAutoMacro( int idx, LPCWSTR pszSaveFilePath ) { // 開ファイル/タイプ変更時はアウトラインを再解析する if( pszSaveFilePath == NULL ){ - m_pcEditWnd->m_cDlgFuncList.Refresh(); + GetEditWnd().m_cDlgFuncList.Refresh(); } static bool bRunning = false; diff --git a/sakura_core/doc/CEditDoc.h b/sakura_core/doc/CEditDoc.h index 535a583144..145e781c97 100644 --- a/sakura_core/doc/CEditDoc.h +++ b/sakura_core/doc/CEditDoc.h @@ -84,7 +84,7 @@ class CEditDoc ~CEditDoc(); //初期化 - BOOL Create( CEditWnd* pcEditWnd ); + BOOL Create( void ); void InitDoc(); /* 既存データのクリア */ void InitAllView(); /* 全ビューの初期化:ファイルオープン/クローズ時等に、ビューを初期化する */ void Clear(); @@ -123,7 +123,6 @@ class CEditDoc // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // public: //参照 - CEditWnd* m_pcEditWnd; // Sep. 10, 2002 //データ構造 CDocLineMgr m_cDocLineMgr; diff --git a/sakura_core/func/Funccode.cpp b/sakura_core/func/Funccode.cpp index 7b7f685177..fd54e51727 100644 --- a/sakura_core/func/Funccode.cpp +++ b/sakura_core/func/Funccode.cpp @@ -1045,7 +1045,7 @@ bool IsFuncEnable( const CEditDoc* pcEditDoc, const DLLSHAREDATA* pShareData, EF // 02/06/26 ai Start case F_JUMP_SRCHSTARTPOS: // 検索開始位置へ戻る - if( pcEditDoc->m_pcEditWnd->GetActiveView().m_ptSrchStartPos_PHY.BothNatural() ){ + if( GetEditWnd().GetActiveView().m_ptSrchStartPos_PHY.BothNatural() ){ return true; }else{ return false; @@ -1142,7 +1142,7 @@ bool IsFuncEnable( const CEditDoc* pcEditDoc, const DLLSHAREDATA* pShareData, EF case F_COPY_COLOR_HTML: //選択範囲内色付きHTMLコピー case F_COPY_COLOR_HTML_LINENUMBER: //選択範囲内行番号色付きHTMLコピー //テキストが選択されていればtrue - return pcEditDoc->m_pcEditWnd->GetActiveView().GetSelectionInfo().IsTextSelected(); + return GetEditWnd().GetActiveView().GetSelectionInfo().IsTextSelected(); case F_TOLOWER: /* 小文字 */ case F_TOUPPER: /* 大文字 */ @@ -1170,12 +1170,12 @@ bool IsFuncEnable( const CEditDoc* pcEditDoc, const DLLSHAREDATA* pShareData, EF case F_BASE64DECODE: /* Base64デコードして保存 */ case F_UUDECODE: //uudecodeして保存 //Oct. 17, 2000 jepro 説明を「選択部分をUUENCODEデコード」から変更 // テキストが選択されていればtrue - return pcEditDoc->m_pcEditWnd->GetActiveView().GetSelectionInfo().IsTextSelected(); + return GetEditWnd().GetActiveView().GetSelectionInfo().IsTextSelected(); case F_CUT_LINE: //行切り取り(折り返し単位) case F_DELETE_LINE: //行削除(折り返し単位) // テキストが選択されていなければtrue - return !pcEditDoc->m_pcEditWnd->GetActiveView().GetSelectionInfo().IsTextSelected(); + return !GetEditWnd().GetActiveView().GetSelectionInfo().IsTextSelected(); case F_UNDO: return pcEditDoc->m_cDocEditor.IsEnableUndo(); /* Undo(元に戻す)可能な状態か? */ case F_REDO: return pcEditDoc->m_cDocEditor.IsEnableRedo(); /* Redo(やり直し)可能な状態か? */ @@ -1183,7 +1183,7 @@ bool IsFuncEnable( const CEditDoc* pcEditDoc, const DLLSHAREDATA* pShareData, EF case F_OPEN_HfromtoC: //同名のC/C++ヘッダ(ソース)を開く //Feb. 7, 2001 JEPRO 追加 // case F_OPEN_HHPP: //同名のC/C++ヘッダファイルを開く //Feb. 9, 2001 jepro「.cまたは.cppと同名の.hを開く」から変更 del 2008/6/23 Uchi // case F_OPEN_CCPP: //同名のC/C++ソースファイルを開く //Feb. 9, 2001 jepro「.hと同名の.c(なければ.cpp)を開く」から変更 del 2008/6/23 Uchi - return pcEditDoc->m_cDocFile.GetFilePathClass().IsValidPath() && pcEditDoc->m_pcEditWnd->GetActiveView().GetCommander().Command_OPEN_HfromtoC(TRUE); + return pcEditDoc->m_cDocFile.GetFilePathClass().IsValidPath() && GetEditWnd().GetActiveView().GetCommander().Command_OPEN_HfromtoC(TRUE); case F_COPYPATH: case F_COPYDIRPATH: case F_COPYTAG: @@ -1221,12 +1221,12 @@ bool IsFuncEnable( const CEditDoc* pcEditDoc, const DLLSHAREDATA* pShareData, EF return IsPowerShellAvailable(); case F_JUMPHIST_PREV: // 移動履歴: 前へ - if( pcEditDoc->m_pcEditWnd->GetActiveView().m_cHistory->CheckPrev() ) + if( GetEditWnd().GetActiveView().m_cHistory->CheckPrev() ) return true; else return false; case F_JUMPHIST_NEXT: // 移動履歴: 次へ - if( pcEditDoc->m_pcEditWnd->GetActiveView().m_cHistory->CheckNext() ) + if( GetEditWnd().GetActiveView().m_cHistory->CheckNext() ) return true; else return false; @@ -1329,10 +1329,10 @@ bool IsFuncChecked( const CEditDoc* pcEditDoc, const DLLSHAREDATA* pShareData, E case F_ISEARCH_REGEXP_PREV: case F_ISEARCH_MIGEMO_NEXT: case F_ISEARCH_MIGEMO_PREV: - return pcEditDoc->m_pcEditWnd->GetActiveView().IsISearchEnabled( nId ); + return GetEditWnd().GetActiveView().IsISearchEnabled( nId ); case F_OUTLINE_TOGGLE: // 20060201 aroka アウトラインウィンドウ // ToDo:ブックマークリストが出ているときもへこんでしまう。 - return pcEditDoc->m_pcEditWnd->m_cDlgFuncList.GetHwnd() != NULL; + return GetEditWnd().m_cDlgFuncList.GetHwnd() != NULL; } //End 2004.07.14 Kazika diff --git a/sakura_core/macro/CMacro.cpp b/sakura_core/macro/CMacro.cpp index d3baf4ecae..85c1546a5c 100644 --- a/sakura_core/macro/CMacro.cpp +++ b/sakura_core/macro/CMacro.cpp @@ -178,10 +178,10 @@ void CMacro::AddLParam( const LPARAM* lParams, const CEditView* pcEditView ) case F_JUMP: // 指定行へジャンプ(ただしPL/SQLコンパイルエラー行へのジャンプは未対応) { - AddIntParam( pcEditView->m_pcEditWnd->m_cDlgJump.m_nLineNum ); + AddIntParam( GetEditWnd().m_cDlgJump.m_nLineNum ); LPARAM lFlag = 0x00; lFlag |= GetDllShareData().m_bLineNumIsCRLF_ForJump ? 0x01 : 0x00; - lFlag |= pcEditView->m_pcEditWnd->m_cDlgJump.m_bPLSQL ? 0x02 : 0x00; + lFlag |= GetEditWnd().m_cDlgJump.m_bPLSQL ? 0x02 : 0x00; AddIntParam( lFlag ); } break; @@ -206,7 +206,7 @@ void CMacro::AddLParam( const LPARAM* lParams, const CEditView* pcEditView ) case F_REPLACE_ALL: { AddStringParam( pcEditView->m_strCurSearchKey.c_str() ); // lParamを追加。 - AddStringParam( pcEditView->m_pcEditWnd->m_cDlgReplace.m_strText2.c_str() ); // lParamを追加。 + AddStringParam( GetEditWnd().m_cDlgReplace.m_strText2.c_str() ); // lParamを追加。 LPARAM lFlag = 0x00; lFlag |= pcEditView->m_sCurSearchOption.bWordOnly ? 0x01 : 0x00; @@ -215,9 +215,9 @@ void CMacro::AddLParam( const LPARAM* lParams, const CEditView* pcEditView ) lFlag |= GetDllShareData().m_Common.m_sSearch.m_bNOTIFYNOTFOUND ? 0x08 : 0x00; lFlag |= GetDllShareData().m_Common.m_sSearch.m_bAutoCloseDlgFind ? 0x10 : 0x00; lFlag |= GetDllShareData().m_Common.m_sSearch.m_bSearchAll ? 0x20 : 0x00; - lFlag |= pcEditView->m_pcEditWnd->m_cDlgReplace.m_nPaste ? 0x40 : 0x00; // CShareDataに入れなくていいの? + lFlag |= GetEditWnd().m_cDlgReplace.m_nPaste ? 0x40 : 0x00; // CShareDataに入れなくていいの? lFlag |= GetDllShareData().m_Common.m_sSearch.m_bSelectedArea ? 0x80 : 0x00; // 置換する時は選べない - lFlag |= pcEditView->m_pcEditWnd->m_cDlgReplace.m_nReplaceTarget << 8; // 8bitシフト(0x100で掛け算) + lFlag |= GetEditWnd().m_cDlgReplace.m_nReplaceTarget << 8; // 8bitシフト(0x100で掛け算) lFlag |= GetDllShareData().m_Common.m_sSearch.m_bConsecutiveAll ? 0x0400: 0x00; // 2007.01.16 ryoji AddIntParam( lFlag ); } @@ -228,13 +228,13 @@ void CMacro::AddLParam( const LPARAM* lParams, const CEditView* pcEditView ) CDlgGrep* pcDlgGrep; CDlgGrepReplace* pcDlgGrepRep; if( F_GREP == m_nFuncID ){ - pcDlgGrep = &pcEditView->m_pcEditWnd->m_cDlgGrep; + pcDlgGrep = &GetEditWnd().m_cDlgGrep; pcDlgGrepRep = NULL; AddStringParam( pcDlgGrep->m_strText.c_str() ); }else{ - pcDlgGrep = pcDlgGrepRep = &pcEditView->m_pcEditWnd->m_cDlgGrepReplace; + pcDlgGrep = pcDlgGrepRep = &GetEditWnd().m_cDlgGrepReplace; AddStringParam( pcDlgGrep->m_strText.c_str() ); - AddStringParam( pcEditView->m_pcEditWnd->m_cDlgGrepReplace.m_strText2.c_str() ); + AddStringParam( GetEditWnd().m_cDlgGrepReplace.m_strText2.c_str() ); } AddStringParam( GetDllShareData().m_sSearchKeywords.m_aGrepFiles[0] ); // lParamを追加。 AddStringParam( GetDllShareData().m_sSearchKeywords.m_aGrepFolders[0] ); // lParamを追加。 @@ -715,10 +715,10 @@ bool CMacro::HandleCommand( return false; } { - pcEditView->m_pcEditWnd->m_cDlgJump.m_nLineNum = _wtoi(Argument[0]); //ジャンプ先 + GetEditWnd().m_cDlgJump.m_nLineNum = _wtoi(Argument[0]); //ジャンプ先 LPARAM lFlag = Argument[1] != NULL ? _wtoi(Argument[1]) : 1; // デフォルト1 GetDllShareData().m_bLineNumIsCRLF_ForJump = ((lFlag & 0x01)!=0); - pcEditView->m_pcEditWnd->m_cDlgJump.m_bPLSQL = lFlag & 0x02 ? 1 : 0; + GetEditWnd().m_cDlgJump.m_bPLSQL = lFlag & 0x02 ? 1 : 0; pcEditView->GetCommander().HandleCommand( Index, true, 0, 0, 0, 0 ); // 標準 } break; @@ -933,7 +933,7 @@ bool CMacro::HandleCommand( return false; } { - CDlgReplace& cDlgReplace = pcEditView->m_pcEditWnd->m_cDlgReplace; + CDlgReplace& cDlgReplace = GetEditWnd().m_cDlgReplace; LPARAM lFlag = Argument[2] != NULL ? _wtoi(Argument[2]) : 0; SSearchOption sSearchOption; sSearchOption.bWordOnly = (0 != (lFlag & 0x01)); @@ -1328,13 +1328,13 @@ bool CMacro::HandleCommand( if( (val1 & 0x03) == 0 ){ pcEditView->SendStatusMessage( val0.c_str() ); }else if( (val1 & 0x03) == 1 ){ - if( NULL != pcEditView->m_pcEditWnd->m_cStatusBar.GetStatusHwnd() ){ + if( NULL != GetEditWnd().m_cStatusBar.GetStatusHwnd() ){ pcEditView->SendStatusMessage( val0.c_str() ); }else{ InfoMessage( pcEditView->GetHwnd(), L"%s", val0.c_str() ); } }else if( (val1 & 0x03) == 2 ){ - pcEditView->m_pcEditWnd->m_cStatusBar.SendStatusMessage2( val0.c_str() ); + GetEditWnd().m_cStatusBar.SendStatusMessage2( val0.c_str() ); } } break; @@ -1579,7 +1579,7 @@ bool CMacro::HandleFunction(CEditView *View, EFunctionCode ID, const VARIANT *Ar // 2013.04.30 Moca 条件追加。不要な場合はChangeLayoutParamを呼ばない if( 0 < varCopy.Data.iVal && nTab != varCopy.Data.iVal ){ View->GetDocument()->m_bTabSpaceCurTemp = true; - View->m_pcEditWnd->ChangeLayoutParam( + GetEditWnd().ChangeLayoutParam( false, CKetaXInt(varCopy.Data.iVal), View->m_pcEditDoc->m_cLayoutMgr.m_tsvInfo.m_nTsvMode, @@ -1591,7 +1591,7 @@ bool CMacro::HandleFunction(CEditView *View, EFunctionCode ID, const VARIANT *Ar // 最大幅の再算出時に各行のレイアウト長の計算も行う View->m_pcEditDoc->m_cLayoutMgr.CalculateTextWidth(); } - View->m_pcEditWnd->RedrawAllViews( NULL ); // TAB幅が変わったので再描画が必要 + GetEditWnd().RedrawAllViews( NULL ); // TAB幅が変わったので再描画が必要 } } return true; @@ -1683,7 +1683,7 @@ bool CMacro::HandleFunction(CEditView *View, EFunctionCode ID, const VARIANT *Ar return true; View->m_pcEditDoc->m_nTextWrapMethodCur = WRAP_SETTING_WIDTH; View->m_pcEditDoc->m_bTextWrapMethodCurTemp = !( View->m_pcEditDoc->m_nTextWrapMethodCur == View->m_pcEditDoc->m_cDocType.GetDocumentAttribute().m_nTextWrapMethod ); - View->m_pcEditWnd->ChangeLayoutParam( + GetEditWnd().ChangeLayoutParam( false, View->m_pcEditDoc->m_cLayoutMgr.GetTabSpaceKetas(), View->m_pcEditDoc->m_cLayoutMgr.m_tsvInfo.m_nTsvMode, @@ -2130,7 +2130,7 @@ bool CMacro::HandleFunction(CEditView *View, EFunctionCode ID, const VARIANT *Ar { if( 1 <= ArgSize ){ if( !VariantToI4(varCopy, Arguments[0]) ) return false; - int ret = (View->m_pcEditWnd->SetDrawSwitchOfAllViews(varCopy.Data.iVal != 0) ? 1: 0); + int ret = (GetEditWnd().SetDrawSwitchOfAllViews(varCopy.Data.iVal != 0) ? 1: 0); Wrap( &Result )->Receive( ret ); return true; } @@ -2144,7 +2144,7 @@ bool CMacro::HandleFunction(CEditView *View, EFunctionCode ID, const VARIANT *Ar } case F_ISSHOWNSTATUS: { - int ret = (NULL != View->m_pcEditWnd->m_cStatusBar.GetStatusHwnd() ? 1: 0); + int ret = (NULL != GetEditWnd().m_cStatusBar.GetStatusHwnd() ? 1: 0); Wrap( &Result )->Receive( ret ); return true; } diff --git a/sakura_core/macro/CMacroManagerBase.cpp b/sakura_core/macro/CMacroManagerBase.cpp index 9ed4e27741..0f6a083e4f 100644 --- a/sakura_core/macro/CMacroManagerBase.cpp +++ b/sakura_core/macro/CMacroManagerBase.cpp @@ -64,7 +64,7 @@ void CMacroBeforeAfter::ExecKeyMacroAfter( class CEditView* pcEditView, int flag pcEditView->SetUndoBuffer(); } } - pcEditView->m_pcEditWnd->SetDrawSwitchOfAllViews(m_bDrawSwitchOld); + GetEditWnd().SetDrawSwitchOfAllViews(m_bDrawSwitchOld); } // CMacroManagerBase diff --git a/sakura_core/outline/CDlgFuncList.cpp b/sakura_core/outline/CDlgFuncList.cpp index dd92ac1163..e8496cdac2 100644 --- a/sakura_core/outline/CDlgFuncList.cpp +++ b/sakura_core/outline/CDlgFuncList.cpp @@ -248,9 +248,8 @@ INT_PTR CDlgFuncList::DispatchEvent( HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM // それでは都合が悪いので,特別に以下の処理を行って他と同様な挙動が得られるようにする. if( (BOOL)wParam ){ CEditView* pcEditView = (CEditView*)m_lParam; - CEditWnd* pcEditWnd = pcEditView->m_pcEditWnd; if( ::GetActiveWindow() == GetHwnd() ){ - ::SetActiveWindow( pcEditWnd->GetHwnd() ); + ::SetActiveWindow( GetEditWnd().GetHwnd() ); BlockingHook( NULL ); // キュー内に溜まっているメッセージを処理 ::SetActiveWindow( GetHwnd() ); return 0L; @@ -400,7 +399,7 @@ HWND CDlgFuncList::DoModeless( pDlgTemplate->style = (WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | DS_SETFONT); hwndRet = CDialog::DoModeless( hInstance, MyGetAncestor(hwndParent, GA_ROOT), pDlgTemplate, lParam, SW_HIDE ); ::GlobalFree( pDlgTemplate ); - pcEditView->m_pcEditWnd->EndLayoutBars( m_bEditWndReady ); // 画面の再レイアウト + GetEditWnd().EndLayoutBars( m_bEditWndReady ); // 画面の再レイアウト }else{ hwndRet = CDialog::DoModeless( hInstance, MyGetAncestor(hwndParent, GA_ROOT), IDD_FUNCLIST, lParam, SW_SHOW ); } @@ -1748,7 +1747,7 @@ BOOL CDlgFuncList::OnInitDialog( HWND hwndDlg, WPARAM wParam, LPARAM lParam ) if( !IsDocking() && m_pShareData->m_Common.m_sOutline.m_bRememberOutlineWindowPos ){ WINDOWPLACEMENT cWindowPlacement; cWindowPlacement.length = sizeof( cWindowPlacement ); - if (::GetWindowPlacement( pcEditView->m_pcEditWnd->GetHwnd(), &cWindowPlacement )){ + if (::GetWindowPlacement( GetEditWnd().GetHwnd(), &cWindowPlacement )){ /* ウィンドウ位置・サイズを-1以外の値にしておくと、CDialogで使用される. */ m_xPos = m_pShareData->m_Common.m_sOutline.m_xOutlineWindowPos + cWindowPlacement.rcNormalPosition.left; m_yPos = m_pShareData->m_Common.m_sOutline.m_yOutlineWindowPos + cWindowPlacement.rcNormalPosition.top; @@ -1792,7 +1791,7 @@ BOOL CDlgFuncList::OnInitDialog( HWND hwndDlg, WPARAM wParam, LPARAM lParam ) } // 他ウィンドウに変更を通知する if( ProfDockSync() ){ - HWND hwndEdit = pcEditView->m_pcEditWnd->GetHwnd(); + HWND hwndEdit = GetEditWnd().GetHwnd(); PostOutlineNotifyToAllEditors( (WPARAM)0, (LPARAM)hwndEdit ); } } @@ -2282,7 +2281,7 @@ BOOL CDlgFuncList::OnDestroy( void ) /* アウトライン ■位置とサイズを記憶する */ // 20060201 aroka // 前提条件:m_lParam が CDialog::OnDestroy でクリアされないこと CEditView* pcEditView=(CEditView*)m_lParam; - HWND hwndEdit = pcEditView->m_pcEditWnd->GetHwnd(); + HWND hwndEdit = GetEditWnd().GetHwnd(); if( !IsDocking() && m_pShareData->m_Common.m_sOutline.m_bRememberOutlineWindowPos ){ /* 親のウィンドウ位置・サイズを記憶 */ WINDOWPLACEMENT cWindowPlacement; @@ -2299,7 +2298,7 @@ BOOL CDlgFuncList::OnDestroy( void ) // ドッキング画面を閉じるときは画面を再レイアウトする // ドッキングでアプリ終了時には hwndEdit は NULL になっている(親に先に WM_DESTROY が送られるため) if( IsDocking() && hwndEdit ) - pcEditView->m_pcEditWnd->EndLayoutBars(); + GetEditWnd().EndLayoutBars(); // 明示的にアウトライン画面を閉じたときだけアウトライン表示フラグを OFF にする // フローティングでアプリ終了時やタブモードで裏にいる場合は ::IsWindowVisible( hwndEdit ) が FALSE を返す @@ -2485,7 +2484,7 @@ BOOL CDlgFuncList::OnJump( bool bCheckAutoClose, bool bFileJump ) //2002.02.08 h m_pShareData->m_sWorkBuffer.m_LogicPoint = poCaret; // 2006.07.09 genta 移動時に選択状態を保持するように - ::SendMessageAny( ((CEditView*)m_lParam)->m_pcEditWnd->GetHwnd(), + ::SendMessageAny( GetEditWnd().GetHwnd(), MYWM_SETCARETPOS, 0, PM_SETCARETPOS_KEEPSELECT ); } if( bCheckAutoClose && bFileJumpSelf ){ @@ -2636,7 +2635,7 @@ void CDlgFuncList::GetDockSpaceRect( LPRECT pRect ) hwnd[nCount] = GetHwnd(); nCount++; } - hwnd[nCount] = pcEditView->m_pcEditWnd->GetMiniMap().GetHwnd(); + hwnd[nCount] = GetEditWnd().GetMiniMap().GetHwnd(); if( hwnd[nCount] != NULL ){ nCount++; } @@ -2958,7 +2957,7 @@ INT_PTR CDlgFuncList::OnMouseMove( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM l ::SetWindowPos( GetHwnd(), NULL, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, SWP_NOOWNERZORDER | SWP_NOZORDER | SWP_NOACTIVATE ); - ((CEditView*)m_lParam)->m_pcEditWnd->EndLayoutBars( m_bEditWndReady ); + GetEditWnd().EndLayoutBars( m_bEditWndReady ); // 移動後の配置情報を記憶する GetWindowRect( GetHwnd(), &rc ); @@ -3045,7 +3044,7 @@ INT_PTR CDlgFuncList::OnLButtonUp( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM l if( ProfDockSync() ){ // 他ウィンドウに変更を通知する - HWND hwndEdit = ((CEditView*)m_lParam)->m_pcEditWnd->GetHwnd(); + HWND hwndEdit = GetEditWnd().GetHwnd(); PostOutlineNotifyToAllEditors( (WPARAM)0, (LPARAM)hwndEdit ); } return 1L; @@ -3183,7 +3182,7 @@ INT_PTR CDlgFuncList::OnNcPaint( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPa void CDlgFuncList::DoMenu( POINT pt, HWND hwndFrom ) { // メニューを作成する - CEditView* pcEditView = &CEditDoc::GetInstance(0)->m_pcEditWnd->GetActiveView(); + CEditView* pcEditView = &GetEditWnd().GetActiveView(); CDocTypeManager().GetTypeConfig( CTypeConfig(m_nDocType), m_type ); EDockSide eDockSide = ProfDockSide(); // 設定上の配置 UINT uFlags = MF_BYPOSITION | MF_STRING; @@ -3262,7 +3261,7 @@ void CDlgFuncList::DoMenu( POINT pt, HWND hwndFrom ) // メニュー選択された状態に切り替える EFunctionCode nFuncCode = GetFuncCodeRedraw(m_nOutlineType); - HWND hwndEdit = pcEditView->m_pcEditWnd->GetHwnd(); + HWND hwndEdit = GetEditWnd().GetHwnd(); if( nId == 450 ){ // 更新 CEditView* pcEditView = (CEditView*)m_lParam; pcEditView->GetCommander().HandleCommand( nFuncCode, true, SHOW_RELOAD, 0, 0, 0 ); @@ -3292,7 +3291,7 @@ void CDlgFuncList::DoMenu( POINT pt, HWND hwndFrom ) if( pCDocLine ){ CBookmarkSetter cBookmark(pCDocLine); cBookmark.SetBookmark(false); - pcEditView->m_pcEditWnd->Views_Redraw(); + GetEditWnd().Views_Redraw(); } } pcEditView->GetCommander().HandleCommand(nFuncCode, true, SHOW_RELOAD, 0, 0, 0); @@ -3395,7 +3394,7 @@ void CDlgFuncList::DoMenu( POINT pt, HWND hwndFrom ) */ void CDlgFuncList::Refresh( void ) { - CEditWnd* pcEditWnd = CEditDoc::GetInstance(0)->m_pcEditWnd; + CEditWnd* pcEditWnd = &GetEditWnd(); BOOL bReloaded = ChangeLayout( OUTLINE_LAYOUT_FILECHANGED ); // 現在設定に従ってアウトライン画面を再配置する if( !bReloaded && pcEditWnd->m_cDlgFuncList.GetHwnd() ){ EOutlineType nOutlineType = GetOutlineTypeRedraw(m_nOutlineType); @@ -3439,8 +3438,8 @@ bool CDlgFuncList::ChangeLayout( int nId ) if( nId == OUTLINE_LAYOUT_FILECHANGED ) return false; // ファイル切替ではフローティングは開かない(従来互換) } // ※ 裏では一時的に Disable 化しておいて開く(タブモードでの不正な画面切り替え抑止) - CEditView* pcEditView = &pDoc->m_pcEditWnd->GetActiveView(); - if( nId == OUTLINE_LAYOUT_BACKGROUND ) ::EnableWindow( pcEditView->m_pcEditWnd->GetHwnd(), FALSE ); + CEditView* pcEditView = &GetEditWnd().GetActiveView(); + if( nId == OUTLINE_LAYOUT_BACKGROUND ) ::EnableWindow( GetEditWnd().GetHwnd(), FALSE ); if( m_nOutlineType == OUTLINE_DEFAULT ){ bool bType = (ProfDockSet() != 0); if( bType ){ @@ -3452,7 +3451,7 @@ bool CDlgFuncList::ChangeLayout( int nId ) } EOutlineType nOutlineType = GetOutlineTypeRedraw(m_nOutlineType); // ブックマークかアウトライン解析かは最後に開いていた時の状態を引き継ぐ(初期状態はアウトライン解析) pcEditView->GetCommander().Command_FUNCLIST( SHOW_NORMAL, nOutlineType ); // 開く ※ HandleCommand(F_OUTLINE,...) だと印刷プレビュー状態で実行されないので Command_FUNCLIST() - if( nId == OUTLINE_LAYOUT_BACKGROUND ) ::EnableWindow( pcEditView->m_pcEditWnd->GetHwnd(), TRUE ); + if( nId == OUTLINE_LAYOUT_BACKGROUND ) ::EnableWindow( GetEditWnd().GetHwnd(), TRUE ); return true; // 解析した } }else{ // 現在は表示 @@ -3477,7 +3476,7 @@ bool CDlgFuncList::ChangeLayout( int nId ) if( nId == OUTLINE_LAYOUT_FILECHANGED ) return false; // ファイル切替ではフローティングは開かない(従来互換) } // ※ 裏では一時的に Disable 化しておいて開く(タブモードでの不正な画面切り替え抑止) - if( nId == OUTLINE_LAYOUT_BACKGROUND ) ::EnableWindow( pcEditView->m_pcEditWnd->GetHwnd(), FALSE ); + if( nId == OUTLINE_LAYOUT_BACKGROUND ) ::EnableWindow( GetEditWnd().GetHwnd(), FALSE ); if( m_nOutlineType == OUTLINE_DEFAULT ){ bool bType = (ProfDockSet() != 0); if( bType ){ @@ -3489,7 +3488,7 @@ bool CDlgFuncList::ChangeLayout( int nId ) } EOutlineType nOutlineType = GetOutlineTypeRedraw(m_nOutlineType); pcEditView->GetCommander().Command_FUNCLIST( SHOW_NORMAL, nOutlineType ); // 開く ※ HandleCommand(F_OUTLINE,...) だと印刷プレビュー状態で実行されないので Command_FUNCLIST() - if( nId == OUTLINE_LAYOUT_BACKGROUND ) ::EnableWindow( pcEditView->m_pcEditWnd->GetHwnd(), TRUE ); + if( nId == OUTLINE_LAYOUT_BACKGROUND ) ::EnableWindow( GetEditWnd().GetHwnd(), TRUE ); return true; // 解析した } @@ -3532,7 +3531,7 @@ bool CDlgFuncList::ChangeLayout( int nId ) ::SetWindowPos( GetHwnd(), NULL, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, SWP_NOOWNERZORDER | SWP_NOZORDER | SWP_NOACTIVATE | ((eDockSideOld == eDockSideNew)? 0: SWP_FRAMECHANGED) ); // SWP_FRAMECHANGED 指定で WM_NCCALCSIZE(非クライアント領域の再計算)に誘導する - pcEditView->m_pcEditWnd->EndLayoutBars( m_bEditWndReady ); + GetEditWnd().EndLayoutBars( m_bEditWndReady ); } return false; } @@ -3549,7 +3548,7 @@ void CDlgFuncList::OnOutlineNotify( WPARAM wParam, LPARAM lParam ) CEditDoc* pDoc = CEditDoc::GetInstance(0); // 今は非表示かもしれないので (CEditView*)m_lParam は使えない switch( wParam ){ case 0: // 設定変更通知(ドッキングモード or サイズ), lParam: 通知元の HWND - if( (HWND)lParam == pDoc->m_pcEditWnd->GetHwnd() ) + if( (HWND)lParam == GetEditWnd().GetHwnd() ) return; // 自分からの通知は無視 ChangeLayout( OUTLINE_LAYOUT_BACKGROUND ); // アウトライン画面を再配置 break; @@ -3796,7 +3795,7 @@ BOOL CDlgFuncList::Track( POINT ptDrag ) ::MoveWindow( GetHwnd(), rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, TRUE ); } if( ProfDockSync() ){ - PostOutlineNotifyToAllEditors( (WPARAM)0, (LPARAM)((CEditView*)m_lParam)->m_pcEditWnd->GetHwnd() ); // 他ウィンドウにドッキング配置変更を通知する + PostOutlineNotifyToAllEditors( (WPARAM)0, (LPARAM)GetEditWnd().GetHwnd() ); // 他ウィンドウにドッキング配置変更を通知する } return TRUE; } diff --git a/sakura_core/plugin/CPluginIfObj.h b/sakura_core/plugin/CPluginIfObj.h index 4355ced949..34d1cf9193 100644 --- a/sakura_core/plugin/CPluginIfObj.h +++ b/sakura_core/plugin/CPluginIfObj.h @@ -175,7 +175,7 @@ class CPluginIfObj : public CWSHIfObj { case F_PL_ADDCOMMAND: //コマンドを追加する { int id = m_cPlugin.AddCommand( Arguments[0], Arguments[1], Arguments[2], true ); - View->m_pcEditWnd->RegisterPluginCommand( id ); + GetEditWnd().RegisterPluginCommand( id ); } break; } diff --git a/sakura_core/recent/CMruListener.cpp b/sakura_core/recent/CMruListener.cpp index 57e81a27b6..770a63f401 100644 --- a/sakura_core/recent/CMruListener.cpp +++ b/sakura_core/recent/CMruListener.cpp @@ -160,7 +160,7 @@ void CMruListener::OnAfterLoad(const SLoadInfo& sLoadInfo) pcDoc->m_cLayoutMgr.LogicToLayout(eiOld.m_ptCursor, &ptCaretPos); //ビュー取得 - CEditView& cView = pcDoc->m_pcEditWnd->GetActiveView(); + CEditView& cView = GetEditWnd().GetActiveView(); if( ptCaretPos.GetY2() >= pcDoc->m_cLayoutMgr.GetLineCount() ){ //ファイルの最後に移動 diff --git a/sakura_core/util/MessageBoxF.cpp b/sakura_core/util/MessageBoxF.cpp index 0ac4e290e3..14128f141c 100644 --- a/sakura_core/util/MessageBoxF.cpp +++ b/sakura_core/util/MessageBoxF.cpp @@ -74,14 +74,24 @@ int Wrap_MessageBox(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType) ); } -HWND GetMessageBoxOwner(HWND hwndOwner) +/*! + * メッセージボックスのオーナーウインドウを取得します。 + * + * @param [in,opt] hWndOwner オーナーウインドウ + * @returns メッセージボックスのオーナーウインドウ + * @retval CEditWnd().GetHwnd() 指定したオーナーウインドウが不正値で、メインウインドウが作成済みの場合 + * @retval hWndOwner 指定したオーナーウインドウが適正値で、メインウインドウが未作成の場合 + */ +HWND GetMessageBoxOwner(HWND hWndOwner) { - if(hwndOwner==NULL && g_pcEditWnd){ - return g_pcEditWnd->GetHwnd(); - } - else{ - return hwndOwner; + if (!hWndOwner || !::IsWindow(hWndOwner)) + { + if (auto pcEditWnd = CEditWnd::getInstance()) + { + hWndOwner = pcEditWnd->GetHwnd(); + } } + return hWndOwner; } /*! diff --git a/sakura_core/view/CCaret.cpp b/sakura_core/view/CCaret.cpp index 7b212ad1ec..bf6eadc4fa 100644 --- a/sakura_core/view/CCaret.cpp +++ b/sakura_core/view/CCaret.cpp @@ -301,7 +301,7 @@ CLayoutInt CCaret::MoveCursor( if( m_pEditView->GetDrawSwitch() ){ m_pEditView->InvalidateRect( NULL ); m_pEditView->UpdateWindow(); - if( m_pEditView->m_pcEditWnd->GetMiniMap().GetHwnd() ){ + if( GetEditWnd().GetMiniMap().GetHwnd() ){ m_pEditView->MiniMapRedraw(true); } } @@ -336,7 +336,7 @@ CLayoutInt CCaret::MoveCursor( if( m_pEditView->GetDrawSwitch() ){ m_pEditView->ScrollDraw(nScrollRowNum, nScrollColNum, rcScroll, rcClip, rcClip2); - if( m_pEditView->m_pcEditWnd->GetMiniMap().GetHwnd() ){ + if( GetEditWnd().GetMiniMap().GetHwnd() ){ m_pEditView->MiniMapRedraw(false); } } @@ -383,7 +383,7 @@ CLayoutInt CCaret::MoveCursor( // アウトライン表示の選択位置を更新 CLayoutPoint poCaret = GetCaretLayoutPos(); - m_pEditDoc->m_pcEditWnd->m_cDlgFuncList.NotifyCaretMovement( poCaret.GetY2() + 1, poCaret.GetX2() + 1 ); + GetEditWnd().m_cDlgFuncList.NotifyCaretMovement( poCaret.GetY2() + 1, poCaret.GetX2() + 1 ); return nScrollRowNum; } @@ -665,7 +665,7 @@ void CCaret::ShowCaretPosInfo() } // ステータスバーハンドルを取得 - HWND hwndStatusBar = m_pEditDoc->m_pcEditWnd->m_cStatusBar.GetStatusHwnd(); + HWND hwndStatusBar = GetEditWnd().m_cStatusBar.GetStatusHwnd(); // カーソル位置の文字列を取得 const CLayout* pcLayout; @@ -826,7 +826,7 @@ void CCaret::ShowCaretPosInfo() szLeft, szRight ); - m_pEditDoc->m_pcEditWnd->PrintMenubarMessage( szText ); + GetEditWnd().PrintMenubarMessage( szText ); } // ステータスバーに状態を書き出す else{ @@ -841,13 +841,13 @@ void CCaret::ShowCaretPosInfo() } WCHAR szFontSize[16]; - if( const double nZoomPercentage = m_pEditDoc->m_pcEditWnd->GetFontZoom() * 100.0; nZoomPercentage < 5.0 ){ + if( const double nZoomPercentage = GetEditWnd().GetFontZoom() * 100.0; nZoomPercentage < 5.0 ){ auto_sprintf_s( szFontSize, _countof(szFontSize), LS( STR_STATUS_FONTZOOM_1 ), nZoomPercentage ); }else{ auto_sprintf_s( szFontSize, _countof(szFontSize), LS( STR_STATUS_FONTZOOM_0 ), nZoomPercentage ); } - auto& statusBar = m_pEditDoc->m_pcEditWnd->m_cStatusBar; + auto& statusBar = GetEditWnd().m_cStatusBar; // SB_SETTEXT メッセージでステータスバーに文字列を設定する度に再描画が行われるのを防ぐ為に // 設定時にパートのRECTを取得し最後にまとめて再描画を行う HWND hWnd = statusBar.GetStatusHwnd(); diff --git a/sakura_core/view/CEditView.cpp b/sakura_core/view/CEditView.cpp index 1df0b059bc..e55806fab1 100644 --- a/sakura_core/view/CEditView.cpp +++ b/sakura_core/view/CEditView.cpp @@ -136,9 +136,8 @@ VOID CALLBACK EditViewTimerProc( // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // // @date 2002.2.17 YAZAKI CShareDataのインスタンスは、CProcessにひとつあるのみ。 -CEditView::CEditView(CEditWnd* pcEditWnd) +CEditView::CEditView( void ) : CViewCalc(this) // warning C4355: 'this' : ベース メンバー初期化子リストで使用されました。 -, m_pcEditWnd(pcEditWnd) , m_pcTextArea(NULL) , m_pcCaret(NULL) , m_pcRuler(NULL) @@ -173,9 +172,9 @@ BOOL CEditView::Create( m_pcCaret = new CCaret(this, pcEditDoc); m_pcRuler = new CRuler(this, pcEditDoc); if( m_bMiniMap ){ - m_pcViewFont = m_pcEditWnd->m_pcViewFontMiniMap; + m_pcViewFont = GetEditWnd().m_pcViewFontMiniMap; }else{ - m_pcViewFont = m_pcEditWnd->m_pcViewFont; + m_pcViewFont = GetEditWnd().m_pcViewFont; } m_cHistory = new CAutoMarkMgr; @@ -443,7 +442,7 @@ LRESULT CEditView::DispatchEvent( switch ( uMsg ){ case WM_MOUSEWHEEL: - if( m_pcEditWnd->DoMouseWheel( wParam, lParam ) ){ + if( GetEditWnd().DoMouseWheel( wParam, lParam ) ){ return 0L; } return OnMOUSEWHEEL( wParam, lParam ); @@ -506,14 +505,14 @@ LRESULT CEditView::DispatchEvent( OnSetFocus(); /* 親ウィンドウのタイトルを更新 */ - m_pcEditWnd->UpdateCaption(); + GetEditWnd().UpdateCaption(); return 0L; case WM_KILLFOCUS: OnKillFocus(); // 2009.01.17 nasukoji ホイールスクロール有無状態をクリア - m_pcEditWnd->ClearMouseState(); + GetEditWnd().ClearMouseState(); return 0L; case WM_CHAR: @@ -626,7 +625,7 @@ LRESULT CEditView::DispatchEvent( // 2007.10.12 genta フォーカス移動のため,OnLBUTTONDBLCLKより移動 if(m_bActivateByMouse){ /* アクティブなペインを設定 */ - m_pcEditWnd->SetActivePane( m_nMyIndex ); + GetEditWnd().SetActivePane( m_nMyIndex ); // カーソルをクリック位置へ移動する OnLBUTTONDOWN( wParam, (short)LOWORD( lParam ), (short)HIWORD( lParam ) ); // 2007.10.02 nasukoji @@ -669,9 +668,9 @@ LRESULT CEditView::DispatchEvent( // case WM_RBUTTONDOWN: // MYTRACE( L" WM_RBUTTONDOWN wParam=%08xh, x=%d y=%d\n", wParam, LOWORD( lParam ), HIWORD( lParam ) ); // OnRBUTTONDOWN( wParam, (short)LOWORD( lParam ), (short)HIWORD( lParam ) ); -// if( m_nMyIndex != m_pcEditWnd->GetActivePane() ){ +// if( m_nMyIndex != GetEditWnd().GetActivePane() ){ // /* アクティブなペインを設定 */ -// m_pcEditWnd->SetActivePane( m_nMyIndex ); +// GetEditWnd().SetActivePane( m_nMyIndex ); // } // return 0L; case WM_RBUTTONUP: @@ -745,7 +744,7 @@ LRESULT CEditView::DispatchEvent( m_dwTipTimer = ::GetTickCount(); /* 辞書Tip起動タイマー */ } if( m_bHokan ){ - m_pcEditWnd->m_cHokanMgr.Hide(); + GetEditWnd().m_cHokanMgr.Hide(); m_bHokan = FALSE; } return 0L; @@ -812,7 +811,7 @@ LRESULT CEditView::DispatchEvent( return 0L; case MYWM_SETACTIVEPANE: - m_pcEditWnd->SetActivePane( m_nMyIndex ); + GetEditWnd().SetActivePane( m_nMyIndex ); ::PostMessageAny( m_hwndParent, MYWM_SETACTIVEPANE, (WPARAM)m_nMyIndex, 0 ); return 0L; @@ -851,7 +850,7 @@ LRESULT CEditView::DispatchEvent( // マウスクリックによりバックグラウンドウィンドウがアクティベートされた // 2007.10.08 genta オプション追加 if( GetDllShareData().m_Common.m_sGeneral.m_bNoCaretMoveByActivation && - (! m_pcEditWnd->IsActiveApp())) + (! GetEditWnd().IsActiveApp())) { m_bActivateByMouse = TRUE; // マウスによるアクティベート return MA_ACTIVATEANDEAT; // アクティベート後イベントを破棄 @@ -866,7 +865,7 @@ LRESULT CEditView::DispatchEvent( // ビュー上にマウスがあるので SetActivePane() を直接呼び出す // (個別のマウスメッセージが届く前にアクティブペインを設定しておく) if( !m_bMiniMap ){ - m_pcEditWnd->SetActivePane( m_nMyIndex ); + GetEditWnd().SetActivePane( m_nMyIndex ); } }else if( (m_pcsbwVSplitBox && hwndCursorPos == m_pcsbwVSplitBox->GetHwnd()) || (m_pcsbwHSplitBox && hwndCursorPos == m_pcsbwHSplitBox->GetHwnd()) ){ @@ -979,7 +978,7 @@ void CEditView::OnSize( int cx, int cy ) if( m_pcEditDoc->m_nTextWrapMethodCur == WRAP_WINDOW_WIDTH ){ if( m_nMyIndex == 0 ){ // 左上隅のビューのサイズ変更時のみ処理する // 右端で折り返すモードなら右端で折り返す // 2008.06.08 ryoji - wrapChanged = m_pcEditWnd->WrapWindowWidth( 0 ); + wrapChanged = GetEditWnd().WrapWindowWidth( 0 ); } } @@ -1022,10 +1021,10 @@ void CEditView::OnSize( int cx, int cy ) } /* 親ウィンドウのタイトルを更新 */ - // m_pcEditWnd->UpdateCaption(); // [Q] genta 本当に必要? + // GetEditWnd().UpdateCaption(); // [Q] genta 本当に必要? - if( m_pcEditWnd->GetMiniMap().GetHwnd() ){ - CEditView& miniMap = m_pcEditWnd->GetMiniMap(); + if( GetEditWnd().GetMiniMap().GetHwnd() ){ + CEditView& miniMap = GetEditWnd().GetMiniMap(); if( miniMap.m_nPageViewTop != GetTextArea().GetViewTopLine() || miniMap.m_nPageViewBottom != GetTextArea().GetBottomLine() ){ MiniMapRedraw(true); @@ -1062,10 +1061,10 @@ void CEditView::OnSetFocus( void ) m_bDrawBracketPairFlag = TRUE; DrawBracketPair( true ); - m_pcEditWnd->m_cToolbar.AcceptSharedSearchKey(); + GetEditWnd().m_cToolbar.AcceptSharedSearchKey(); - if( m_pcEditWnd->GetMiniMap().GetHwnd() ){ - CEditView& miniMap = m_pcEditWnd->GetMiniMap(); + if( GetEditWnd().GetMiniMap().GetHwnd() ){ + CEditView& miniMap = GetEditWnd().GetMiniMap(); if( miniMap.m_nPageViewTop != GetTextArea().GetViewTopLine() || miniMap.m_nPageViewBottom != GetTextArea().GetBottomLine() ){ MiniMapRedraw(true); @@ -1099,7 +1098,7 @@ void CEditView::OnKillFocus( void ) } if( m_bHokan ){ - m_pcEditWnd->m_cHokanMgr.Hide(); + GetEditWnd().m_cHokanMgr.Hide(); m_bHokan = FALSE; } if( m_nAutoScrollMode ){ @@ -1307,7 +1306,7 @@ VOID CEditView::OnTimer( bool bHide; if( MiniMapCursorLineTip( &po, &rc, &bHide ) ){ m_cTipWnd.m_bAlignLeft = true; - m_cTipWnd.Show( po.x, po.y + m_pcEditWnd->GetActiveView().GetTextMetrics().GetHankakuHeight() ); + m_cTipWnd.Show( po.x, po.y + GetEditWnd().GetActiveView().GetTextMetrics().GetHankakuHeight() ); }else{ if( bHide && 0 == m_dwTipTimer ){ m_cTipWnd.Hide(); @@ -1501,7 +1500,7 @@ int CEditView::CreatePopUpMenu_R( void ) HMENU hMenu; int nMenuIdx; - CMenuDrawer& cMenuDrawer = m_pcEditWnd->GetMenuDrawer(); + CMenuDrawer& cMenuDrawer = GetEditWnd().GetMenuDrawer(); cMenuDrawer.ResetContents(); /* 右クリックメニューの定義はカスタムメニュー配列の0番目 */ @@ -1519,7 +1518,7 @@ int CEditView::CreatePopUpMenu_R( void ) void CEditView::AddKeyHelpMenu(HMENU hMenu, EKeyHelpRMenuType eRmenuType) { - CMenuDrawer& cMenuDrawer = m_pcEditWnd->GetMenuDrawer(); + CMenuDrawer& cMenuDrawer = GetEditWnd().GetMenuDrawer(); // 2010.07.24 Moca オーナードロー対応のために前に移動してCMenuDrawer経由で追加する if( !GetSelectionInfo().IsMouseSelecting() && eRmenuType != KEYHELP_RMENU_NONE ){ POINT po; @@ -1548,7 +1547,7 @@ int CEditView::CreatePopUpMenuSub( HMENU hMenu, int nMenuIdx, int* pParentMenus, WCHAR szLabel[300]; int nParentMenu[MAX_CUSTOM_MENU + 1]; - CMenuDrawer& cMenuDrawer = m_pcEditWnd->GetMenuDrawer(); + CMenuDrawer& cMenuDrawer = GetEditWnd().GetMenuDrawer(); CFuncLookup& FuncLookup = m_pcEditDoc->m_cFuncLookup; int nParamIndex = 0; @@ -1618,12 +1617,12 @@ int CEditView::CreatePopUpMenuSub( HMENU hMenu, int nMenuIdx, int* pParentMenus, FuncLookup.Funccode2Name( code, szLabel, 256 ); /* キー */ if( F_SPECIAL_FIRST <= code && code <= F_SPECIAL_LAST ){ - m_pcEditWnd->InitMenu_Special( hMenu, code ); + GetEditWnd().InitMenu_Special( hMenu, code ); }else{ wchar_t keys[2]; keys[0] = GetDllShareData().m_Common.m_sCustomMenu.m_nCustMenuItemKeyArr[nMenuIdx][i]; keys[1] = 0; - m_pcEditWnd->InitMenu_Function( hMenu, code, szLabel, keys ); + GetEditWnd().InitMenu_Function( hMenu, code, szLabel, keys ); } } } @@ -1724,7 +1723,7 @@ void CEditView::OnChangeSetting() m_cTipWnd.ChangeFont( &(GetDllShareData().m_Common.m_sHelper.m_lf) ); /* 再描画 */ - if( !m_pcEditWnd->m_pPrintPreview ){ + if( !GetEditWnd().m_pPrintPreview ){ ::InvalidateRect( GetHwnd(), NULL, TRUE ); } CTypeSupport cTextType(this, COLORIDX_TEXT); @@ -2568,7 +2567,7 @@ void CEditView::CaretUnderLineOFF( bool bDraw, bool bDrawPaint, bool bResetFlag, */ void CEditView::SendStatusMessage( const WCHAR* msg ) { - m_pcEditWnd->SendStatusMessage( msg ); + GetEditWnd().SendStatusMessage( msg ); } // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // @@ -2611,7 +2610,7 @@ void CEditView::OnAfterLoad(const SLoadInfo& sLoadInfo) // -- -- -- -- -- -- -- -- -- -- -- -- -- -- // // 2004.05.13 Moca 改行コードの設定内からここに移動 - m_pcEditWnd->GetActiveView().GetCaret().ShowCaretPosInfo(); + GetEditWnd().GetActiveView().GetCaret().ShowCaretPosInfo(); } // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // @@ -2761,9 +2760,9 @@ void CEditView::SetUndoBuffer(bool bPaintLineNumber) // && m_pcEditDoc->m_cDocEditor.m_cOpeBuf.GetCurrentPointer() == 1 ) // 全Undo状態からの変更か? // 2009.03.26 ryoji // Call_OnPaint( PAINT_LINENUMBER, false ); // 自ペインの行番号(変更行)表示を更新 ← 変更行のみの表示更新で済ませている場合があるため - if( !m_pcEditWnd->UpdateTextWrap() ){ // 折り返し方法関連の更新 // 2008.06.10 ryoji + if( !GetEditWnd().UpdateTextWrap() ){ // 折り返し方法関連の更新 // 2008.06.10 ryoji if( 0 < m_cCommander.GetOpeBlk()->GetNum() - GetDocument()->m_cDocEditor.m_nOpeBlkRedawCount ){ - m_pcEditWnd->RedrawAllViews( this ); // 他のペインの表示を更新 + GetEditWnd().RedrawAllViews( this ); // 他のペインの表示を更新 } } } diff --git a/sakura_core/view/CEditView.h b/sakura_core/view/CEditView.h index 3caf48a996..23c4dfed99 100644 --- a/sakura_core/view/CEditView.h +++ b/sakura_core/view/CEditView.h @@ -157,7 +157,7 @@ class CEditView // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // public: /* Constructors */ - CEditView(CEditWnd* pcEditWnd); + CEditView( void ); ~CEditView(); void Close(); /* 初期化系メンバ関数 */ @@ -620,7 +620,6 @@ class CEditView // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // public: //参照 - CEditWnd* m_pcEditWnd; //!< ウィンドウ CEditDoc* m_pcEditDoc; //!< ドキュメント const STypeConfig* m_pTypeData; diff --git a/sakura_core/view/CEditView_CmdHokan.cpp b/sakura_core/view/CEditView_CmdHokan.cpp index cc458728de..a778bc4ca0 100644 --- a/sakura_core/view/CEditView_CmdHokan.cpp +++ b/sakura_core/view/CEditView_CmdHokan.cpp @@ -41,7 +41,7 @@ void CEditView::PreprocessCommand_hokan( int nCommand ) && nCommand != F_IME_CHAR // 漢字入力 && nCommand != F_DELETE_BACK // カーソル前を削除 ){ - m_pcEditWnd->m_cHokanMgr.Hide(); + GetEditWnd().m_cHokanMgr.Hide(); m_bHokan = FALSE; } } @@ -63,7 +63,7 @@ void CEditView::PostprocessCommand_hokan(void) ShowHokanMgr( cmemData, FALSE ); }else{ if( m_bHokan ){ - m_pcEditWnd->m_cHokanMgr.Hide(); + GetEditWnd().m_cHokanMgr.Hide(); m_bHokan = FALSE; } } @@ -122,14 +122,14 @@ void CEditView::ShowHokanMgr( CNativeW& cmemData, BOOL bAutoDecided ) // エディタ起動時だとエディタ可視化の途中になぜか不可視の入力補完ウィンドウが一時的にフォアグラウンドになって、 // タブバーに新規タブが追加されるときのタブ切替でタイトルバーがちらつく(一瞬非アクティブ表示になるのがはっきり見える)ことがあった。 // ※ Vista/7 の特定の PC でだけのちらつきか? 該当 PC 以外の Vista/7 PC でもたまに微妙に表示が乱れた感じになる程度の症状が見られたが、それらが同一原因かどうかは不明。 - if( !m_pcEditWnd->m_cHokanMgr.GetHwnd() ){ - m_pcEditWnd->m_cHokanMgr.DoModeless( + if( !GetEditWnd().m_cHokanMgr.GetHwnd() ){ + GetEditWnd().m_cHokanMgr.DoModeless( G_AppInstance(), - m_pcEditWnd->GetHwnd(), + GetEditWnd().GetHwnd(), (LPARAM)this ); } - nKouhoNum = m_pcEditWnd->m_cHokanMgr.CHokanMgr::Search( + nKouhoNum = GetEditWnd().m_cHokanMgr.CHokanMgr::Search( &poWin, GetTextMetrics().GetHankakuHeight(), GetTextMetrics().GetHankakuDx(), @@ -144,7 +144,7 @@ void CEditView::ShowHokanMgr( CNativeW& cmemData, BOOL bAutoDecided ) /* 補完候補の数によって動作を変える */ if (nKouhoNum <= 0) { // 候補無し if( m_bHokan ){ - m_pcEditWnd->m_cHokanMgr.Hide(); + GetEditWnd().m_cHokanMgr.Hide(); m_bHokan = FALSE; // 2003.06.25 Moca 失敗してたら、ビープ音を出して補完終了。 ErrorBeep(); @@ -152,7 +152,7 @@ void CEditView::ShowHokanMgr( CNativeW& cmemData, BOOL bAutoDecided ) } else if( bAutoDecided && nKouhoNum == 1){ // 候補1つのみ→確定。 if( m_bHokan ){ - m_pcEditWnd->m_cHokanMgr.Hide(); + GetEditWnd().m_cHokanMgr.Hide(); m_bHokan = FALSE; } // 2004.05.14 Moca CHokanMgr::Search側で改行を削除するようにし、直接書き換えるのをやめた diff --git a/sakura_core/view/CEditView_Cmdisrch.cpp b/sakura_core/view/CEditView_Cmdisrch.cpp index 6bee46e5bc..5bea8f3798 100644 --- a/sakura_core/view/CEditView_Cmdisrch.cpp +++ b/sakura_core/view/CEditView_Cmdisrch.cpp @@ -256,7 +256,7 @@ void CEditView::ISearchExit() } m_nCurSearchKeySequence = GetDllShareData().m_Common.m_sSearch.m_nSearchKeySequence; GetDllShareData().m_Common.m_sSearch.m_sSearchOption = m_sCurSearchOption; - m_pcEditWnd->m_cToolbar.AcceptSharedSearchKey(); + GetEditWnd().m_cToolbar.AcceptSharedSearchKey(); m_nISearchDirection = SEARCH_BACKWARD; m_nISearchMode = SEARCH_NONE; diff --git a/sakura_core/view/CEditView_Command.cpp b/sakura_core/view/CEditView_Command.cpp index f5f06a6aa6..3d80829ed6 100644 --- a/sakura_core/view/CEditView_Command.cpp +++ b/sakura_core/view/CEditView_Command.cpp @@ -410,7 +410,7 @@ BOOL CEditView::ChangeCurRegexp( bool bRedrawIfChanged ) if( bRedrawIfChanged ){ Redraw(); } - m_pcEditWnd->m_cToolbar.AcceptSharedSearchKey(); + GetEditWnd().m_cToolbar.AcceptSharedSearchKey(); return TRUE; } if( ! m_bCurSrchKeyMark ){ @@ -483,7 +483,7 @@ void CEditView::DrawBracketCursorLine(bool bDraw) HWND CEditView::StartProgress() { - HWND hwndProgress = m_pcEditWnd->m_cStatusBar.GetProgressHwnd(); + HWND hwndProgress = GetEditWnd().m_cStatusBar.GetProgressHwnd(); if( NULL != hwndProgress ){ ::ShowWindow( hwndProgress, SW_SHOW ); Progress_SetRange( hwndProgress, 0, 101 ); diff --git a/sakura_core/view/CEditView_Command_New.cpp b/sakura_core/view/CEditView_Command_New.cpp index b4a2152bd8..69c371e317 100644 --- a/sakura_core/view/CEditView_Command_New.cpp +++ b/sakura_core/view/CEditView_Command_New.cpp @@ -244,7 +244,7 @@ void CEditView::InsertData_CEditView( // 再描画 // 行番号表示に必要な幅を設定 - if( m_pcEditWnd->DetectWidthOfLineNumberAreaAllPane( bRedraw ) ){ + if( GetEditWnd().DetectWidthOfLineNumberAreaAllPane( bRedraw ) ){ // キャレットの表示・更新 GetCaret().ShowEditCaret(); } @@ -313,14 +313,14 @@ void CEditView::InsertData_CEditView( this->ReleaseDC( hdc ); // 2014.07.16 他のビュー(ミニマップ)の再描画を抑制する if( 0 == nInsLineNum ){ - for(int i = 0; i < m_pcEditWnd->GetAllViewCount(); i++ ){ - CEditView* pcView = &m_pcEditWnd->GetView(i); + for(int i = 0; i < GetEditWnd().GetAllViewCount(); i++ ){ + CEditView* pcView = &GetEditWnd().GetView(i); if( pcView == this ){ continue; } pcView->RedrawLines(nLayoutTop, nLayoutBottom); } - m_pcEditWnd->GetMiniMap().RedrawLines(nLayoutTop, nLayoutBottom); + GetEditWnd().GetMiniMap().RedrawLines(nLayoutTop, nLayoutBottom); if( !m_bDoing_UndoRedo && pcOpe ){ GetDocument()->m_cDocEditor.m_nOpeBlkRedawCount++; } @@ -541,7 +541,7 @@ void CEditView::DeleteData( SetDrawSwitch(true); // 2002.01.25 hor /* 行番号表示に必要な幅を設定 */ - if ( m_pcEditWnd->DetectWidthOfLineNumberAreaAllPane( true ) ){ + if ( GetEditWnd().DetectWidthOfLineNumberAreaAllPane( true ) ){ /* キャレットの表示・更新 */ GetCaret().ShowEditCaret(); } @@ -840,7 +840,7 @@ bool CEditView::ReplaceData_CEditView3( } /* 行番号表示に必要な幅を設定 */ - if( m_pcEditWnd->DetectWidthOfLineNumberAreaAllPane( bRedraw ) ){ + if( GetEditWnd().DetectWidthOfLineNumberAreaAllPane( bRedraw ) ){ /* キャレットの表示・更新 */ GetCaret().ShowEditCaret(); } @@ -890,14 +890,14 @@ bool CEditView::ReplaceData_CEditView3( CLayoutYInt nLayoutTop = LRArg.nModLineFrom; CLayoutYInt nLayoutBottom = LRArg.nModLineTo + 1 + nAddLine; - for(int i = 0; i < m_pcEditWnd->GetAllViewCount(); i++ ){ - CEditView* pcView = &m_pcEditWnd->GetView(i); + for(int i = 0; i < GetEditWnd().GetAllViewCount(); i++ ){ + CEditView* pcView = &GetEditWnd().GetView(i); if( pcView == this ){ continue; } pcView->RedrawLines(nLayoutTop, nLayoutBottom); } - m_pcEditWnd->GetMiniMap().RedrawLines(nLayoutTop, nLayoutBottom); + GetEditWnd().GetMiniMap().RedrawLines(nLayoutTop, nLayoutBottom); if( !m_bDoing_UndoRedo && pcOpeBlk ){ GetDocument()->m_cDocEditor.m_nOpeBlkRedawCount++; } diff --git a/sakura_core/view/CEditView_Diff.cpp b/sakura_core/view/CEditView_Diff.cpp index 733af362be..4703388292 100644 --- a/sakura_core/view/CEditView_Diff.cpp +++ b/sakura_core/view/CEditView_Diff.cpp @@ -208,7 +208,7 @@ void CEditView::ViewDiffInfo( } //分割したビューも更新 - m_pcEditWnd->Views_Redraw(); + GetEditWnd().Views_Redraw(); return; } diff --git a/sakura_core/view/CEditView_Ime.cpp b/sakura_core/view/CEditView_Ime.cpp index 69f9b82bf2..bf3e06e23f 100644 --- a/sakura_core/view/CEditView_Ime.cpp +++ b/sakura_core/view/CEditView_Ime.cpp @@ -101,7 +101,7 @@ void CEditView::SetIMECompFormFont( void ) // HIMC hIMC = ::ImmGetContext( GetHwnd() ); if ( hIMC ){ - ::ImmSetCompositionFont( hIMC, const_cast(&(m_pcEditWnd->GetLogfont())) ); + ::ImmSetCompositionFont( hIMC, const_cast(&(GetEditWnd().GetLogfont())) ); } ::ImmReleaseContext( GetHwnd() , hIMC ); } diff --git a/sakura_core/view/CEditView_Mouse.cpp b/sakura_core/view/CEditView_Mouse.cpp index eaf2107430..661cf41ecf 100644 --- a/sakura_core/view/CEditView_Mouse.cpp +++ b/sakura_core/view/CEditView_Mouse.cpp @@ -64,7 +64,7 @@ void CEditView::OnLBUTTONDOWN( WPARAM fwKeys, int _xPos , int _yPos ) CMyPoint ptMouse(_xPos,_yPos); if( m_bHokan ){ - m_pcEditWnd->m_cHokanMgr.Hide(); + GetEditWnd().m_cHokanMgr.Hide(); m_bHokan = FALSE; } @@ -164,12 +164,12 @@ void CEditView::OnLBUTTONDOWN( WPARAM fwKeys, int _xPos , int _yPos ) DWORD dwEffectsSrc = ( !m_pcEditDoc->IsEditable() )? DROPEFFECT_COPY: DROPEFFECT_COPY | DROPEFFECT_MOVE; int nOpe = m_pcEditDoc->m_cDocEditor.m_cOpeBuf.GetCurrentPointer(); - m_pcEditWnd->SetDragSourceView( this ); + GetEditWnd().SetDragSourceView( this ); CDataObject data( cmemCurText.GetStringPtr(), cmemCurText.GetStringLength(), GetSelectionInfo().IsBoxSelecting() ); dwEffects = data.DragDrop( TRUE, dwEffectsSrc ); - m_pcEditWnd->SetDragSourceView( NULL ); + GetEditWnd().SetDragSourceView( NULL ); if( m_pcEditDoc->m_cDocEditor.m_cOpeBuf.GetCurrentPointer() == nOpe ){ // ドキュメント変更なしか? // 2007.12.09 ryoji - m_pcEditWnd->SetActivePane( m_nMyIndex ); + GetEditWnd().SetActivePane( m_nMyIndex ); if( DROPEFFECT_MOVE == (dwEffectsSrc & dwEffects) ){ // 移動範囲を削除する // ドロップ先が移動を処理したが自ドキュメントにここまで変更が無い @@ -676,17 +676,17 @@ void CEditView::OnMBUTTONUP( WPARAM fwKeys, int xPos , int yPos ) // ホイール操作によるページスクロールあり if( GetDllShareData().m_Common.m_sGeneral.m_nPageScrollByWheel == MOUSEFUNCTION_CENTER && - m_pcEditWnd->IsPageScrollByWheel() ) + GetEditWnd().IsPageScrollByWheel() ) { - m_pcEditWnd->SetPageScrollByWheel( FALSE ); + GetEditWnd().SetPageScrollByWheel( FALSE ); return; } // ホイール操作によるページスクロールあり if( GetDllShareData().m_Common.m_sGeneral.m_nHorizontalScrollByWheel == MOUSEFUNCTION_CENTER && - m_pcEditWnd->IsHScrollByWheel() ) + GetEditWnd().IsHScrollByWheel() ) { - m_pcEditWnd->SetHScrollByWheel( FALSE ); + GetEditWnd().SetHScrollByWheel( FALSE ); return; } @@ -849,17 +849,17 @@ void CEditView::OnXLBUTTONUP( WPARAM fwKeys, int xPos , int yPos ) // ホイール操作によるページスクロールあり if( GetDllShareData().m_Common.m_sGeneral.m_nPageScrollByWheel == MOUSEFUNCTION_LEFTSIDE && - m_pcEditWnd->IsPageScrollByWheel() ) + GetEditWnd().IsPageScrollByWheel() ) { - m_pcEditWnd->SetPageScrollByWheel( FALSE ); + GetEditWnd().SetPageScrollByWheel( FALSE ); return; } // ホイール操作によるページスクロールあり if( GetDllShareData().m_Common.m_sGeneral.m_nHorizontalScrollByWheel == MOUSEFUNCTION_LEFTSIDE && - m_pcEditWnd->IsHScrollByWheel() ) + GetEditWnd().IsHScrollByWheel() ) { - m_pcEditWnd->SetHScrollByWheel( FALSE ); + GetEditWnd().SetHScrollByWheel( FALSE ); return; } @@ -909,19 +909,19 @@ void CEditView::OnXRBUTTONUP( WPARAM fwKeys, int xPos , int yPos ) // ホイール操作によるページスクロールあり if( GetDllShareData().m_Common.m_sGeneral.m_nPageScrollByWheel == MOUSEFUNCTION_RIGHTSIDE && - m_pcEditWnd->IsPageScrollByWheel() ) + GetEditWnd().IsPageScrollByWheel() ) { // ホイール操作によるページスクロールありをOFF - m_pcEditWnd->SetPageScrollByWheel( FALSE ); + GetEditWnd().SetPageScrollByWheel( FALSE ); return; } // ホイール操作によるページスクロールあり if( GetDllShareData().m_Common.m_sGeneral.m_nHorizontalScrollByWheel == MOUSEFUNCTION_RIGHTSIDE && - m_pcEditWnd->IsHScrollByWheel() ) + GetEditWnd().IsHScrollByWheel() ) { // ホイール操作による横スクロールありをOFF - m_pcEditWnd->SetHScrollByWheel( FALSE ); + GetEditWnd().SetHScrollByWheel( FALSE ); return; } @@ -1005,7 +1005,7 @@ void CEditView::OnMOUSEMOVE( WPARAM fwKeys, int xPos_, int yPos_ ) if( ptNew.y < 0 ){ ptNew.y = CLayoutYInt(0); } - CEditView& view = m_pcEditWnd->GetActiveView(); + CEditView& view = GetEditWnd().GetActiveView(); ptNew.x = 0; CLogicPoint ptNewLogic; view.GetCaret().GetAdjustCursorPos( &ptNew ); @@ -1386,14 +1386,14 @@ LRESULT CEditView::OnMOUSEWHEEL2( WPARAM wParam, LPARAM lParam, bool bHorizontal if( bKeyPageScroll ){ if( bHorizontal ){ // ホイール操作による横スクロールあり - m_pcEditWnd->SetHScrollByWheel( TRUE ); + GetEditWnd().SetHScrollByWheel( TRUE ); } // ホイール操作によるページスクロールあり - m_pcEditWnd->SetPageScrollByWheel( TRUE ); + GetEditWnd().SetPageScrollByWheel( TRUE ); }else{ if( bHorizontal ){ // ホイール操作による横スクロールあり - m_pcEditWnd->SetHScrollByWheel( TRUE ); + GetEditWnd().SetHScrollByWheel( TRUE ); } } @@ -1719,7 +1719,7 @@ STDMETHODIMP CEditView::DragEnter( LPDATAOBJECT pDataObject, DWORD dwKeyState, P } /* 自分をアクティブペインにする */ - m_pcEditWnd->SetActivePane( m_nMyIndex ); + GetEditWnd().SetActivePane( m_nMyIndex ); // 現在のカーソル位置を記憶する // 2007.12.09 ryoji m_ptCaretPos_DragEnter = GetCaret().GetCaretLayoutPos(); @@ -1748,7 +1748,7 @@ STDMETHODIMP CEditView::DragOver( DWORD dwKeyState, POINTL pt, LPDWORD pdwEffect *pdwEffect = TranslateDropEffect( m_cfDragData, dwKeyState, pt, *pdwEffect ); - CEditView* pcDragSourceView = m_pcEditWnd->GetDragSourceView(); + CEditView* pcDragSourceView = GetEditWnd().GetDragSourceView(); // ドラッグ元が他ビューで、このビューのカーソルがドラッグ元の選択範囲内の場合は禁止マークにする // ※自ビューのときは禁止マークにしない(他アプリでも多くはそうなっている模様) // 2009.06.09 ryoji @@ -1817,7 +1817,7 @@ STDMETHODIMP CEditView::Drop( LPDATAOBJECT pDataObject, DWORD dwKeyState, POINTL return PostMyDropFiles( pDataObject ); // 外部からのドロップは以後の処理ではコピーと同様に扱う - CEditView* pcDragSourceView = m_pcEditWnd->GetDragSourceView(); + CEditView* pcDragSourceView = GetEditWnd().GetDragSourceView(); bMove = (*pdwEffect == DROPEFFECT_MOVE) && pcDragSourceView; bBoxData = m_bDragBoxData; @@ -2130,7 +2130,7 @@ void CEditView::OnMyDropFiles( HDROP hDrop ) switch( nId ){ case 110: // ファイルを開く // 通常のドロップファイル処理を行う - ::SendMessageAny( m_pcEditWnd->GetHwnd(), WM_DROPFILES, (WPARAM)hDrop, 0 ); + ::SendMessageAny( GetEditWnd().GetHwnd(), WM_DROPFILES, (WPARAM)hDrop, 0 ); break; case 100: // パス名を貼り付ける @@ -2221,7 +2221,7 @@ DWORD CEditView::TranslateDropEffect( CLIPFORMAT cf, DWORD dwKeyState, POINTL pt if( cf == CF_HDROP ) // 2008.06.20 ryoji return DROPEFFECT_LINK; - CEditView* pcDragSourceView = m_pcEditWnd->GetDragSourceView(); + CEditView* pcDragSourceView = GetEditWnd().GetDragSourceView(); // 2008.06.21 ryoji // Win 98/Me 環境では外部からのドラッグ時に GetKeyState() ではキー状態を正しく取得できないため、 @@ -2244,5 +2244,5 @@ DWORD CEditView::TranslateDropEffect( CLIPFORMAT cf, DWORD dwKeyState, POINTL pt bool CEditView::IsDragSource( void ) { - return ( this == m_pcEditWnd->GetDragSourceView() ); + return ( this == GetEditWnd().GetDragSourceView() ); } diff --git a/sakura_core/view/CEditView_Paint.cpp b/sakura_core/view/CEditView_Paint.cpp index f8c08fb288..1af26836c4 100644 --- a/sakura_core/view/CEditView_Paint.cpp +++ b/sakura_core/view/CEditView_Paint.cpp @@ -114,7 +114,7 @@ void CEditView::RedrawAll() GetCaret().ShowCaretPosInfo(); // 親ウィンドウのタイトルを更新 - m_pcEditWnd->UpdateCaption(); + GetEditWnd().UpdateCaption(); // Jul. 9, 2005 genta 選択範囲の情報をステータスバーへ表示 GetSelectionInfo().PrintSelectionInfoMsg(); @@ -564,7 +564,7 @@ COLORREF CEditView::GetBackColorByColorInfo2(const ColorInfo& info, const ColorI void CEditView::OnPaint( HDC _hdc, PAINTSTRUCT *pPs, BOOL bDrawFromComptibleBmp ) { - if (m_pcEditWnd->m_pPrintPreview) { + if (GetEditWnd().m_pPrintPreview) { return; } bool bChangeFont = m_bMiniMap; @@ -573,7 +573,7 @@ void CEditView::OnPaint( HDC _hdc, PAINTSTRUCT *pPs, BOOL bDrawFromComptibleBmp } OnPaint2( _hdc, pPs, bDrawFromComptibleBmp ); if( bChangeFont ){ - SelectCharWidthCache( CWM_FONT_EDIT, m_pcEditWnd->GetLogfontCacheMode() ); + SelectCharWidthCache( CWM_FONT_EDIT, GetEditWnd().GetLogfontCacheMode() ); } } @@ -621,7 +621,7 @@ void CEditView::OnPaint2( HDC _hdc, PAINTSTRUCT *pPs, BOOL bDrawFromComptibleBmp pPs->rcPaint.top, SRCCOPY ); - if ( m_pcEditWnd->GetActivePane() == m_nMyIndex ){ + if ( GetEditWnd().GetActivePane() == m_nMyIndex ){ /* アクティブペインは、アンダーライン描画 */ GetCaret().m_cUnderLine.CaretUnderLineON( true, false ); } @@ -683,7 +683,7 @@ void CEditView::OnPaint2( HDC _hdc, PAINTSTRUCT *pPs, BOOL bDrawFromComptibleBmp DrawBracketPair( false ); } - CEditView& cActiveView = m_pcEditWnd->GetActiveView(); + CEditView& cActiveView = GetEditWnd().GetActiveView(); m_nPageViewTop = cActiveView.GetTextArea().GetViewTopLine(); m_nPageViewBottom = cActiveView.GetTextArea().GetBottomLine(); @@ -763,7 +763,7 @@ void CEditView::OnPaint2( HDC _hdc, PAINTSTRUCT *pPs, BOOL bDrawFromComptibleBmp // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // /* アクティブペインは、アンダーライン描画 */ - const bool bDrawUnderLine = m_pcEditWnd->GetActivePane() == m_nMyIndex; + const bool bDrawUnderLine = GetEditWnd().GetActivePane() == m_nMyIndex; // カーソル行アンダーライン描画を行描画ループ内で行うかどうか const bool bDrawUnderLineWithoutDelay = bDrawUnderLine @@ -1025,7 +1025,7 @@ bool CEditView::DrawLayoutLine(SColorStrategyInfo* pInfo) CTypeSupport cCaretLineBg(this, COLORIDX_CARETLINEBG); CTypeSupport cEvenLineBg(this, COLORIDX_EVENLINEBG); CTypeSupport cPageViewBg(this, COLORIDX_PAGEVIEW); - CEditView& cActiveView = m_pcEditWnd->GetActiveView(); + CEditView& cActiveView = GetEditWnd().GetActiveView(); CTypeSupport& cBackType = (cCaretLineBg.IsDisp() && GetCaret().GetCaretLayoutPos().GetY() == pInfo->m_pDispPos->GetLayoutLineRef() && !m_bMiniMap ? cCaretLineBg @@ -1318,7 +1318,7 @@ void CEditView::DispTextSelected( sSelect.GetFrom().x >= GetTextArea().GetViewLeftCol()) { HWND hWnd = ::GetForegroundWindow(); - if( hWnd && (hWnd == m_pcEditWnd->m_cDlgFind.GetHwnd() || hWnd == m_pcEditWnd->m_cDlgReplace.GetHwnd()) ){ + if( hWnd && (hWnd == GetEditWnd().m_cDlgFind.GetHwnd() || hWnd == GetEditWnd().m_cDlgReplace.GetHwnd()) ){ rcClip.right = rcClip.left + 2; bOMatch = true; } diff --git a/sakura_core/view/CEditView_Paint_Bracket.cpp b/sakura_core/view/CEditView_Paint_Bracket.cpp index 4614bdd111..4fc9bf0e75 100644 --- a/sakura_core/view/CEditView_Paint_Bracket.cpp +++ b/sakura_core/view/CEditView_Paint_Bracket.cpp @@ -122,7 +122,7 @@ void CEditView::DrawBracketPair( bool bDraw ) // アクティブなペインではない ) 場合は終了 if( bDraw &&( GetSelectionInfo().IsTextSelected() || GetSelectionInfo().m_bDrawSelectArea || !m_bDrawBracketPairFlag - || ( m_pcEditWnd->GetActivePane() != m_nMyIndex ) ) ){ + || ( GetEditWnd().GetActivePane() != m_nMyIndex ) ) ){ return; } @@ -238,7 +238,7 @@ void CEditView::DrawBracketPair( bool bDraw ) cTextType.RewindGraphicsState(gr); } - if( ( m_pcEditWnd->GetActivePane() == m_nMyIndex ) + if( ( GetEditWnd().GetActivePane() == m_nMyIndex ) && ( ( ptColLine.y == GetCaret().GetCaretLayoutPos().GetY() ) || ( ptColLine.y - 1 == GetCaret().GetCaretLayoutPos().GetY() ) ) ){ // 03/02/27 ai 行の間隔が"0"の時にアンダーラインが欠ける事がある為修正 GetCaret().m_cUnderLine.CaretUnderLineON( true, false ); } diff --git a/sakura_core/view/CEditView_Scroll.cpp b/sakura_core/view/CEditView_Scroll.cpp index d098826c7e..ce46870642 100644 --- a/sakura_core/view/CEditView_Scroll.cpp +++ b/sakura_core/view/CEditView_Scroll.cpp @@ -605,8 +605,8 @@ void CEditView::ScrollDraw(CLayoutInt nScrollRowNum, CLayoutInt nScrollColNum, c void CEditView::MiniMapRedraw(bool bUpdateAll) { - if( this == &m_pcEditWnd->GetActiveView() && m_pcEditWnd->GetMiniMap().GetHwnd() ){ - CEditView& miniMap = m_pcEditWnd->GetMiniMap(); + if( this == &GetEditWnd().GetActiveView() && GetEditWnd().GetMiniMap().GetHwnd() ){ + CEditView& miniMap = GetEditWnd().GetMiniMap(); CLayoutYInt nViewTop = miniMap.m_nPageViewTop; CLayoutYInt nViewBottom = miniMap.m_nPageViewBottom; CLayoutYInt nDiff = nViewTop - GetTextArea().GetViewTopLine(); @@ -687,10 +687,10 @@ void CEditView::MiniMapRedraw(bool bUpdateAll) void CEditView::SyncScrollV( CLayoutInt line ) { if( GetDllShareData().m_Common.m_sWindow.m_bSplitterWndVScroll && line != 0 - && m_pcEditWnd->IsEnablePane(m_nMyIndex^0x01) + && GetEditWnd().IsEnablePane(m_nMyIndex^0x01) && 0 <= m_nMyIndex ){ - CEditView& editView = m_pcEditWnd->GetView(m_nMyIndex^0x01); + CEditView& editView = GetEditWnd().GetView(m_nMyIndex^0x01); #if 0 // 差分を保ったままスクロールする場合 editView.ScrollByV( line ); @@ -715,10 +715,10 @@ void CEditView::SyncScrollV( CLayoutInt line ) void CEditView::SyncScrollH( CLayoutInt col ) { if( GetDllShareData().m_Common.m_sWindow.m_bSplitterWndHScroll && col != 0 - && m_pcEditWnd->IsEnablePane(m_nMyIndex^0x02) + && GetEditWnd().IsEnablePane(m_nMyIndex^0x02) && 0 <= m_nMyIndex ){ - CEditView& cEditView = m_pcEditWnd->GetView(m_nMyIndex^0x02); + CEditView& cEditView = GetEditWnd().GetView(m_nMyIndex^0x02); HDC hdc = ::GetDC( cEditView.GetHwnd() ); #if 0 diff --git a/sakura_core/view/CViewSelect.cpp b/sakura_core/view/CViewSelect.cpp index 4da3e59c8f..863551c698 100644 --- a/sakura_core/view/CViewSelect.cpp +++ b/sakura_core/view/CViewSelect.cpp @@ -655,18 +655,18 @@ void CViewSelect::PrintSelectionInfoMsg() const const CEditView* pView=GetEditView(); // 出力されないなら計算を省略 - if( ! pView->m_pcEditWnd->m_cStatusBar.SendStatusMessage2IsEffective() ) + if( ! GetEditWnd().m_cStatusBar.SendStatusMessage2IsEffective() ) return; CLayoutInt nLineCount = pView->m_pcEditDoc->m_cLayoutMgr.GetLineCount(); if( ! IsTextSelected() || m_sSelect.GetFrom().y >= nLineCount ){ // 先頭行が実在しない const_cast(pView)->GetCaret().m_bClearStatus = false; if( IsBoxSelecting() ){ - pView->m_pcEditWnd->m_cStatusBar.SendStatusMessage2( L"box selecting" ); + GetEditWnd().m_cStatusBar.SendStatusMessage2( L"box selecting" ); }else if( m_bSelectingLock ){ - pView->m_pcEditWnd->m_cStatusBar.SendStatusMessage2( L"selecting" ); + GetEditWnd().m_cStatusBar.SendStatusMessage2( L"selecting" ); }else{ - pView->m_pcEditWnd->m_cStatusBar.SendStatusMessage2( L"" ); + GetEditWnd().m_cStatusBar.SendStatusMessage2( L"" ); } return; } @@ -701,9 +701,9 @@ void CViewSelect::PrintSelectionInfoMsg() const // 共通設定・選択文字数を文字単位ではなくバイト単位で表示する BOOL bCountByByteCommon = GetDllShareData().m_Common.m_sStatusbar.m_bDispSelCountByByte; - BOOL bCountByByte = ( pView->m_pcEditWnd->m_nSelectCountMode == SELECT_COUNT_TOGGLE ? + BOOL bCountByByte = ( GetEditWnd().m_nSelectCountMode == SELECT_COUNT_TOGGLE ? bCountByByteCommon : - pView->m_pcEditWnd->m_nSelectCountMode == SELECT_COUNT_BY_BYTE ); + GetEditWnd().m_nSelectCountMode == SELECT_COUNT_BY_BYTE ); // 1行目 pcLayout = pView->m_pcEditDoc->m_cLayoutMgr.SearchLineByLayoutY(m_sSelect.GetFrom().GetY2()); @@ -845,5 +845,5 @@ void CViewSelect::PrintSelectionInfoMsg() const #endif } const_cast(pView)->GetCaret().m_bClearStatus = false; - pView->m_pcEditWnd->m_cStatusBar.SendStatusMessage2( msg ); + GetEditWnd().m_cStatusBar.SendStatusMessage2( msg ); } diff --git a/sakura_core/view/colors/CColorStrategy.cpp b/sakura_core/view/colors/CColorStrategy.cpp index 96f34dbb42..576c58e743 100644 --- a/sakura_core/view/colors/CColorStrategy.cpp +++ b/sakura_core/view/colors/CColorStrategy.cpp @@ -141,7 +141,7 @@ bool SColorStrategyInfo::CheckChangeColor(const CStringRef& cLineStr) if( m_pcView->m_bMiniMap ){ CTypeSupport cPageViewBg(m_pcView, COLORIDX_PAGEVIEW); if( cPageViewBg.IsDisp() ){ - CEditView& cActiveView = m_pcView->m_pcEditWnd->GetActiveView(); + CEditView& cActiveView = GetEditWnd().GetActiveView(); CLayoutInt curLine = m_pDispPos->GetLayoutLineRef(); if( m_colorIdxBackLine == COLORIDX_PAGEVIEW ){ if( cActiveView.GetTextArea().GetViewTopLine() <= curLine && curLine < cActiveView.GetTextArea().GetBottomLine() ){ diff --git a/sakura_core/view/figures/CFigure_Eol.cpp b/sakura_core/view/figures/CFigure_Eol.cpp index a2eecfb6b8..ea611264fe 100644 --- a/sakura_core/view/figures/CFigure_Eol.cpp +++ b/sakura_core/view/figures/CFigure_Eol.cpp @@ -164,7 +164,7 @@ void _DispWrap(CGraphics& gr, DispPos* pDispPos, const CEditView* pcView, CLayou EColorIndexType eBgcolorOverwrite = COLORIDX_WRAP; bool bTrans = pcView->IsBkBitmap(); if( cWrapType.IsDisp() ){ - CEditView& cActiveView = pcView->m_pcEditWnd->GetActiveView(); + CEditView& cActiveView = GetEditWnd().GetActiveView(); if( cBgLineType.IsDisp() && pcView->GetCaret().GetCaretLayoutPos().GetY2() == nLineNum ){ if( bBgcolor ){ eBgcolorOverwrite = COLORIDX_CARETLINEBG; diff --git a/sakura_core/window/CEditWnd.cpp b/sakura_core/window/CEditWnd.cpp index 4aa1af1b0d..57e896b798 100644 --- a/sakura_core/window/CEditWnd.cpp +++ b/sakura_core/window/CEditWnd.cpp @@ -49,6 +49,7 @@ #include "_main/CCommandLine.h" /// 2003/1/26 aroka #include "_main/CAppMode.h" #include "_os/CDropTarget.h" +#include "basis/CErrorInfo.h" #include "dlg/CDlgAbout.h" #include "dlg/CDlgPrintSetting.h" #include "env/CShareData.h" @@ -119,7 +120,7 @@ static void ShowCodeBox( HWND hWnd, CEditDoc* pcEditDoc ) // カーソル位置の文字列を取得 const CLayout* pcLayout; CLogicInt nLineLen; - const CEditView* pcView = &pcEditDoc->m_pcEditWnd->GetActiveView(); + const CEditView* pcView = &GetEditWnd().GetActiveView(); const CCaret* pcCaret = &pcView->GetCaret(); const CLayoutMgr* pLayoutMgr = &pcEditDoc->m_cLayoutMgr; const wchar_t* pLine = pLayoutMgr->GetLineStr( pcCaret->GetCaretLayoutPos().GetY2(), &nLineLen, &pcLayout ); @@ -178,6 +179,22 @@ static void ShowCodeBox( HWND hWnd, CEditDoc* pcEditDoc ) } } +/*! + * 編集ウインドウのインスタンスを取得します。 + * + * 編集ウインドウの生存期間ははエディタプロセスと同じなので、 + * ほとんどの場合、このグローバル関数を使ってアクセスできます。 + */ +CEditWnd& GetEditWnd( void ) +{ + const auto pcEditWnd = CEditWnd::getInstance(); + if( !pcEditWnd ) + { + ::_com_raise_error(E_FAIL, MakeMsgError(L"Any CEditWnd has been instantiated.")); + } + return (CEditWnd&)*pcEditWnd; +} + // /* メッセージループ */ // DWORD MessageLoop_Thread( DWORD pCEditWndObject ); @@ -216,13 +233,10 @@ CEditWnd::CEditWnd() , m_IconClicked(icNone) //by 鬼(2) , m_nSelectCountMode( SELECT_COUNT_TOGGLE ) //文字カウント方法の初期値はSELECT_COUNT_TOGGLE→共通設定に従う { - g_pcEditWnd=this; } CEditWnd::~CEditWnd() { - g_pcEditWnd=NULL; - delete m_pPrintPreview; m_pPrintPreview = NULL; @@ -602,12 +616,12 @@ HWND CEditWnd::Create( m_pcEditViewArr[i] = NULL; } // [0] - [3] まで作成・初期化していたものを[0]だけ作る。ほかは分割されるまで何もしない - m_pcEditViewArr[0] = new CEditView(this); + m_pcEditViewArr[0] = new CEditView(); m_pcEditView = m_pcEditViewArr[0]; m_pcViewFont = new CViewFont(&GetLogfont()); - m_pcEditViewMiniMap = new CEditView(this); + m_pcEditViewMiniMap = new CEditView(); m_pcViewFontMiniMap = new CViewFont(&GetLogfont(), true); @@ -673,7 +687,7 @@ HWND CEditWnd::Create( // -- -- -- -- 子ウィンドウ作成 -- -- -- -- // /* 分割フレーム作成 */ - m_cSplitterWnd.Create( G_AppInstance(), GetHwnd(), this ); + m_cSplitterWnd.Create( GetHwnd() ); /* ビュー */ GetView(0).Create( m_cSplitterWnd.GetHwnd(), GetDocument(), 0, TRUE, false ); @@ -4327,7 +4341,7 @@ bool CEditWnd::CreateEditViewBySplit(int nViewCount ) if( GetAllViewCount() < nViewCount ){ for( int i = GetAllViewCount(); i < nViewCount; i++ ){ assert( NULL == m_pcEditViewArr[i] ); - m_pcEditViewArr[i] = new CEditView(this); + m_pcEditViewArr[i] = new CEditView(); m_pcEditViewArr[i]->Create( m_cSplitterWnd.GetHwnd(), GetDocument(), i, FALSE, false ); } m_nEditViewCount = nViewCount; diff --git a/sakura_core/window/CEditWnd.h b/sakura_core/window/CEditWnd.h index cf4178bd3b..5438b9cde8 100644 --- a/sakura_core/window/CEditWnd.h +++ b/sakura_core/window/CEditWnd.h @@ -422,4 +422,7 @@ class CEditWnd public: ESelectCountMode m_nSelectCountMode; // 選択文字カウント方法 }; + +CEditWnd& GetEditWnd( void ); + #endif /* SAKURA_CEDITWND_6C771A35_3CC8_4932_BF15_823C40487A9F_H_ */ diff --git a/sakura_core/window/CSplitterWnd.cpp b/sakura_core/window/CSplitterWnd.cpp index 27a324b8e2..9695cd9113 100644 --- a/sakura_core/window/CSplitterWnd.cpp +++ b/sakura_core/window/CSplitterWnd.cpp @@ -34,7 +34,6 @@ constexpr auto SPLITTER_MARGIN = 2; // @date 2002.2.17 YAZAKI CShareDataのインスタンスは、CProcessにひとつあるのみ。 CSplitterWnd::CSplitterWnd() : CWnd(L"::CSplitterWnd") -, m_pcEditWnd(NULL) , m_nAllSplitRows(1) /* 分割行数 */ , m_nAllSplitCols(1) /* 分割桁数 */ , m_nVSplitPos(0) /* 垂直分割位置 */ @@ -61,17 +60,15 @@ CSplitterWnd::~CSplitterWnd() } /* 初期化 */ -HWND CSplitterWnd::Create( HINSTANCE hInstance, HWND hwndParent, void* pCEditWnd ) +HWND CSplitterWnd::Create( HWND hwndParent ) { LPCWSTR pszClassName = L"SplitterWndClass"; /* 初期化 */ - m_pcEditWnd = pCEditWnd; - /* ウィンドウクラス作成 */ ATOM atWork; atWork = RegisterWC( - hInstance, + G_AppInstance(), NULL,// Handle to the class icon. NULL, //Handle to a small icon NULL,// Handle to the class cursor. @@ -247,7 +244,7 @@ void CSplitterWnd::DoSplit( int nHorizontal, int nVertical ) BOOL bVUp; BOOL bHUp; BOOL bSizeBox; - CEditWnd* pCEditWnd = (CEditWnd*)m_pcEditWnd; + CEditWnd* pCEditWnd = &GetEditWnd(); bVUp = FALSE; bHUp = FALSE; @@ -805,7 +802,7 @@ LRESULT CSplitterWnd::OnPaint( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPara /* ウィンドウサイズの変更処理 */ LRESULT CSplitterWnd::OnSize( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { - CEditWnd* pCEditWnd = (CEditWnd*)m_pcEditWnd; + CEditWnd* pCEditWnd = &GetEditWnd(); CEditView* pcViewArr[MAXCOUNTOFVIEW]; int i; RECT rcClient; diff --git a/sakura_core/window/CSplitterWnd.h b/sakura_core/window/CSplitterWnd.h index 9e60e7686c..25fd3559eb 100644 --- a/sakura_core/window/CSplitterWnd.h +++ b/sakura_core/window/CSplitterWnd.h @@ -46,7 +46,7 @@ class CSplitterWnd final : public CWnd || Attributes & Operations */ DLLSHAREDATA* m_pShareData; - void* m_pcEditWnd; + int m_nAllSplitRows; /* 分割行数 */ int m_nAllSplitCols; /* 分割桁数 */ int m_nVSplitPos; /* 垂直分割位置 */ @@ -59,7 +59,7 @@ class CSplitterWnd final : public CWnd int m_nDragPosY; /* ドラッグ位置Y */ int m_nActivePane; /* アクティブなペイン */ public: // 2002/2/3 aroka - HWND Create(HINSTANCE hInstance, HWND hwndParent, void* pCEditWnd); /* 初期化 */ + HWND Create( HWND hwndParent ); /* 初期化 */ void SetChildWndArr(HWND* hwndEditViewArr); /* 子ウィンドウの設定 */ void DoSplit(int nHorizontal, int nVertical); /* ウィンドウの分割 */ void SetActivePane(int nIndex); /* アクティブペインの設定 */