UINT GetCheckedRadioButton(HWND hwnd, UINT nIDFirstButton, int nIDLastButton) { for (UINT nID = nIDFirstButton; nID <= nIDLastButton; nID++) { HWND hwnd1 = GetDlgItem(hwnd, nID); int checkState = Button_GetCheck(hwnd1); if (BST_CHECKED == checkState) return nID; } return 0; }
RadioButton 和GroupBox
在GroupBox中使用了多个单选按钮:RadioButton,感觉一个个判断哪一个被选中过于麻烦,于是,上网找到了以上的解决办法,结合自己的项目,写了上面的获取被选中Button ID的方法
nIDFirstButton代表第一个RadioButton ID
nIDLastButton代表最后一个RadioButton ID
GetDlgItem(HWND hwnd,UINT id) 根据控件ID获取句柄
Button_GetCheck(UINT id) 返回Button的选择状态: BST_CHAECKED 选中状态
GetDlgItemText(hwnd, IDC_EDIT1, TextInput, sizeof(TextInput)); 获取文本框内用户输入的文本 hwnd为文本框所在界面的句柄,TextInput为TCHAR类型的数组,用于保存获取的文本 IDC_EDIT1为文本框ID
MessageBox(hwnd,TEXT,TEXT,ID)
第一个TEXT代表对话框要显示的内容
第二个TEXT为对话框的标题
关于wsprintf:(Copy自其他地方)
在C语言中格式化字符串可以使用printf,但是在WINDOWS编程设计中却行不通了,但是却有变通的方法,那就是用
wsprintf这个函数
它的格式如下:
wsprintf(缓冲区,格式,要格式化的值);
第一个参数是字符缓冲区,后面是格式字符串,wsprintf不是将格式化结果写到标准输出,而是将其写入缓冲区中,该函数返回该字符串的长度。
比如我们想通过MessageBox来输出一个整形变量的值,可以用以下代码实现:
char
szBuffer[100];
ing
number=100;
wsprintf(szBuffer,
“%d”,number);
MessgaeBox(NULL,szBrffer,TEXT(“格式化字符串”),0);
这个函数除了将内容格式化输出到第一个参数所提供的字符串缓冲区以外,其它功能与printf函数相同
wsprintf对应的字符串是宽字符型wchar_t,即一个字符占用2个字节的内存空间.
sprintf对应的字符串是字符类型为char,几一个字符占用1个字节的内存空间.
sprintf是用于对ASCII码的127个字符进行操作,wsprintf是对UNICODE的多语言字符进行操作.
如:
sprintf(buffer,
"ascii");
wsprintf(buffer, L"unicode");