成都超平面科技 2021-05-06 15:45 采纳率: 50%
浏览 121

使用C++开发CorelDRAW的CPG插件,创建了工具栏图标但无法点击如何解决

问题:在使用X64的CDR类型库编译时,能够成功创建自定义的工具栏和图标,但是产生的图标是灰色不可点击的状态。

代码如下:

STDMETHODIMP HelloWorldPlugin::raw_StartSession() {
	try {
		m_lCookie = corelApp->AdviseEvents(this);

		auto ctl = corelApp->CommandBars->Item[bstr_t("插件")];//定义读取名字为"插件"的工具栏,首次启动因为不存在这个工具栏而抛出异常
		corelApp->AddPluginCommand(bstr_t("图标1"), bstr_t("一键条幅"), bstr_t("一键制作条幅插件"));//关联插件
		corelApp->AddPluginCommand(bstr_t("图标2"), bstr_t("按钮2"), bstr_t("我是第二个按钮"));//关联插件
	}
	catch (_com_error& e) {
		//MessageBox(NULL, e.Description(), _bstr_t("raw_StartSession 出错了"), MB_ICONSTOP);
		auto ctl = corelApp->CommandBars->Add(bstr_t("插件"), (VGCore::cuiBarPosition)4, false);//没有工具栏,就添加一个
		ctl->Visible = true;//设置工具栏可见
		auto bt = ctl->Controls->AddCustomButton(VGCore::cdrCmdCategoryPlugins, bstr_t("图标1"), 0, false);//在工具栏里添加按钮
		auto bt2 = ctl->Controls->AddCustomButton(VGCore::cdrCmdCategoryPlugins, bstr_t("图标2"), 0, false);//在工具栏里添加第二个按钮
		_bstr_t bstrPath(corelApp->Path + _bstr_t("Plugins64\\make-banner.ico"));
		bt->SetIcon2(bstrPath);
		bt->Visible = true;//设置工具栏里的按钮可见
		_bstr_t bstrPath2(corelApp->Path + _bstr_t("Plugins64\\bt2.ico"));
		bt2->SetIcon2(bstrPath2);
		bt2->Visible = true;//设置工具栏里的按钮可见
		corelApp->AddPluginCommand(bstr_t("图标1"), bstr_t("一键条幅"), bstr_t("一键制作条幅插件"));//关联插件
		corelApp->AddPluginCommand(bstr_t("图标2"), bstr_t("图标名称2"), bstr_t("我是第二个按钮"));//关联插件
	}
	return S_OK;
}

可以参考下图,图标是灰色的,始终是被禁用的状态,无法点击。 

请教C++高手,这种情况如何解决?

 

  • 写回答

2条回答

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥15 课程设计,求代码、注释和流程图
      • ¥15 老哥们看看我这电脑怎么救,主板是华硕的
      • ¥16 unity如何做场景切换效果
      • ¥15 关于bitwise and/or 的问题
      • ¥15 用matlab来完成这两个程序
      • ¥15 ckeditor获取内容显示问题
      • ¥15 如何在pyecharts绘制的图像上添加窗口?
      • ¥15 8086CPU汇编语言
      • ¥15 51单片机c语言制作数字电子时钟
      • ¥15 求大神帮忙看看这一题