VC笔记——窗口类结构的参数cbClsExtra,cbWndExtra

来源:互联网 发布:身份证读卡器端口失败 编辑:程序博客网 时间:2024/06/06 02:43

WNDCLASS 的 cbClsExtra 和 cbWndExtra 可以存放窗口额外信息

 

int nClsExtra = 100;    //数据大小
cosnt TCHAR pcszClassName[] = _T("ClassName");
WNDCLASSEX* pClsExtra = (WNDCLASSEX*)new char[sizeof(WNDCLASSEX) + nClsExtra];
memset(pClsExtra, 0, sizeof(WNDCLASSEX) + nClsExtra);
char* pClsData = (char*)pClsExtra + sizeof(WNDCLASSEX); // 这里,pClsData就可以保存额外的100字节数据,
//比如:
memcpy(pClsData, pBuf, 100);
pClsExtra->cbSize = sizeof(WNDCLASSEX);
pClsExtra->cbClsExtra = nClsExtra;
pClsExtra->lpszClassName = pcszClassName; ... // 如常设置WNDCLASSEX各个成员。
RegisterClassEx(pClsExtra); // // 要取出数据,如下:
int nClsExtraSize = (int)GetClassLong(hWnd, GCL_CBCLSEXTRA);
// 或者就用GetClassInfoEx先读取一个WNDCLASSEX结构,取得其中的cbClsExtra大小。
char* pClsBuf = new char[sizeof(WNDCLASSEX) + nClsExtraSize];
if(GetClassInfoEx(hInst, pcszClassName, (WNDCLASSEX*)pClsBuf))
{
 WNDCLASSEX* pClsExtra = (WNDCLASSEX*)pClsBuf;
 char* pClsData = pClsExtra + sizeof(WNDCLASSEX); // 使用数据
}
 

原创粉丝点击