• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    Office 2000風格的停泊、智能型菜單

    發布: 2007-7-14 21:11 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 12次 | 進入軟件測試論壇討論

    領測軟件測試網 譯者:徐景周(原著:Piero Viano)

    下載演示源碼(http://www.vckbase.com/vckbase/vckbase12/vc/ctrls/menu_07/1207099.htm)

    (譯者注:由于原文作者所提供例子代碼需使用附帶RC資源,經本人使用后覺得不夠通用,故將部分源碼修改并將文章翻譯。文中現在所附例子為我最近所作一抓圖程序的界面部分。不光Office 2000智能菜單噢!還包括多文檔視圖的TAB頁顯示,自繪制菜單等,詳情請參看附帶實例代碼。我的EMAIL是:jingzhou_xu@163.net ~O~)

    在你的工程文件中使用Office 2000菜單的話(譯者:目前僅支持多文檔菜單修改,如果要改單文檔菜單界面的話,可對文件中的CMultiDocTemplateEx類、CMDIFrameEx類和CMDIFrameEx類進行修改,以適應單文檔界面。),請按下面步驟進行:

    在資源里的字符串表中新增二字符串:一、ID_SHOWFULL ,32792,顯示完全菜單。二、ID_INTMODE,32794,打開/禁止智能菜單模式。
    將OffMenu文件夾中每一個.cpp和.h文件包含井你的工程文件中。
    編輯工程文件中的 MainFrm.h (主框架頭文件) :
    將原類的聲明從:

    class CMainFrame : public CMDIFrameWnd

    改為:

    #include "MDIFrmEx.h"
    #include "ToolBarEx.h"

    class CMainFrame : public CMDIFrameEx

    接著將類中的工具條類從 CToolBar 改為 CToolbarEx:

    CToolbar m_wndToolBar;

    變成:

    CToolbarEx m_wndToolBar;


    編輯工程文件中的 MainFrm.cpp (主框架文件):
    改變其中消息映射從:

    IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
    BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)

    變成:

    IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameEx)
    BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameEx)

    接著將 CMainFrame::OnCreate 中的:

    if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)

    變為:

    if (CMDIFrameEx::OnCreate(lpCreateStruct) == -1)


    編輯工程文件中 MyApp.h (應用類頭文件):
    改變其中的類聲明從:

    class CTestMDIApp : public CWinApp

    變為:

    #include "WinAppEx.h"

    class CTestMDIApp : public CWinAppEx


    編輯工程文件中 MyApp.cpp (應用類文件):
    將其中的消息映射從:

    BEGIN_MESSAGE_MAP(CTestMDIApp, CWinApp)

    變為:

    #include "DocTplEx.h"

    BEGIN_MESSAGE_MAP(CTestMDIApp, CWinAppEx)

    接著將 CMyApp::InitInstance() 中的下面代碼從:

             CMultiDocTemplate* pDocTemplate;
             pDocTemplate = new CMultiDocTemplate(
                     IDR_TESTMDTYPE,
                     RUNTIME_CLASS(CTestMDIDoc),
                     // custom MDI child frame
                     RUNTIME_CLASS(CChildFrame),
                     RUNTIME_CLASS(CTestMDIView));
             AddDocTemplate(pDocTemplate);

             // create main MDI Frame window
             CMainFrame* pMainFrame = new CMainFrame;
             if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
                     return FALSE;
             m_pMainWnd = pMainFrame;

    替換成:

             UINT nID;
             nID=IDR_MAINFRAME;

             // create main MDI Frame window
             CMainFrame* pMainFrame = new CMainFrame;
             if (!pMainFrame->LoadFrame(nID))
                     return FALSE;
             m_pMainWnd = pMainFrame;

             CMultiDocTemplateEx* pDocTemplate;
             pDocTemplate = new CMultiDocTemplateEx(
                     IDR_TESTMDTYPE,
                     RUNTIME_CLASS(CTestMDIDoc),
                     // custom MDI child frame
                     RUNTIME_CLASS(CChildFrame),
                     RUNTIME_CLASS(CTestMDIView),
                     &nID,1);
             AddDocTemplate(pDocTemplate);

             CWinAppEx::InitInstance();


    接下來就可以編釋并運行你的程序了。
    如果你想自己掌控智能菜單的話,可直接重載CmenuBar類中的下面涵數既可:

    WORD CMenuBar::IncMenuUsage(CMenuEx *pParent,
                                UINT pos,
                                WORD curusage)

    BOOL CMenuBar::EvaluateIfGrayed(CMenuEx *pParent,
                                    UINT pos,
                                    WORD &curusage,
                                    int iMed,
                                    int iRange)
    第一個涵數用來添加當前菜單條有用法。第二個涵數決定當前菜單條是否灰色顯示,它也可用來修改當前菜單條的用法。如果你想在菜單中存儲應用程序中定義的數據的話,可用CMenuEx::GetExtraDataPtr(UINT)來包含進這些數據。

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>