#include "resource.h"
#include "windows.h"
#define IDC_BUTTON1 106
#define IDC_BUTTON2 105
//声明窗口消息回调函数
LRESULT WINAPI WndProc(HWND,UINT,WPARAM,LPARAM);
//初始化窗口类
int WINAPI WinMain(HINSTANCE hInstance, //应用程序当前实例句柄
HINSTANCE hPrevinst, //应用程序其他实例句柄,常为NULL
LPSTR lpszCmdLine, //指向程序命令行参数的指针
int nCmdShow) //窗口显示方式的整数值标识
{
HWND hwnd;//要创建窗口的句柄
MSG Msg;//消息结构
WNDCLASS ws;//WNDCLASS结构
TCHAR lpszClassName[] = TEXT("HelloWin");//窗口类名
TCHAR lpszTitle[] = TEXT("窗口示例");//窗口标题名
//窗口类的定义
ws.style = CS_HREDRAW|CS_VREDRAW;//当窗口的纵横坐标发生变化时重画整个窗口
ws.lpfnWndProc = WndProc;//窗口处理函数为WndProc
ws.cbClsExtra = 0;//窗口类型无扩展
ws.cbWndExtra = 0;//窗口实例无扩展
ws.hInstance = hInstance; //当前实例句柄
ws.hIcon = LoadIcon(NULL,IDI_APPLICATION);//窗口最小化图标为默认图标
ws.hCursor = LoadCursor(NULL,IDC_ARROW);//窗口采用箭头光标
ws.hbrBackground = (HBRUSH)COLOR_WINDOW;//窗口背景彩色
ws.lpszMenuName =(LPCSTR)IDR_MENU;//菜单名
ws.lpszClassName = lpszClassName;//窗口类名为"窗口"
if(!RegisterClass(&ws))//注册窗口类
{ //如果注册失败,退出程序
MessageBeep(0); 
return 0;
}
//创建窗口
hwnd = CreateWindow(lpszClassName,//窗口类名
lpszTitle, //窗口实例的标题名
WS_OVERLAPPEDWINDOW,//窗口的风格
CW_USEDEFAULT,
CW_USEDEFAULT,//窗口位置为默认
CW_USEDEFAULT,
CW_USEDEFAULT,//窗口的高和宽为默认值
NULL,//无父窗口
NULL,//无主菜单
hInstance, //创建此窗口的应用程序的当前句柄
NULL);//不使用该参数
//创建2个按钮
CreateWindow("BUTTON","TEST",WS_VISIBLE|WS_CHILD,100,100,100,20,hwnd,(HMENU)IDC_BUTTON1,hInstance,NULL);
CreateWindow("BUTTON","TEST",WS_VISIBLE|WS_CHILD,100,120,100,20,hwnd,(HMENU)IDC_BUTTON2,hInstance,NULL);
CreateWindow("EDIT",NULL,WS_VISIBLE|WS_CHILD|WS_OVERLAPPED,200,100,200,200,hwnd,NULL,hInstance,NULL);
//以nCmdShow方式显示窗口hwnd
ShowWindow(hwnd,nCmdShow);
//绘制用户区
UpdateWindow(hwnd);
//消息循环直到收到WM_QUIT停止
while(GetMessage(&Msg,NULL,0,0))
{
TranslateMessage(&Msg); //解释消息到Msg结构中
DispatchMessage(&Msg); //传递消息结构Msg到WndProc
}
return Msg.wParam;
}
//窗口函数说明
LRESULT WINAPI WndProc(HWND hwnd,//接收消息的窗口句柄
 UINT message, //标识消息消息号
 WPARAM wParam, //32位的消息参数,这个值的确切意义取决于消息本身
 LPARAM lParam) //同wParam
{
HDC hdc;//设备描述表(DC)句柄
PAINTSTRUCT ps;//结构PAINTSTRUCT,BeginPaint函数要用到的参数
RECT rect;//钜形区域,它是一个RECT结构
int  wmpara;
switch(message)
{
case WM_PAINT://绘画消息
// hdc = BeginPaint(hwnd,&ps);//响应WM_PAINT,并得到该窗体的显示缓冲区的句柄HDC 
// GetClientRect(hwnd,&rect);//得到客户区范围
// EndPaint(hwnd,&ps); //绘图结束
return 0;
case WM_COMMAND:
wmpara=LOWORD(wParam);
switch(wmpara)
{
case ID_EXIT:
DestroyWindow(hwnd);
return 0;
default:
return 0;
}
case WM_DESTROY://消毁消息
PostQuitMessage(0);//调用PostQuitMessage发出WM_QUIT消息 
return 0;

return DefWindowProc(hwnd,message,wParam,lParam);
}