我想在创建的窗口上附加一个类的指针,用如下代码: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"网络资源类型错误。")。不知道为什么?
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"网络资源类型错误。")。不知道为什么?
你怎么可以用(long)w作为第三个参数?第三个参数应该是窗口的属性啊。Wnd是什么东西?
hwnd Long,欲为其取得信息的窗口的句柄
nIndex Long,请参考GetWindowLong函数的nIndex参数的说明
dwNewLong Long,由nIndex指定的窗口信息的新值
返回值 Long,指定数据的前一个值
SetWindowLong(Window, GWL_USERDATA, (long)w ) ;
^^^^^^^^^ 这个常数是0 ?