首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在任何时候刷新Ribbon?

如何在任何时候刷新Ribbon?
EN

Stack Overflow用户
提问于 2018-11-25 06:34:21
回答 1查看 250关注 0票数 0

我创建一个MFC应用程序。

应用程序具有按恒定速率刷新的CMFCRibbonEdit UI。

但是,我不能用ON_UPDATE_COMMAND_UI进行恒速刷新。

我看上去像下面的人。

  • 移动带上的光标:刷新100 by
  • oher :刷新1000 by

如何以我的速率(100 my )刷新UI?

样本代码:

代码语言:javascript
复制
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    ....
    m_wndRibbonBar.Create(this);
    m_wndRibbonBar.LoadFromResource(IDR_RIBBON);

    CMFCRibbonCategory* pCategoryTest = m_wndRibbonBar.AddCategory(L"TEST CAT", IDB_WRITESMALL, IDB_WRITELARGE);
    CMFCRibbonPanel* pPanelTest =  pCategoryTest->AddPanel(L"Test Panel");
    pEdit_ = new CMFCRibbonEdit(ID_EDIT_1, 120, L"test");
    pPanelTest->Add(pEdit_);
    ....

    // data refresh by constant rate (100ms)
    worker_ = std::thread([&] {
        while (1)
        {
            count_ += 0.1f;
            Sleep(100);
        }
    });
    ....
}

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx)
    ON_WM_CREATE()
    ON_WM_SETFOCUS()
    ON_UPDATE_COMMAND_UI(ID_EDIT_1, &CMainFrame::UpdateCommandUI)
END_MESSAGE_MAP()

void CMainFrame::UpdateCommandUI(CCmdUI* pCmdUI)
{
    if (pCmdUI->m_nID == ID_EDIT_1)
    {
        CString str;
        str.Format(L"%f", count_);
        pEdit_->SetEditText(str);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-25 15:40:30

成功!

谢谢,IInspectable!

代码语言:javascript
复制
CMainFrame::~CMainFrame()
{
    //KillTimer(TEST_TIMER_ID);
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    ....
    // Create CMFCRibbonEdit
    ....
    // Delete worker thread
    //worker_ = std::thread([&] {
    ....

    // Setup Timer by 100ms
    SetTimer(TEST_TIMER_ID, 100, NULL);

    return 0;
}

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx)
    ON_WM_CREATE()
    ON_WM_SETFOCUS()
    ON_WM_TIMER()
END_MESSAGE_MAP()

void CMainFrame::OnTimer(UINT_PTR nIDEvent)
{
    if (nIDEvent == TEST_TIMER_ID)
    {
        count_ += 0.1f;
        CString str;
        str.Format(L"%f", count_);
        pEdit_->SetEditText(str);
    }

    CFrameWndEx::OnTimer(nIDEvent);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53465233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档