为什么这个简单的win32应用程序运行窗口显示不出来,大神帮忙看看代码,错哪了

为什么这个简单的win32应用程序运行窗口显示不出来,大神帮忙看看代码,哪里错了
#include<Windows.h>
#include<stdio.h>
#include<tchar.h>

LRESULT CALLBACK WinSunProc(
    HWND hwnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
);
static TCHAR szWindowClass[] = _T("weixin2003");
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow)
{
WNDCLASS wndcls;
wndcls.cbClsExtra = 0;
wndcls.cbClsExtra = 0;
wndcls.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndcls.hCursor = LoadCursor(NULL, IDC_ARROW);
wndcls.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndcls.hInstance = hInstance;
wndcls.lpfnWndProc = WinSunProc;
wndcls.lpszClassName = szWindowClass;
wndcls.lpszMenuName = NULL;
wndcls.style = CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndcls);

HWND hwnd;
hwnd = CreateWindow(
szWindowClass,
TEXT("first win32 App"),
  WS_OVERLAPPEDWINDOW,
  200,
  100,
  600,
  400,
  NULL,
  NULL,
  hInstance,
  NULL
);
ShowWindow(hwnd,SW_NORMAL);
UpdateWindow(hwnd);

MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}

LRESULT CALLBACK WinSunProc(
    HWND hwnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
)
{
switch(uMsg)
{
case WM_CHAR:
char szChar[20];
sprintf_s(szChar,"char is %d", wParam);
MessageBoxA(hwnd,szChar,"win32 App", MB_OK);
break;
case WM_LBUTTONDOWN:
MessageBoxA(hwnd,"mouse clicked","win32 App",0);
HDC hdc;
hdc = GetDC(hwnd);
TextOutA(hdc,0,50,"计算机编程语言培训", strlen("计算机编程语言培训"));
ReleaseDC(hwnd,hdc);
break;
case WM_PAINT:
HDC hDC;
PAINTSTRUCT ps;
hDC = BeginPaint(hwnd,&ps);
TextOutA(hDC,0,0,"编程培训",strlen("编程培训"));
EndPaint(hwnd,&ps);
break;
case WM_CLOSE:
if(IDYES == MessageBoxA(hwnd,"是否真的关闭","win32 App", MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}
win32

------解决方案--------------------
我想吐槽一下。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
花了半个多小时去给你调试代码,我也实在是发现不出问题在哪儿,最后实在没的办法了,把孙鑫的代码拿过来又去调了半个多小时,还算没发现问题,然后我用Beyond Compare比较你们的代码差异,才发现
wndcls.cbClsExtra = 0;
wndcls.cbClsExtra = 0;

应该改成
 wndcls.cbClsExtra = 0;
 wndcls.cbWndExtra = 0;//就这句少了
。。。。。。。。。。
一百万只草泥马向我飞奔过来
没有把这个字段初始化肯定是错的,仅此而已为什么这个简单的win32应用程序运行窗口显示不出来,大神帮忙看看代码,错哪了