我想在创建的窗口上附加一个类的指针,用如下代码:WNDCLASS wndclass;
const char  *ProviderClass = "TestWindow";
HWND Window;

wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = (WNDPROC)WindowProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 4;
wndclass.hInstance = NULL;
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = ProviderClass;

if (RegisterClass(&wndclass) == 0)  return NULL;

// Create a window.
if ((Window = CreateWindow(
ProviderClass,
"",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
NULL,
NULL)) != NULL)
{
         Wnd *w = new Wnd;
if ( long s = SetWindowLong(Window, 0, (long)w ) )
return Window; long code = GetLastError();

DestroyWindow(Window);
Window = 0;

return NULL;
}但是SetWindowLong执行错误,错误码是42(66"网络资源类型错误。")。不知道为什么?

解决方案 »

  1.   

    SetWindowLong(Window, 0, (long)w )
    你怎么可以用(long)w作为第三个参数?第三个参数应该是窗口的属性啊。Wnd是什么东西?
      

  2.   

    http://www.ddvip.net/program/masm/20.htm
      

  3.   

    用SetWindowLong函数来为窗口结构中为指定的窗口设置属性SetWindowLong函数 参数: 意义 
    hwnd Long,欲为其取得信息的窗口的句柄
     
    nIndex Long,请参考GetWindowLong函数的nIndex参数的说明
     
    dwNewLong Long,由nIndex指定的窗口信息的新值 
    返回值 Long,指定数据的前一个值 
      

  4.   

    第三个参数也可以不是窗口属性,关键是要看第二个参数。
    SetWindowLong(Window, GWL_USERDATA, (long)w ) ;
                          ^^^^^^^^^ 这个常数是0 ?