#include "stdafx.h" #include "common.h" CHistory::CHistory(int BaseID){ iNum=0; iMaxHistoryNum=15; m_BaseID=BaseID; } CHistory::~CHistory(){ int i; for(i=0;i0;i--){ lpszPath[i]=lpszPath[i-1]; } if(iNum+1 == iMaxHistoryNum){ //一番古い情報を削除 HeapDefaultFree(lpszPath[iNum]); } else iNum++; } else{ //ローテーション HeapDefaultFree(lpszPath[i]); for(;i>0;i--){ lpszPath[i]=lpszPath[i-1]; } } lpszPath[0]=(char *)HeapAlloc(hHeap,0,lstrlen(path)+1); lstrcpy(lpszPath[0],path); } void CHistory::ResetFileMenu(CSubMenuEx *pobj_SubMenu,BOOL bOwnerDraw){ //古いメニューアイテムを消去 while(0iMenuItemNum){ pobj_SubMenu->RemoveItem(0); } if(iNum==0){ //なし pobj_SubMenu->InsertItem(0,100,"なし"); pobj_SubMenu->EnableItem(100,MF_BYCOMMAND|MF_GRAYED); return; } int i; for(i=0;iInsertItem(i,m_BaseID+i,lpszPath[i]); //アイコンをセット(ネットワークドライブ内のファイルは取得に時間がかかるため、除外する) if( !Jenga::Common::Path( lpszPath[i] ).IsNetworkPath() ) { if(IsExistFile(lpszPath[i])){ SHFILEINFO shfi; SHGetFileInfo( lpszPath[i], FILE_ATTRIBUTE_ARCHIVE, &shfi, sizeof(SHFILEINFO), SHGFI_ICON | SHGFI_SMALLICON ); if(shfi.hIcon){ pobj_SubMenu->SetIcon(m_BaseID+i,shfi.hIcon); } } } } }