《window程序设计》果然是经典,相对于MFC来说SDK简直是返璞归真啊。继续摘录一些API函数和技巧:
CheckRadioButton(hwnd,IDC_SERVER1,IDC_SERVER10, wServer);
1、
Selects (adds a check mark to) a given radio button in a group and clears
(removes a check mark from) all other radio buttons in the group.
在IDC_SERVER1-IDC_SERVER10中选中wServer的ID,有点像分组。
DialogBoxParam (hInst, TEXT ("Servers"), hwnd, ServerDlg, (LPARAM) szIPAddr);
2、可以在WM_INITDIALOG的LPARAM传参数,建立模态对话框。ServerDlg为消息处理函数,szIPAddr为参数,在WM_INITDIALOG消息响应中处理LPARAM的值。
typedef char * va_list;
#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )
#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
#define va_end(ap) ( ap = (va_list)0 )
3、va_list可变参数的结构,有点复杂慢慢看。
一般的用法是这样(个人理解)
va_list args; //声明变量
va_start(args, fmt); //开始解析。args指向fmt后面的参数
TYPE var = va_arg(args, TYPE); //取下一个参数并返回。args指向下一个参数
va_end(args); //结束解析
http://hi.baidu.com/kang_liang/blog/item/168c9059a9a1ca2d2934f05f.html 4、wsprintf和wvsprintf的区别,从它们的参数可以看出。
wsprintf纯粹是格式化字符串,wvsprintf是以参数列表Va_list格式化字符串。