无法更改Tab的标签VC ++ CMFCOutlookBar的文本

时间:2014-03-05 08:34:03

标签: c++ visual-c++ visual-studio-2012 mfc

已经有一段时间我已经停止了VC ++的工作,现在我有一些项目,我再次开始在VC ++上开发....我现在有一个奇怪的问题,控件的标签没有改变这里是我的mfcoutlookbar初始化代码

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 ,, g,

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

,另一个是

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

现在标签“Some”和“CALLLLLL”没有显示我已经尝试了一切,但我不知道为什么它仍然显示默认文本

“日历”和“文件夹”

我已经更改了String表中的所有文本...此代码由Visual Studio C ++由向导使用Office 2000生成。

我在做什么错误???

enter image description here

1 个答案:

答案 0 :(得分:3)

好吧终于弄清楚问题是缓存,任何应用程序的outlookbased栏保存注册表中的标题和标签...所以清理你的解决方案一次又一次重建它不会给你正确的标签标题,除非你删除该应用程序的注册表项。

HKEY_USERS \ S-1-5-21-3153867254-3211561466-2840709754-1000 \ Software \ Local AppWizard-Generated Applications \ test2

然后删除此test2项目密钥....之后运行您的应用程序将显示正确的标签。