RecentFileList.cpp
上传用户:netltd
上传日期:2013-02-12
资源大小:7234k
文件大小:2k
源码类别:

绘图程序

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include "RecentFileList.h"
  3. void CRecentFileListEx::UpdateMenu(CCmdUI* pCmdUI)
  4. {
  5. int index = 0;
  6. ASSERT(m_arrNames != NULL);
  7. //注意不是pCmdUI->m_pMenu
  8. CMenu* pMenu = pCmdUI->m_pSubMenu;
  9. if (m_strOriginal.IsEmpty() && pMenu != NULL)
  10. pMenu->GetMenuString(pCmdUI->m_nID, m_strOriginal, MF_BYCOMMAND);
  11. if (m_arrNames[0].IsEmpty())
  12. {
  13. // no MRU files
  14. if (!m_strOriginal.IsEmpty())
  15. pCmdUI->SetText(m_strOriginal);
  16. pCmdUI->Enable(FALSE);
  17. return;
  18. }
  19. if (pCmdUI->m_pSubMenu == NULL)
  20. return;
  21. for (int iMRU = 0; iMRU < m_nSize; iMRU++)
  22. pCmdUI->m_pSubMenu->DeleteMenu(pCmdUI->m_nID + iMRU, MF_BYCOMMAND);
  23. TCHAR szCurDir[_MAX_PATH];
  24. GetCurrentDirectory(_MAX_PATH, szCurDir);
  25. int nCurDir = lstrlen(szCurDir);
  26. ASSERT(nCurDir >= 0);
  27. szCurDir[nCurDir] = '\';
  28. szCurDir[++nCurDir] = '';
  29. CString strName;
  30. CString strTemp;
  31. for (iMRU = 0; iMRU < m_nSize; iMRU++)
  32. {
  33. if (!GetDisplayName(strName, iMRU, szCurDir, nCurDir))
  34. break;
  35. // double up any '&' characters so they are not underlined
  36. LPCTSTR lpszSrc = strName;
  37. LPTSTR lpszDest = strTemp.GetBuffer(strName.GetLength()*2);
  38. while (*lpszSrc != 0)
  39. {
  40. if (*lpszSrc == '&')
  41. *lpszDest++ = '&';
  42. if (_istlead(*lpszSrc))
  43. *lpszDest++ = *lpszSrc++;
  44. *lpszDest++ = *lpszSrc++;
  45. }
  46. *lpszDest = 0;
  47. strTemp.ReleaseBuffer();
  48. // insert mnemonic + the file name
  49. TCHAR buf[10];
  50. wsprintf(buf, _T("&%d "), (iMRU+1+m_nStart) % 10);
  51. pCmdUI->m_pSubMenu->InsertMenu(pCmdUI->m_nIndex++,
  52. MF_STRING | MF_BYPOSITION, pCmdUI->m_nID++,
  53. CString(buf) + strTemp);
  54. }
  55. // update end menu count
  56. pCmdUI->m_nIndex--; // point to last menu added
  57. pCmdUI->m_nIndexMax = pCmdUI->m_pSubMenu->GetMenuItemCount();
  58. pCmdUI->m_bEnableChanged = TRUE;    // all the added items are enabled
  59. }