我在对话框页面上有很多按钮。有一次,我创建了其中一个按钮,其边缘突出显示。查看此内容后,我确定按下按钮后也会发生同样的事情。释放按钮后,边缘仍会略微突出显示。所有按钮都是使用 DIALOGEX 在 .rc 文件中创建的。
使用如下代码创建了 50 多个按钮:
DEFPUSHBUTTON " P0100 MASS AIR FLOW SENSOR CIRCUIT INSUFFICIENT ACTIVITY", IDC_M17_P0100, 5, 45, 300, 14, BS_LEFT, WS_EX_CLIENTEDGE
我重叠按钮并使用以下代码启用/禁用它们:
ShowWindow(GetDlgItem(hDlg, IDC_M17_P0100), nShow);
一旦创建并变得更好,按下按钮后我希望它们保持不突出显示。我一直在寻找一种风格/扩展风格,但一无所获。
编辑:以下是其中一个对话片段
IDD_MODE_$17 DIALOGEX 0, 0, 500, 500
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU //| DS_CONTROL | WS_THICKFRAME | WS_VSCROLL
//EXSTYLE WS_EX_WINDOWEDGE
CAPTION "Mode $17 Diagnostics"
FONT 10, "MS Shell Dlg"
BEGIN
//SCROLLBAR IDC_VSCROLLBAR, 570, 0, 10, 300, SBS_VERT
LTEXT "Mode $17: Request status of diagnostic trouble codes (DTC)", IDC_STATIC, 5, 5, 200, 10, SS_NOPREFIX
DEFPUSHBUTTON " P0100 MASS AIR FLOW SENSOR CIRCUIT INSUFFICIENT ACTIVITY", IDC_M17_P0100, 5, 45, 300, 14, BS_LEFT, WS_EX_CLIENTEDGE
...
DEFPUSHBUTTON " P1886 3-2 SHIFT SOLENOID VALVE CIRCUIT", IDC_M17_P1886, 5, 285, 300, 14, BS_LEFT, WS_EX_CLIENTEDGE
LTEXT "", IDS_RESULT, 310, 45, 200, 300, SS_NOPREFIX | BS_LEFT, WS_EX_CLIENTEDGE
END
Jabberwocky 关于 DEFPUSHBUTTON 与 PUSHBUTTON 的评论是正确的。我理解了两者的区别,谢谢。Raymond 关于只有一个默认值的评论我现在确信也是正确的,但不会影响结果。似乎最后生成的 DEFPUSHBUTTON 只是成为默认值。这不是我想要的,所以我把所有都改成了 PUSHBUTTON 。但突出显示仍然存在。有没有我可以添加的样式来使按钮不突出显示?有些方法超出了我的理解范围...
问题不在于代码,而在于理解为什么标记为 P1886 的按钮略微突出显示。如果我知道为什么会这样,也许我可以发送一条消息来重置参数。目前应用程序运行正常,但不理解突出显示以及如何使用它很困难。我试过调整焦点和突出显示。我不确定发布什么代码可以帮助更好地显示问题。
这个答案更像是一种变通方法。对话框中定义的第一个按钮会突出显示。在我的例子中,我有七页按钮。为了解决其中一个选项突出显示的问题,我重新排列了按钮定义。由于我有按钮来选择要显示的页面,所以我首先添加了这些按钮。现在,当显示对话框时,除页面按钮外,所有按钮均未突出显示。由于我初始化时查看了第 1 页,并且这是定义的第一个按钮,因此一切看起来都正常。我不知道这一切的原因,但它似乎与对话框的默认按钮有关。我测试了各种消息,如 DM_SETDEFID、BM_SETSTYLE 和 DM_SETDEFID,但始终无法摆脱突出显示。另一种方法可能是首先创建一个未使用的按钮并使其不可见。目前,我可能花了太多时间来处理这个问题。即使我不了解其背后的原因,我也可以在应用程序中得到我想要的结果。