chSETDLGICONS宏 作用到底是什么呢?csdn根本没有提及其实和其他的诸如chINRANGE、chDIMOF以及chSIZEOFSTRING一样都是宏巨集。
这里chSETDLGICONS的是对话框图标设置宏,它的作用是关联当前句柄到一个icon图标。
inline void chSETDLGICONS(HWND hwnd, int idi) {
SendMessage(hwnd, WM_SETICON, TRUE, (LPARAM)
LoadIcon((HINSTANCE) GetWindowLongPtr(hwnd, GWLP_HINSTANCE),
MAKEINTRESOURCE(idi)));
SendMessage(hwnd, WM_SETICON, FALSE, (LPARAM)
LoadIcon((HINSTANCE) GetWindowLongPtr(hwnd, GWLP_HINSTANCE),
MAKEINTRESOURCE(idi)));
}
1.
在msdn中无法查找此类宏的描述信息,以下宏均不在msdn中,在WINDOWSX.H中可找到这些红的原型
#define Edit_Enable(hwndCtl, fEnable) EnableWindow((hwndCtl), (fEnable))
#define Edit_GetText(hwndCtl, lpch, cchMax) GetWindowText((hwndCtl), (lpch), (cchMax))
#define Edit_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl)
#define Edit_SetText(hwndCtl, lpsz) SetWindowText((hwndCtl), (lpsz))
#define Edit_LimitText(hwndCtl, cchMax) ((void)SNDMSG((hwndCtl), EM_LIMITTEXT, (WPARAM)(cchMax), 0L))
#define Edit_GetLineCount(hwndCtl) ((int)(DWORD)SNDMSG((hwndCtl), EM_GETLINECOUNT, 0L, 0L))
#ifndef _MAC
Edit_GetText宏的作用是从第一个参数(一般是对话框)中获取一消息,第二个参数是消息的存储空间,第三个参数是存储空间的容量。例如如下例子:
Edit_GetText(GetDlgItem(hwnd, IDC_REQUEST),
g_szSharedRequestAndResultBuffer,
_countof(g_szSharedRequestAndResultBuffer));
_countof()也是个宏在msdn也查不到,它的作用是统计数组元素的个数,包括\0元素,它是个unsigned int 类型,跟 -1 比较时 -1 也自动转换为 unsigned int 类型了。注意:传入宏的参数必须是静态数组名,而不能是指针等。
此类宏均是对windows text的 宏定义,查找相对应的windowtext函数即可msdn可以查找到。
Edit_LimitText
void SetLimitText(UNIT nMax);
参数: nMax 新的文本限制,以字节计算。
说明:
调用此成员函数设置编辑控件中的文本的长度限制。此限制是编辑控件可以接收的以字节形式表示的文本大小。
改变文本限定仅使用户能输入的文本受到限制,而对已在编辑控件中的文本没有影响,也不影响用CWnd中的SetWindowText成员函数能拷贝到编辑控件中的文本的长度。如果用SetWindowText函数输入的文本超过调用LimitText函数所指定的值,则用户可以在编辑控件中删除任何文本,但文本限制会禁止用户将已存在的文本替换为新文本,直到删除当前所选文本而使文本大小降至限制以内。
在Win32中,SetLimitText代替此函数。
要了解更多信息,请参阅Win32文档中的EM_SETLIMITTEXT。
Edit_LimitText(GetDlgItem(hwnd, IDC_ERRORCODE), 5);限制输入5字符