翻译《The Old New Thing》 - Double-clicking radio buttons

Double-clicking radio buttons - The Old New Thing (microsoft.com)icon-default.png?t=N7T8https://devblogs.microsoft.com/oldnewthing/20050804-10/?p=34713

Raymond Chen 在 2005年08月04日


让对话框单选按钮支持双击确定

提示

本文提供了一种让对话框窗口上的控件支持双击确定窗口返回的方法

正文

        为你的对话框增加一丝精致感,可以通过支持双击单选按钮作为“选择 + 确定”的快捷方式。

( 如果页面是向导的一部分,则为“选择 + 下一步”或“选择 + 完成”。)

        考虑以下对话框模板

1 DIALOGEX DISCARDABLE  32, 32, 200, 76
STYLE DS_MODALFRAME |  WS_POPUP |
      WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION “Sample”
FONT 8, “MS Shell Dlg”
BEGIN
 LTEXT “A mumbler is needed.”,-1,7,8,100,10
 AUTORADIOBUTTON “Do not &obtain a mumber now”,
                 100,17,24,180,10
 AUTORADIOBUTTON “Obtain a mumbler auto&matically”,
                 101,17,34,180,10
 AUTORADIOBUTTON “&Enter mumbler manually”,
                 102,17,44,180,10
 DEFPUSHBUTTON “OK”,IDOK,92,58,50,14
 PUSHBUTTON “Cancel”,IDCANCEL,146,58,50,14
END

        和相关的对话框过程:

INT_PTR CALLBACK DlgProc(HWND hdlg, UINT uMsg,
                         WPARAM wParam, LPARAM lParam)
{
 switch (uMsg) {
 case WM_INITDIALOG:
  CheckRadioButton(hdlg, 100, 102, 100);
  return TRUE;
 case WM_COMMAND:
  switch (GET_WM_COMMAND_ID(wParam, lParam)) {
  case IDOK:
   for (int i = 100; i <= 102; i++) {
    if (IsDlgButtonChecked(hdlg, i)) EndDialog(hdlg, i);
   }
   break;
  case IDCANCEL:
   EndDialog(hdlg, -1);
   break;
  }
 }
 return FALSE;
}

         这是一个相当标准的、没什么特别的对话框,要求用户从列表中选择一个选项。注意,双击单选按钮并不做任何特别的事情。我们可以修复这一点。

1 DIALOGEX DISCARDABLE  32, 32, 200, 76
STYLE DS_MODALFRAME |  WS_POPUP |
      WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION “Sample”
FONT 8, “MS Shell Dlg”
BEGIN
 LTEXT “A mumbler is needed.”,-1,7,8,100,10
 AUTORADIOBUTTON “Do not &obtain a mumber now”,
                 100,17,24,180,10,BS_NOTIFY
 AUTORADIOBUTTON “Obtain a mumbler auto&matically”,
                 101,17,34,180,10,BS_NOTIFY
 AUTORADIOBUTTON “&Enter mumbler manually”,
                 102,17,44,180,10,BS_NOTIFY
 DEFPUSHBUTTON “OK”,IDOK,92,58,50,14
 PUSHBUTTON “Cancel”,IDCANCEL,146,58,50,14
END

 

INT_PTR CALLBACK DlgProc(HWND hdlg, UINT uMsg,
                         WPARAM wParam, LPARAM lParam)
{
 switch (uMsg) {
 case WM_INITDIALOG:
  CheckRadioButton(hdlg, 100, 102, 100);
  return TRUE;
 case WM_COMMAND:
  switch (GET_WM_COMMAND_ID(wParam, lParam)) {
  case IDOK:
   for (int i = 100; i <= 102; i++) {
    if (IsDlgButtonChecked(hdlg, i)) EndDialog(hdlg, i);
   }
   break;
  case IDCANCEL:
   EndDialog(hdlg, -1);
   break;
  case 100:
  case 101:
  case 102:
   if (GET_WM_COMMAND_CMD(wParam, lParam) == BN_DBLCLK) {
    EndDialog(hdlg, GET_WM_COMMAND_ID(wParam, lParam));
   }
   break;
  }
 }
 return FALSE;
}

        我们在单选按钮上添加了 BS_NOTIFY 样式,这启用了扩展通知(除了 BN_CLICKED 之外的所有通知)。当我们收到一个指定操作为 BN_DBLCLK 的单选按钮的 WM_COMMAND 消息时,我们自动点击确定按钮。(对于向导,我们将根据情况自动点击下一步或完成按钮。)

        请注意,双击作为选择和确定的快捷方式应该只用于只有单选按钮(和确定和取消按钮)的对话框或向导页面。如果页面上有除单选按钮之外的其他控件,那么你必须等待用户确定,因为他可能想操作其他控件。

        如果对话框上只有列表框或列表视图,而用户被要求从中选择一个项目,那么这个“双击意味着选择和确定”的快捷方式也可以使用。如果用户双击列表中的一个项目,将其视为选择和确定。

        资源管理器中的对话框对双击单选按钮的支持相当不一致。Office 和 Money 团队在这方面做得好多了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/598725.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HG-KN73J-S100 三菱伺服电机(750W型)

HG-KN73J-S100属于三菱MR-JE系列伺服系统&#xff0c;可以与伺服驱动器MR-JE-70A、MR-JE-70B、MR-JE-70C配套使用。HG-KN73J-S100完全替换HF-KN73J-S100。HG-KN73J-S100规格、HG-KN73J-S100参数。 HG-KN73J-S100参数说明&#xff1a;MR-JE低惯性/小容量、0.75Kw三菱伺服电机HG-…

【问题解决】关于linux环境下在使用onvif进行网络摄像头扫描发现时soap_send___wsdd__Probe返回-1

【问题背景】 在使用MTK+OPENWRT的方案进行开发时,有一个新需求是需要将检测网络摄像头信息,在使用onvif进行摄像头检测时,发现函数soap_send___wsdd__Probe总是返回-1,导致失败。 但是在编译服务器上使用gcc编译链而不使用交叉编译链时,运行正常,并且可以检测到网络摄像…

Leetcode—933. 最近的请求次数【简单】

2024每日刷题&#xff08;128&#xff09; Leetcode—933. 最近的请求次数 实现代码 class RecentCounter { public:RecentCounter() {}int ping(int t) {q.push(t);while(t - 3000 > q.front()) {q.pop();}return q.size();} private:queue<int> q; };/*** Your Re…

揭秘 IEEE/ACM Trans/CCF/SCI,谁才是科研界的王者?

会议之眼 快讯 在学术探索的浩瀚星海中&#xff0c;每一篇论文都像是一颗璀璨的星辰&#xff0c;而那些被顶级期刊或会议收录的论文&#xff0c;则无疑是最耀眼的几颗。 在众多评价标准中&#xff0c;IEEE/ACM Transactions、CCF推荐期刊和会议、SCI分区期刊&#xff0c;它们…

一、vue3专栏项目 -- 1、项目介绍以及准备工作

这是vue3TS的项目&#xff0c;是一个类似知乎的网站&#xff0c;可以展示专栏和文章的详情&#xff0c;可以登录、注册用户&#xff0c;可以创建、删除、修改文章&#xff0c;可以上传图片等等。 这个项目全部采用Composition API 编写&#xff0c;并且使用了TypeScript&#…

阴影渲染在AI去衣技术中的关键作用

引言&#xff1a; 随着人工智能技术的飞速发展&#xff0c;深度学习在图像处理领域取得了突破性的进展。其中&#xff0c;AI去衣技术作为一种高度复杂的图像到图像的转换过程&#xff0c;不仅要求算法能够精确地识别并处理衣物纹理和结构&#xff0c;还要求生成的结果具有高度的…

进制乘法表(任意进制均可以)

#include <iostream> // 包含输入输出流库 #include <vector> // 包含向量库&#xff0c;未使用&#xff0c;可以删除 #include <string> // 包含字符串库using namespace std; // 使用标准命名空间// 将十进制数转换为P进制形式的字符串 string toBase(…

Mac数据恢复软件快速比较:适用于Macbook的10佳恢复软件

数据丢失导致无数个人和组织每天损失大量资金。更糟糕的是&#xff0c;某些文件具有货币价值和情感意义&#xff0c;使它们不可替代&#xff0c;并使数据恢复成为唯一可行的选择。最好的消息是Mac用户可以从各种数据恢复程序中进行选择。为了帮助您尽可能快速、轻松地恢复丢失的…

品鉴中的音乐搭配:如何为红酒选择合适的音乐伴侣

品鉴红酒时&#xff0c;音乐是一个不可忽视的元素。合适的音乐能够增强红酒的口感&#xff0c;提升品鉴体验。对于云仓酒庄雷盛红酒而言&#xff0c;如何为其选择合适的音乐伴侣&#xff0c;是一个值得探讨的话题。 首先&#xff0c;了解红酒的风格和特点至关重要。云仓酒庄雷…

vin码查询接口快速对接

vin码查询接口全称叫VIN车辆识别代码查询接口&#xff0c;也叫车架号查询接口&#xff0c;指的是通过车辆VIN&#xff08;车架号&#xff09;查询车辆相关信息&#xff0c;如车辆品牌、车型、油耗、车身形式、排量等等。那么vin查询接口如何快速对接呢&#xff0c;接下来我们聊…

ODOO17数据库安全策略一(ODOO17 Database Security Policy I)

ODOO17作为ERP软件&#xff0c;其核心优势在于数据安全。凭借强大的原生安全机制及灵活的配置&#xff0c;确保数据安全无忧&#xff1a; ODOO17, as an ERP software, boasts its significant advantage in exceptional data security performance. It effectively ensures wo…

##06 神经网络训练基础:一步步构建和完善你的第一个模型

文章目录 前言开始之前&#xff1a;理解神经网络的构成第一步&#xff1a;初始化你的网络和数据第二步&#xff1a;选择损失函数和优化器第三步&#xff1a;训练循环第四步&#xff1a;评估模型和调整第五步&#xff1a;迭代改进示例项目&#xff1a;手写数字识别结语 前言 在…

C#简单创建DLL文件并调用

DLL是Dynamic Link Library的缩写&#xff0c;意为动态链接库。动态链接库其实是由编译器将一系列相关的类型编译、链接并封装成一个独立的文件&#xff0c;与对其进行调用的程序分开。这样一个独立的文件相当于程序的一个模块&#xff0c;如果需要对程序进行更新&#xff0c;只…

大模型日报|今日必读的 3 篇大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 1.清华团队提出“智能体医院”&#xff1a;医生智能体可实现自我进化 在这项工作中&#xff0c;来自清华大学的研究团队提出了一种名为“智能体医院”&#xff08;Agent Hospital&#xff09;的模拟医院&#xff0c;…

火山引擎数据飞轮携手美宜佳 探索拓店营销新思路

在刚刚过去的 3 月&#xff0c;美宜佳又交出了门店增长的高分答卷。 最新数据显示&#xff0c;美宜佳在全国的连锁店数已经超过 35000 家&#xff0c;每年净增 3000-4000 家店&#xff0c;月均服务顾客超 2 亿人次&#xff1b;同时&#xff0c;在中国连锁经营协会(CCFA)近日发布…

本机MySQL数据库服务启动了,但是cmd登录不上10061

注意&#xff1a;不建议安装MySQL8&#xff0c;建议直接使用phpstudy中自带的MySQL5.7 错误信息 ERROR 2003 (HY000): Cant connect to MySQL server on x.x.x.x (10061) 原因 可能是端口号错误。比如修改了my.ini中&#xff0c;或者phpstudy中数据库端口的配置&#xff0c;…

PLX82-EIP-61850 主要特点是什么?

PLX82-EIP-61850是一种基于以太网的电力线通信&#xff08;PLC&#xff09;设备&#xff0c;用于在现有的电力线网络上实现数据通信。这种设备通常用于智能电网、智能家居和工业自动化等领域&#xff0c;以实现远程监控和控制功能。 PLX82-EIP-61850的主要特点包括&#xff1a…

小心电子合同这个坑:PS章

近期&#xff0c;我发现网上有很多教程教大家如何自己动手用PS制作电子章&#xff0c; 看似方便&#xff0c;实则危机四伏&#xff01; 通过PS技术&#xff0c;你可以生成任何一家公司的印章&#xff0c; 用以冒充电子章&#xff0c;或打印出来冒充实体章。 甚至还能进行做旧…

阿里云国际服(alibabacloud)介绍、注册、购买教程?

一、什么是阿里云国际版&#xff1f; 阿里云分为国内版和国际版。国内版仅面向中国大陆客户&#xff0c;国际版面向全球客户。 二、国际版与国内版有何异同&#xff1f; 1&#xff09;异&#xff1a;除了目标客户不同&#xff0c;运营主体不同&#xff0c;所需遵守的法律与政…

【如此简单!数据库入门系列】之效率基石 -- 磁盘空间管理

文章目录 1 前言2 磁盘空间管理3 磁盘空间管理的实现4 存储对象关系5 总结6 系列文章 1 前言 如何将表中的记录存储在物理磁盘上呢&#xff1f; 概念模式中&#xff0c;记录&#xff08;Record&#xff09;表示表中的一行数据&#xff0c;由多个列&#xff08;字段或者属性&…