0

RegisterClassEx() ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms633587(v=vs.85).aspx ) 是否简单地忽略 WNDCLASSEX 结构的 HINSTANCE 成员中指定的值?注册一个窗口类?

ATOM one = registerClass((HINSTANCE)1, (WNDPROC)0);
ATOM two = registerClass((HINSTANCE)2, (WNDPROC)0);
return 0;

ATOM registerClass(HINSTANCE hInstance, WNDPROC wndProc){

    WNDCLASSEX wcex;
    wcex.cbSize = sizeof(WNDCLASSEX);
    wcex.style          = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = wndProc;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance; 
    wcex.hIcon          = NULL;
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName   = NULL; //MAKEINTRESOURCE(IDC_FRAMEWORK);
    wcex.lpszClassName  = TEXT("Fag");
    wcex.hIconSm        = NULL;
    return RegisterClassEx(&wcex);
}

在上面的代码中,第二次调用 registerClass() 导致错误,错误代码是类已经注册,即在第一次调用中。

但是在两种情况下为 HINSTANCE 传递的值不同,这表明它们被忽略了。

谁能确认它被忽略了?

4

1 回答 1

0

RegisterClassEx 函数不会简单地忽略 WNDCLASSEX 结构的 hInstance 成员中指定的值。但是,如果在 WNDCLASSEX 结构的 hInstance 成员中传递了无效值,RegisterClassEx 函数会返回意外结果。

于 2013-11-16T06:55:30.917 回答