老师好,我用.r文件画了几个5个按钮,停靠在PS属性栏下方。
我想实现选中某按钮后会出现蓝色边框来区别选中后的状态,类似于下图的钢筋选择按钮,选中后有一个蓝色边框标识,请大佬指教如何实现
DialogBoxRsc DIALOGID_LEVELPalette = {#if defined (MSVERSION) && (MSVERSION >= 0x550) DIALOGATTR_TOOLBOXCOMMON,#else DIALOGATTR_DEFAULT | DIALOGATTR_NORIGHTICONS | DIALOGATTR_AUTOOPEN,#endif XC, YC, NOHELP, LHELPCMD, HOOKID_DialogDemo, NOPARENTID, TXT_Frame,{#if defined (MSVERSION) && (MSVERSION >= 0x550){{0, 0, 0, 0}, ToolBox, ICONCMDFRAMEID_DialogDemo, ON, 0, "", ""},#else{{0, 0, 0, 0}, IconCmdFrame, ICONCMDFRAMEID_DialogDemo, ON, 0, "", ""},#endif} };
#if defined (MSVERSION) && (MSVERSION >= 0x550)DItem_ToolBoxRsc ICONCMDFRAMEID_DialogDemo = { NOHELP, LHELPCMD, NOHOOK, NOARG, 0, "", { {{ 0, 0, 0, 0}, IconCmd, ICONCMDID_DialogDemo1, ON, 0, "", "owner=\"LEVELTOOLS\""}, {{ 0, 0, 0, 0}, IconCmd, ICONCMDID_DialogDemo2, ON, 0, "", "owner=\"LEVELTOOLS\""}, {{ 0, 0, 0, 0}, IconCmd, ICONCMDID_DialogDemo3, ON, 0, "", "owner=\"LEVELTOOLS\""}, {{ 0, 0, 0, 0}, IconCmd, ICONCMDID_DialogDemo4, ON, 0, "", "owner=\"LEVELTOOLS\""}, {{ 0, 0, 0, 0}, IconCmd, ICONCMDID_DialogDemo5, ON, 0, "", "owner=\"LEVELTOOLS\""}, } };#elseDItem_IconCmdFrameRsc ICONCMDFRAMEID_DialogDemo = { 2, 3, NOHELP, LHELPCMD, NOHOOK,"", { {IconCmd, ICONCMDID_DialogDemo1}, {IconCmd, ICONCMDID_DialogDemo2}, {IconCmd, ICONCMDID_DialogDemo3}, {IconCmd, ICONCMDID_DialogDemo4}, {IconCmd, ICONCMDID_DialogDemo5}, } };#endif
DItem_IconCmdRsc ICONCMDID_DialogDemo1 = { NOHELP, OHELPTASKIDCMD, 0, CMD_MAINREBAR_LEVEL, OTASKID , "1", ""#if defined (MSVERSION) && (MSVERSION >= 0x550) } extendedAttributes {{ {EXTATTR_FLYTEXT, TXT_Flyover_DialogDemo1}, {EXTATTR_BALLOON, TXT_Balloon_DialogDemo1}, }#endif };
IconCmdSmallRsc ICONCMDID_DialogDemo1 = { 23, 23, FORMAT_MONOBITMAP, BLACK_INDEX, "", { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x02, 0x02, 0x04, 0x02, 0x00, 0x10, 0x02, 0x3c, 0x40, 0x01, 0xce, 0x00, 0x06, 0x06, 0x00, 0x08, 0x04, 0x01, 0xd0, 0x0b, 0x80, 0x30, 0x30, 0x00, 0x30, 0xc0, 0x00, 0x33, 0x00, 0x02, 0x24, 0x40, 0x08, 0x78, 0x40, 0x20, 0x90, 0x40, 0x01, 0xe0, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, } };
IconCmdLargeRsc ICONCMDID_DialogDemo1 = { 31, 31, FORMAT_MONOBITMAP, BLACK_INDEX, "", { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x01, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x01, 0x1f, 0x88, 0x00, 0x00, 0x61, 0x80, 0x00, 0x01, 0x81, 0x80, 0x00, 0x02, 0x01, 0x00, 0x00, 0xf4, 0x02, 0xe0, 0x00, 0x08, 0x04, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x60, 0x00, 0x01, 0x19, 0x88, 0x00, 0x04, 0x12, 0x08, 0x00, 0x10, 0x24, 0x08, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, } };
DItem_IconCmdRsc ICONCMDID_DialogDemoPal1Sub1 = { NOHELP, OHELPTASKIDCMD, 0, NOCMD, OTASKID , "", ""#if defined (MSVERSION) && (MSVERSION >= 0x550) } extendedAttributes {{ {EXTATTR_FLYTEXT, TXT_Flyover_DialogDemoPal1Sub1}, {EXTATTR_BALLOON, TXT_Balloon_DialogDemoPal1Sub1}, }#endif };
IconCmdSmallRsc ICONCMDID_DialogDemoPal1Sub1 = { 23, 23, FORMAT_MONOBITMAP, BLACK_INDEX, "Pal 1 Sub 1 SM", { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x00, 0x80, 0x20, 0x01, 0x00, 0x40, 0x02, 0x00, 0x80, 0x04, 0x01, 0x00, 0x08, 0x02, 0x00, 0x10, 0x04, 0x00, 0x20, 0x08, 0x00, 0x40, 0x10, 0x00, 0x80, 0x20, 0x01, 0x00, 0x40, 0x02, 0x00, 0x80, 0x04, 0x01, 0x00, 0x08, 0x02, 0x00, 0x10, 0x04, 0x00, 0x20, 0x08, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, } };
IconCmdLargeRsc ICONCMDID_DialogDemoPal1Sub1 = { 31, 31, FORMAT_MONOBITMAP, BLACK_INDEX, "Pal 1 Sub 1 LG", { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x5c, 0x00, 0xb8, 0x00, 0xb8, 0x01, 0x70, 0x02, 0x70, 0x04, 0xe0, 0x08, 0xe0, 0x11, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x38, 0x00, 0x38, 0x00, 0x70, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x38, 0x00, 0x38, 0x00, 0x70, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x1c, 0x01, 0xff, 0xc1, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, } };
实现选择工具中的如下效果是否满足您的要求?
您好 这样也可以满足要求,只要能区分是否点过就行,请大佬指导一下谢谢
符老师,请问ToggleIcon控件有使用案例吗,不清楚他如何使用,在论坛里搜到的很少,ToggleIcon图片的加载方式是与IconCmd一致吗
该控件并无特别之处。举例如下:1、在DialogBox或ToolBox中定义其item list specification如下:
{{XC, YC, 0, 0}, ToggleIcon, TOGGLEID_Distance, ON, 0, "", ""},
2、定义其item resource specification如下。其中引用了ICONID_Distance_15X15
DItem_ToggleIconRsc TOGGLEID_Distance = { NOCMD, MCMD, NOSYNONYM, NOHELP, MCMD, NOHOOK, NOARG, NOMASK, NOINVERT, 0, ICONID_Distance_15x15, RTYPE_Icon, "","" } extendedAttributes { { {EXTATTR_FLYTEXT, TXT_Flyover_Distance}, {EXTATTR_BALLOON, TXT_Balloon_Distance}, } };
3、继续定义ICONID_Distance_15X15的资源如下:
IconRsc ICONID_Distance_15x15 = { 15, 15, ICONFORMAT_WINDOWS, BLACK_INDEX, "", "AccudrawDistance" };
这里是通过Icon的名称AccudrawDistance来表示图标名的。您需要在您DGNLIB中插入这个名称的Ico文件进来,或者将您ICO文件打包成一个rsc文件放到系统的C:\Program Files\Bentley\MicroStation CONNECT Edition\MicroStation\Icons文件夹下。目前该文件夹下有ustnicons.rsc文件,该资源文件中包含了上千个MS中用到的图标资源。
麻烦老师帮忙看一下使用ToggleIcon来调用命令CMD_MAINREBAR_LEVEL,.r文件写法是否有问题,这样写按钮效果出来了。但点击ToggleIcon按钮没有反应,调试了一下并没有进入到命令函数
.r文件中CMD_MAINREBAR_LEVEL后面的参数应该给LCMD(Local Command的缩写,表示是你自己本地的命令)而不应该是MCMD(MicroStation Command)
Answer Verified By: 卫 成
非常感谢,问题已经解决