老师好,我用.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, } };
实现选择工具中的如下效果是否满足您的要求?
您好 这样也可以满足要求,只要能区分是否点过就行,请大佬指导一下谢谢
这是用的一种叫做ButtonGroup的item类型。举例如下:
DItem_ButtonGroupRsc BGROUPID_MethodIcons = { NOSYNONYM, NOHELP, MHELP, HOOKITEMID_MethodType, NOARG, DIALOGATTR_MOTIONTOITEMS, 5, 1, 0, 0, WHITE_INDEX, TXT_PSelectMethodLabel, "powerSelectInfo.prefs.currSelBy", { {Icon, ICONID_SelectSingle, CMD_POWERSELECTOR_SINGLE, LCMD, SELBY_individual, NOMASK, 0, 0, TXT_Flyover_PSelectIndividual}, {Icon, ICONID_SelectBlock, CMD_POWERSELECTOR_AREA_BLOCK, LCMD, SELBY_rectangle, NOMASK, 0, 0, TXT_Flyover_PSelectRectangle}, {Icon, ICONID_SelectShape, CMD_POWERSELECTOR_AREA_SHAPE, LCMD, SELBY_shape, NOMASK, 0, 0, TXT_Flyover_PSelectShape}, {Icon, ICONID_SelectCircle, CMD_POWERSELECTOR_AREA_CIRCLE, LCMD, SELBY_circle, NOMASK, 0, 0, TXT_Flyover_PSelectCircle}, {Icon, ICONID_SelectLine, CMD_POWERSELECTOR_LINE, LCMD, SELBY_line, NOMASK, 0, 0, TXT_Flyover_PSelectLine}, } };
符老师,请问有具体一点的例子吗,花括号内的列不知道代表什么意思
这个SELBY_individual列请问代表什么意思呢
MSCE SDK中缺乏对.r文件格式的详细描述,为此,请访问如下网页,获取随MSV8i SDK附带的MDL程序员指南,到这个MDLProgrammerGuide.chm中就能查到各个字段的详细含义了。
老师你好,非常感谢您提供的资料,但我发现选择工具并不能停靠在PS下方的属性栏中,请问如上图中的视图按钮使用的是哪种控件呢,想要按下按钮改变颜色,再次点击恢复原来的颜色,希望老师能指点一下
卫 成 said:我发现选择工具并不能停靠在PS下方的属性栏中
这个停靠功能不是通过控制控件来实现的,而是将多个控件放到一个叫做DItem_ToolBoxRsc的工具栏资源中实现的。这种工具栏可以任意停靠。
卫 成 said:如上图中的视图按钮使用的是哪种控件呢
这个不太容易实现,内部完全是通过硬编码去做的。在ToolBox资源中使用了Generic控件类型。
DItem_GenericRsc GENERICID_ViewToggles = { NOHELP, MHELPTOPIC, HOOKITEMID_ViewToggles, 0 }...
}};
在钩子函数中主要调用了mdlDialog_rectDrawBeveledCD硬是在对话框上去画的矩形,用mdlWindow_textDrawTransparent在对话框上写的视图号。
您的几个按钮之间是否有互斥关系?如果有的话,还是采用前面说的ButtonGroup比较合适,在一个group中只能有一个按钮被按下。如果您的几个按钮之间没有互斥关系的话,才需要像这个ViewToggles这样来做。