这个《windows程序设计》书中的的代码
看到有网友说是给变量cbWndExtra置0(这个0应该是第三个参数0吧),但是我不明白的是第二个参数0代表什么意思?
查了下SetWindowLong函数:
 GWL_USERDATA(-21):设置与窗口有关的32位值。每一个窗口均有一个由创建该窗口的应用程序使用的32位值。当hWnd参数标识了一个对话框时,也可使用:
DWL_MSGRESULT(0):设置在对话框过程中处理的消息的返回值到底是怎么回事?求各位大侠帮帮忙了!!

解决方案 »

  1.   

    SetWindowLong(hWnd,
      0,   //只有当RegisterClassEx时将wndClass.cbWndExtra(窗口附加字节)设置为4(sizeof(LONG)以上才会有效
      0);  //定义窗口附加字节存储的LONG值, 可用于存储窗口类实例的指针等数据便于在其他场合(如回调函数)使用
      

  2.   

    还是没说第二个参数0是什么意思啊? 查了SetWindowLong函数找不到对应的啊
      

  3.   

    你可以将窗口附加字节看作一个字节数组,
    假设wndClass.cbWndExtra=16; 这时系统分配了一块16字节的空间供窗口使用.
    你可以将它看作是BYTE bData[16];或LONG nData[4];SetWindowLong中的第二个0指的是 bData[0], 一次取4个字节SetWindowLong(hWnd, 0, 0); 相当于设置nData[0]=0;