2014-03-05 26 views
0

它已經有一段時間了,我已經停止在VC++上工作,現在我有一些項目,我再次開始在VC++上開發... ....我現在有一個奇怪的問題該控件的標籤是沒有得到改變的一切都在這裏是我的mfcoutlookbar無法更改Tab的標籤VC++的文本CMFCOutlookBar

BOOL CMainFrame::CreateOutlookBar(CMFCOutlookBar& bar, UINT uiID, CMFCShellTreeCtrl& tree, CCalendarBar& calendar,CListCtrlBar &listctrl,int nInitialWidth) 
{ 
    bar.SetMode2003(); 

    BOOL bNameValid; 
    CString strTemp; 
    bNameValid = strTemp.LoadString(IDS_SHORTCUTS); 
    ASSERT(bNameValid); 
    if (!bar.Create(strTemp, this, CRect(0, 0, nInitialWidth, 32000), uiID, WS_CHILD | WS_VISIBLE | CBRS_LEFT)) 
    { 
     return FALSE; // fail to create 
    } 

    CMFCOutlookBarTabCtrl* pOutlookBar = (CMFCOutlookBarTabCtrl*)bar.GetUnderlyingWindow(); 

    if (pOutlookBar == NULL) 
    { 
     ASSERT(FALSE); 
     return FALSE; 
    } 

    pOutlookBar->EnableInPlaceEdit(FALSE); //we dont want editing 

    static UINT uiPageID = 1; 

    // can float, can autohide, can resize, CAN NOT CLOSE 
    DWORD dwStyle = AFX_CBRS_FLOAT | AFX_CBRS_AUTOHIDE | AFX_CBRS_RESIZE; 

    CRect rectDummy(0, 0, 0, 0); 
    const DWORD dwTreeStyle = WS_CHILD | WS_VISIBLE | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS; 

    //Create tree 
    tree.Create(dwTreeStyle, rectDummy, &bar, 1200); 
    //bNameValid = strTemp.LoadString(IDS_FOLDERS); 
    ASSERT(bNameValid); 
    pOutlookBar->AddControl(&tree, L"Folders", 2, TRUE, dwStyle); 

    //create calender 

    calendar.Create(rectDummy, &bar, 1201); 
// bNameValid = strTemp.LoadString(IDS_CALENDAR); 
// ASSERT(bNameValid); 
    pOutlookBar->AddControl(&calendar, L"CALLLLLL",1, TRUE, dwStyle); 

    //create list control bar 
    listctrl.Create(rectDummy,&bar,1202); 
// bNameValid = strTemp.LoadString(IDS_DASHBOARD);//Dashboard to check the statistics and statical reports 
// ASSERT(bNameValid); 
    pOutlookBar->AddControl(&listctrl, L"Some", 0, TRUE, dwStyle); //the digit represent icon 

    bar.SetPaneStyle(bar.GetPaneStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC); 

    pOutlookBar->SetImageList(theApp.m_bHiColorIcons ? IDB_PAGES_HC : IDB_PAGES, 24); 
    pOutlookBar->SetToolbarImageList(theApp.m_bHiColorIcons ? IDB_PAGES_SMALL_HC : IDB_PAGES_SMALL, 16); 
    pOutlookBar->RecalcLayout(); 

    BOOL bAnimation = theApp.GetInt(_T("OutlookAnimation"), TRUE); 
    CMFCOutlookBarTabCtrl::EnableAnimation(bAnimation); 

    bar.SetButtonsFont(&afxGlobalData.fontBold); 

    return TRUE; 
} 
如果你看到我使用兩種不同的控制

的初始化代碼,爲他們提供的文本標籤E 1,克,

pOutlookBar->AddControl(&listctrl, L"Some", 0, TRUE, dwStyle); 

另一種是

pOutlookBar->AddControl(&calendar, L"CALLLLLL",1, TRUE, dwStyle); 

現在標籤「一些」和「CALLLLLL」不顯示我已經試過各種方法,但我不知道爲什麼它仍然顯示的

「壓延」默認的文本和「文件夾」

我已更改字符串表中的所有文本以及...此代碼由Visual Studio C++通過嚮導使用Office 2000生成。

我在做什麼錯誤?

enter image description here

回答

2

奧凱終於想通了這個問題是緩存,所有應用程序的outlookbased欄保存在註冊表中的標題和標籤......所以清洗解決方案再次重建並重新不會給你正確的標籤標題,除非您刪除該應用程序的註冊表項。

HKEY_USERS \ S-1-5-21-3153867254-3211561466-2840709754-1000 \ SOFTWARE \本地應用程序嚮導生成的應用程序\ TEST2

,然後刪除該test2的項目的關鍵....運行後您的應用程序將顯示正確的標籤。