u013955940
Zebe
采纳率50%
2021-05-06 15:45 阅读 16

使用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++高手,这种情况如何解决?

 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

相关推荐