荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Peter (小飞侠), 信区: Program
标  题: VC50小经验
发信站: BBS 荔园晨风站 (Fri Jan 22 13:44:42 1999), 转信


l 如何启动Dialog的Command Update机制?
重载Cdialog的WM_INITMENUPOPUP, 修改使用
void CFrameWnd::OnInitMenuPopup (CMenu* pMenu, UINT, BOOL bSysMenu)
中的source code,启动Command Update机制

l 如何实现Dialog的Menu中最近使用文件机制?
最近使用文件机制是用CWinApp的Command Update机制和以下两个消息处理的:
ON_UPDATE_COMMAND_UI(ID_FILE_MRU_FILE1, OnUpdateRecentFileMenu)
ON_COMMAND_EX_RANGE(ID_FILE_MRU_FILE1,ID_FILE_MRU_FILE16, OnOpenRecentFile)

void CWinApp::OnUpdateRecentFileMenu(CCmdUI* pCmdUI)
{
        ASSERT_VALID(this);
        if (m_pRecentFileList == NULL) // no MRU files
                pCmdUI->Enable(FALSE);
        else
                m_pRecentFileList->UpdateMenu(pCmdUI);
}
/////////////////////////////////////////////////////////////////////////////
// MRU file list default implementation

BOOL CWinApp::OnOpenRecentFile(UINT nID)
{
        ASSERT_VALID(this);
        ASSERT(m_pRecentFileList != NULL);

        ASSERT(nID >= ID_FILE_MRU_FILE1);
        ASSERT(nID < ID_FILE_MRU_FILE1 + (UINT)m_pRecentFileList->GetSize());
        int nIndex = nID - ID_FILE_MRU_FILE1;
        ASSERT((*m_pRecentFileList)[nIndex].GetLength() != 0);

        TRACE2("MRU: open file (%d) '%s'.\n", (nIndex) + 1,
                        (LPCTSTR)(*m_pRecentFileList)[nIndex]);

        if (OpenDocumentFile((*m_pRecentFileList)[nIndex]) == NULL)
                m_pRecentFileList->Remove(nIndex);

        return TRUE;
}
因为Dialog没有文档对象,所以需要重写OnOpenRecentFile.

--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.3]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店