为什么小弟我的WM_PAINT消息中的绘图操作都是无效的

为什么我的WM_PAINT消息中的绘图操作都是无效的
#include<Windows.h>
#include<tchar.h>


//窗口过程函数的声明
LRESULT CALLBACK WindowProc
  (
  HWND hwnd, // handle to window
  UINT uMsg, // message identifier
  WPARAM wParam, // first message parameter
  LPARAM lParam // second message parameter
  );

//WinMain函数
int WINAPI WinMain(
HINSTANCE hInstance, //handle to current instance
HINSTANCE hPrevInstance, //handle to previous instance
LPSTR lpCmdLine, //command line
int nCmdShow //show state
)
{
//窗口类
  WNDCLASS MainWindow;
MainWindow.cbClsExtra=0;
MainWindow.cbWndExtra=0;
MainWindow.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); //背景画刷
MainWindow.hCursor=LoadCursor(NULL,IDC_ARROW); //光标类型
MainWindow.hIcon=LoadIcon(NULL,IDI_APPLICATION); //图标类型
MainWindow.hInstance=hInstance; //实例号
MainWindow.lpfnWndProc=WindowProc; //窗口过程函数指针
MainWindow.lpszClassName=_T("WNDClass"); //窗口类的名称,不是MyWnd,创建窗口需要用到
MainWindow.lpszMenuName=NULL;
MainWindow.style=CS_HREDRAW | CS_VREDRAW;

//注册窗口
RegisterClass(&MainWindow); //向系统注册窗口类型,
//创建窗口
HWND hMainwnd;
hMainwnd=CreateWindow(_T("WNDClass"),_T("CADLab"),WS_OVERLAPPEDWINDOW,0,0,600,400,
NULL, //父窗口句柄
LoadMenu(hInstance,MAKEINTRESOURCE(101)), //使用宏MAKEINTRESOURCE()时要包含头文件WinUser.h
hInstance,NULL);

//在窗口中绘图
// CClientDC dc;
HDC hdc=GetDC(hMainwnd);
HPEN m_pen=CreatePen(PS_DASH,2,RGB(255,0,0)); //将画笔设置成 线型为虚线,线宽为2,线的颜色为红色
SelectObject(hdc,m_pen); //使用设置好的画笔m_pen

//显示和更新窗口
ShowWindow(hMainwnd,SW_SHOWNORMAL);
UpdateWindow(hMainwnd);

//画图部分写在UpdateWindow()后面
// LineTo(hdc,100,100);
// MoveToEx(hdc,200,100,NULL);
// LineTo(hdc,400,200);

//消息循环
MSG msg;
while(GetMessage(&msg,NULL,0,0)) //这里GetMessage的第二个参数为HWND类型,设为NULL表示接收本程序实例所有的消息,
{ //不是针对某一窗口,这就意味着在销毁窗口后仍然能接收消息
TranslateMessage(&msg);
  DispatchMessage(&msg);
}
 
  return 0;
}

LRESULT CALLBACK WindowProc
  (
  HWND hwnd, // handle to window
  UINT uMsg, // message identifier
  WPARAM wParam, // first message parameter
  LPARAM lParam // second message parameter
)
{
switch(uMsg)
{
HDC _hdc;
PAINTSTRUCT* pPaint;
case WM_PAINT:
_hdc=BeginPaint(hwnd,pPaint);
MoveToEx(_hdc,100,200,NULL);
LineTo(_hdc,100,100);
TextOut(_hdc,200,200,_T("HELLO"),2);
EndPaint(hwnd,pPaint);
break;
case WM_CHAR:
MessageBox(hwnd,_T("HELLO"),_T(""),0);
break;
case WM_CLOSE: //当窗口关闭时响应的消息
  if(IDYES==MessageBox(hwnd,_T("是否真的结束?"),_T(""),MB_YESNO))//IDYES是一个常量,MessageBox的返回值如果是IDYES(点OK按钮时返回值是IDYES).
{
DestroyWindow(hwnd); //销毁窗口.,但进程中程序并没有退出.
  } //如果把if放在WM_DESTROY中,会发生关掉窗口,但进程中扔在的现象.
  break;
  case WM_DESTROY:
PostQuitMessage(0); //通知系统线程请求退出.
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);//返回一个缺省的窗口过程,是对我们不感兴趣的消息提供缺省的处理。必须的!!!
}
return 0;
}

------解决方案--------------------
LZ检查一下自己的书写语法是否正确
BeginPaint的参数是否正确