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

使用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条回答 默认 最新

  • 源代码大师 博客专家认证 2021-05-06 16:18
    关注
    评论

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况