// ファイルからロード void CSharedMru::Load() { if ( WaitForSingleObject( m_hSema ,INFINITE )==WAIT_OBJECT_0 ){ if ( m_pMapPtr != NULL ){ // すでにロードされていれば処理しない if ( memcmp( m_sig , m_pMapPtr , 4 ) != 0 ){ FileR f; bool ret = f.open( m_filename ); if ( ret ){ // 読込正常 memcpy( m_pMapPtr , f.base() , f.size() ); ret = false; // シグネチャチェック if ( memcmp( m_sig , m_pMapPtr , 4 ) == 0 ){ // 長さチェック int len = *(int*)(m_pMapPtr+4); // 長さ取得 if ( len == f.size() ){ ret = true; } } } Update(); } } ReleaseMutex( m_hSema ); } }
void GreenPadWnd::ReloadConfig( bool noSetDocType ) { // 文書タイプロード if( !noSetDocType ) { int t = cfg_.SetDocType( filename_ ); if( HMENU m = ::GetSubMenu( ::GetSubMenu(::GetMenu(hwnd()),3),4 ) ) cfg_.CheckMenu( m, t ); } LOGGER("GreenPadWnd::ReloadConfig DocTypeLoaded"); // Undo回数制限 edit_.getDoc().SetUndoLimit( cfg_.undoLimit() ); // 行番号 bool ln = cfg_.showLN(); edit_.getView().ShowLineNo( ln ); // 折り返し方式 wrap_ = cfg_.wrapType(); edit_.getView().SetWrapType( wrap_ ); // 色・フォント VConfig vc = cfg_.vConfig(); edit_.getView().SetFont( vc ); LOGGER("GreenPadWnd::ReloadConfig ViewConfigLoaded"); // キーワードファイル Path kwd = cfg_.kwdFile(); FileR fp; if( kwd.len()!=0 && fp.Open(kwd.c_str()) ) edit_.getDoc().SetKeyword((const unicode*)fp.base(),fp.size()/2); else edit_.getDoc().SetKeyword(NULL,0); LOGGER("GreenPadWnd::ReloadConfig KeywordLoaded"); }