EasyWin示例win32SDK编程

#include
#include
//函数声明
BOOL InitWindow(HINSTANCE,int nCmdShow);
LRESULT CALLBACK WinProc(HWND hWnd,UINT message,
WPARAM wParam,LPARAM lParam);
//函数WinMain()
//功能:Win32应用程序入口,创建主窗口,处理消息循环
int PASCAL WinMain(HINSTANCE hInstance,//当前实例句柄
HINSTANCE hPrevInstance,//前一个实例句柄
LPSTR lpCmdLine,//命令行字符
int nCmdShow)//窗口显示方式
{
MSG msg;
//创建主窗口
if(!InitWindow(hInstance,nCmdShow))
return FALSE;
//进入消息循环
//从该应用程序的消息队列中检取消息,送到消息处理过程
//当检取到WM_QUIT消息时,退出消息循环
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
//程序结束
return msg.wParam;
}
//函数:InitWindow()
//功能:创建窗口
static BOOL InitWindow(HINSTANCE hInstance,int nCmdShow)
{
HWND hwnd;//窗口句柄
WNDCLASS wc;//窗口类结构
//填充窗口类结构
wc.style = CS_VREDRAW | CS_HREDRAW;
wc.lpfnWndProc = (WNDPROC)WinProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(hInstance,IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//因为GetStockObject返回的是HGDIOBJ,必须做出转换
wc.lpszMenuName = NULL;
wc.lpszClassName = "EasyWin";
//注册窗口类
RegisterClass(&wc);
//创建主窗口
hwnd = CreateWindow(
"EasyWin",//窗口类名称
"一个基本的Win32程序",//窗口标题
WS_OVERLAPPEDWINDOW,//窗口风格,定义为普通型
100,//窗口位置的x坐标
100,//窗口位置的y坐标
400,//窗口的宽度
300,//窗口的高度
NULL,//父窗口句柄
NULL,//菜单句柄
hInstance,//应用程序实例句柄
NULL);//窗口创建数据指针
if(!hwnd) return FALSE;
//显示并更新窗口
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
return TRUE;
}
//函数:WinProc()
//功能:处理窗口消息
LRESULT CALLBACK WinProc(HWND hWnd,UINT message,
WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_KEYDOWN://击键消息
switch(wParam)
{
case VK_ESCAPE:
MessageBox(hWnd,"ESC键按下了!","Keyboard",MB_OK);
break;
}
break;
case WM_RBUTTONDOWN://鼠标消息
{
MessageBox(hWnd,"鼠标右键按下了!","Mouse",MB_OK);
break;
}
case WM_PAINT://窗口重画消息
{
char hello[] = "你好,我是EasyWin!";
HDC hdc;
PAINTSTRUCT ps;
hdc = BeginPaint(hWnd,&ps);//取得设备环境句柄
SetTextColor(hdc,RGB(0,0,255));//设置文字颜色
TextOut(hdc,20,10,hello,strlen(hello));//输出文字
EndPaint(hWnd,&ps);//释放资源
break;
}
case WM_DESTROY://退出消息
PostQuitMessage(0);//调用退出函数
break;
}
//调用缺省消息处理过程
return DefWindowP

roc(hWnd,message,wParam,lParam);
}

相关文档
最新文档