在CMFCTaskPane中使用CMFCToolBarImages

时间:2018-03-08 05:49:09

标签: mfc mfc-feature-pack

在我的MFC MDI应用程序中,我有10个CMFCToolBar,每个都有单独的图像列表(位图图像​​)。

我使用CMFCTaskPane实现了任务窗格,其中我正在对CMFCToolbar正在执行的相同任务或活动进行分组。

我可以使用/分配每个CMFCToolbar图像列表到每个组下面的任务吗?

CMFCTaskPane课程中,我只有这些方法:

  • BOOL SetIconList(HIMAGELIST hIcons)
  • BOOL SetIconsList(UINT uiImageListResID, int cx, COLORREF clrTransparent = RGB(255, 0, 255))

CMFCTaskPane类中,我们可以选择只将一个图像列表分配给整个任务窗格。没有选项可以为每个组及其任务分配单独的图像列表。

但我有10 CMFCToolbar和10 CImageList。如何使用我的工具栏图像来达到我的要求?

在此链接https://www.codeproject.com/Articles/16529/Simple-Menus-That-Display-Icons-Minimalistic-Appro?msg=1895336

通过覆盖DrawItem()函数在菜单中使用工具栏图像类似我们可以通过覆盖函数来绘制任务的图标

virtual void OnDrawTasks(CDC * pDC,CRect rectWorkArea);在CMFCTaskPane

我对如何做到这一点没有任何想法?

1 个答案:

答案 0 :(得分:1)

当您调用LoadToolbar时,您将为此工具栏创建imagelist的本地实例。 默认情况下,应用程序中的所有工具栏共享相同的图像列表。所以,只需要做这样的事情:

CMFCToolbar m_toolbar;
...
m_toolbar.Create(this, AFX_DEFAULT_TOOLBAR_STYLE;);
int newIconID = CMFCToolBar::GetImages()->AddIcon(hIcon, TRUE);
m_toolbar.InsertButton(cmd, newIconID, name);