2011-08-29 113 views
2

下面的代码为什么我从RegisterClassEx获取错误代码87(无效的参数)?

#include <windows.h> 
const wchar_t g_szClassName[] = L"myWindowClass"; 
// Step 4: the Window Procedure 
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) 
{/*...*/ 
    return 0; 
} 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
    LPSTR lpCmdLine, int nCmdShow) 
{ 
    WNDCLASSEX wc; 
    HWND hwnd; 
    MSG Msg; 
    //Step 1: Registering the Window Class 
    wc.cbSize  = sizeof(WNDCLASSEX); 
    wc.lpfnWndProc = WndProc; 
    wc.cbClsExtra = 0; 
    wc.cbWndExtra = 0; 
    wc.hInstance  = hInstance; 
    wc.hIcon   = LoadIcon(NULL, IDI_APPLICATION); 
    wc.hCursor  = LoadCursor(NULL, IDC_ARROW); 
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); 
    wc.lpszMenuName = NULL; 
    wc.lpszClassName = g_szClassName; 
    wc.hIconSm  = LoadIcon(NULL, IDI_APPLICATION); 
    if(!RegisterClassEx(&wc)) 
    { 
     MessageBox(NULL, L"Window Registration Failed!", L"Error!", 
     MB_ICONEXCLAMATION | MB_OK); 
    return 0; 
    } 
    // Step 2: Creating the Window... 
    return Msg.wParam; 
} 

此代码是直接从造假者的Win32教程(含L""和wchar_t的在需要的地方)。但是我无法使它在WinXP SP3 x86和VC2008Express SP1上工作。

+0

是'UNICODE'当您编译定义?另请参见http://en.wikibooks.org/wiki/Windows_Programming/Unicode – user786653

回答

2

您没有设置样式成员,例如(从向导创建的代码获取):

wc.style = CS_HREDRAW | CS_VREDRAW; 
+0

简单,完全修复,我从PDF下载的零散剪切和粘贴错误我下载,谢谢 – John

相关问题