这是 Windows 字体对话框中两个按钮的示例:
确定按钮是默认按钮,如果我单击取消按钮(鼠标向下),则取消按钮将成为默认按钮。
如何在 WinAPI 中实现这一点,我是否应该处理每个按钮的鼠标按下事件,并添加到单击BS_DEFPUSHBUTTON样式的按钮并从其他按钮中删除该样式?
发送DM_SETDEFID到对话框以更改默认按钮 ID。但请注意以下几点:
使用 DM_SETDEFID 消息可能会导致多个按钮看起来具有默认按钮状态。当系统打开一个对话框时,它会在对话框模板中绘制第一个带有默认状态边框的按钮。发送 DM_SETDEFID 消息以更改默认按钮不会总是从第一个按钮中删除默认状态边界。在这些情况下,应用程序应发送 BM_SETSTYLE 消息来更改第一个按钮边框样式
因此,除了发送DM_SETDEFID设置新的默认按钮外,您还应该发送BM_SETSTYLE到旧的默认按钮以清除BS_DEFPUSHBUTTON样式。