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

2024-05-07 19:52

本文主要是介绍翻译《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”
BEGINLTEXT “A mumbler is needed.”,-1,7,8,100,10AUTORADIOBUTTON “Do not &obtain a mumber now”,100,17,24,180,10AUTORADIOBUTTON “Obtain a mumbler auto&matically”,101,17,34,180,10AUTORADIOBUTTON “&Enter mumbler manually”,102,17,44,180,10DEFPUSHBUTTON “OK”,IDOK,92,58,50,14PUSHBUTTON “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”
BEGINLTEXT “A mumbler is needed.”,-1,7,8,100,10AUTORADIOBUTTON “Do not &obtain a mumber now”,100,17,24,180,10,BS_NOTIFYAUTORADIOBUTTON “Obtain a mumbler auto&matically”,101,17,34,180,10,BS_NOTIFYAUTORADIOBUTTON “&Enter mumbler manually”,102,17,44,180,10,BS_NOTIFYDEFPUSHBUTTON “OK”,IDOK,92,58,50,14PUSHBUTTON “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 团队在这方面做得好多了。

这篇关于翻译《The Old New Thing》 - Double-clicking radio buttons的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/968239

相关文章

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

string字符会调用new分配堆内存吗

gcc的string默认大小是32个字节,字符串小于等于15直接保存在栈上,超过之后才会使用new分配。

excel翻译软件有哪些?如何高效提翻译?

你是否曾在面对满屏的英文Excel表格时感到头疼?项目报告、数据分析、财务报表... 当这些重要的信息被语言壁垒阻挡时,效率和理解度都会大打折扣。别担心,只需3分钟,我将带你轻松解锁excel翻译成中文的秘籍。 无论是职场新人还是老手,这一技巧都将是你的得力助手,让你在信息的海洋中畅游无阻。 方法一:使用同声传译王软件 同声传译王是一款专业的翻译软件,它支持多种语言翻译,可以excel

MonoHuman: Animatable Human Neural Field from Monocular Video 翻译

MonoHuman:来自单目视频的可动画人类神经场 摘要。利用自由视图控制来动画化虚拟化身对于诸如虚拟现实和数字娱乐之类的各种应用来说是至关重要的。已有的研究试图利用神经辐射场(NeRF)的表征能力从单目视频中重建人体。最近的工作提出将变形网络移植到NeRF中,以进一步模拟人类神经场的动力学,从而动画化逼真的人类运动。然而,这种流水线要么依赖于姿态相关的表示,要么由于帧无关的优化而缺乏运动一致性

linux dlopen手册翻译

名称 dlclose, dlopen, dlmopen 打开和关闭一个共享对象 简介 #include <dlfcn.h>void *dlopen(const char*filename, int flags);int dlclose(void *handle);#define _GNU_SOURCE#include <dlfcn.h>void *dlmoopen(Lmid_t lm

从计组中从重温C中浮点数表示及C程序翻译过程

目录 移码​编辑  传统浮点表示格式 浮点数的存储(ieee 754)->修炼内功 例子:   ​编辑 浮点数取的过程   C程序翻译过程 移码  传统浮点表示格式 浮点数的存储(ieee 754)->修炼内功 根据国际标准IEEE(电⽓和电⼦⼯程协会)  32位 例子:    64位    IEEE754对有效数字M和

List list = new ArrayList();和ArrayList list=new ArrayList();的区别?

List是一个接口,而ArrayList 是一个类。 ArrayList 继承并实现了List。 List list = new ArrayList();这句创建了一个ArrayList的对象后把上溯到了List。此时它是一个List对象了,有些ArrayList有但是List没有的属性和方法,它就不能再用了。而ArrayList list=new ArrayList();创建一对象则保留了A