#include<windows.h>
#include<stdio.h>
LRESULT CALLBACK WinSunProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
);
int WINAPI WinMain(
  HINSTANCE hInstance,      // handle to current instance
  HINSTANCE hPrevInstance,  // handle to previous instance
  LPSTR lpCmdLine,          // command line
  int nCmdShow              // show state
)
{
 //设计一个窗口
 WNDCLASS wndcls;
 wndcls.cbClsExtra=0;
 wndcls.cbWndExtra=0;
 wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);//得到系统标准画刷
 wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);//加载一个图标
 wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
    wndcls.hInstance=hInstance;
 wndcls.lpfnWndProc=WinSunProc;
 wndcls.lpszClassName="sunxin2006";
 wndcls.lpszMenuName=NULL;
 wndcls.style=CS_HREDRAW |CS_VREDRAW;
 RegisterClass(&wndcls);
 //创建窗口
 HWND hwnd;
 hwnd=CreateWindow("sunxin2006","[url]http://www.sunxin.org[/url]",
  WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);
 //显示及更新窗口
 ShowWindow(hwnd,SW_SHOWNORMAL);
 UpdateWindow(hwnd);
 //定义消息结构体,开始消息循环
 MSG msg;
 BOOL bRet;
 while((bRet=GetMessage(&msg,hwnd,0,0))!=0)
 {
  if (bRet==-1)
  {
  return -1;
  }
  else
  {
     TranslateMessage(&msg);
  DispatchMessage(&msg);
  }
 }
 return msg.wParam;
}
LRESULT CALLBACK WinSunProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
)
{
switch(uMsg)
{
case WM_CHAR:
 char szChar[20];
 sprintf(szChar,"char code is %d",wParam);
 MessageBox(hwnd,szChar,"char",0);
 break;
case WM_LBUTTONDOWN:
 MessageBox(hwnd,"mouse clicked","message",0);
 HDC hdc;
 hdc=GetDC(hwnd);
 TextOut(hdc,0,50,"程序员之家",strlen("程序员之家"));
 //releaseDC(hwnd,hdc);
 break;
 
case WM_PAINT:
 HDC hDC;
 PAINTSTRUCT ps;
 hDC=BeginPaint(hwnd,&ps);
 TextOut(hDC,0,0,"[url]http://www.sunxin.org[/url]",strlen("http://www.sunxin.org"));
 EndPaint(hwnd,&ps);
 break;
case WM_CLOSE:
 if(IDYES==MessageBox(hwnd,"是否真的结束","message",MB_YESNO))
 {
    DestroyWindow(hwnd);
 }
 break;
case WM_DESTROY:
 PostQuitMessage(0);
 break;
default:
 return DefWindowProc(hwnd,uMsg,wParam,lParam);

}
return 0;
}