cbClsExtra GetClassInfo或GetClassInfoEx可以获取WNDCLASS或者WNDCLASSEX结构

用GetClassInfo或GetClassInfoEx可以获取WNDCLASS或者WNDCLASSEX结构的指针,如果你设置了额外的数据,应该在分配WNDCLASSEX的时候紧跟在结构后面。这种用法很少:
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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);
     // 使用数据;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值