转载自:<span style="font-family:Helvetica Neue, Helvetica, STHeiTi, Microsoft YaHei;"><span style="font-size: 16.9599990844727px; line-height: 27.1359977722168px;"><em><a target=_blank href="http://ju.outofmemory.cn/entry/26985">大笨兔</a></em></span></span>
#include <windows.h>
#define WINDOW_CLASS_NAME "win32api"
#define WINDOW_WIDTH 500
#define WINDOW_HEIGHT 500
//检测按键状态
#define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
#define KEYUP(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)
/* 窗口过程 */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
HWND main_window_handle = NULL; //保存窗口句柄的全局变量
HINSTANCE hinstance_app = NULL; //保存程序实例句柄的全局变量
HDC global_hdc = NULL; //保存窗口 hdc 的全局变量
int WINAPI
WinMain (HINSTANCE hinstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
HWND hwnd; /* 窗口句柄 */
MSG messages; /* 保存窗口消息 */
WNDCLASSEX wincl; /* 窗口类 */
/* 要注册窗口类的信息 */
wincl.hInstance = hinstance;
wincl.lpszClassName = WINDOW_CLASS_NAME;
wincl.lpfnWndProc = WindowProcedure; /* 窗口过程名字 */
wincl.style = CS_DBLCLKS | CS_OWNDC |
CS_HREDRAW | CS_VREDRAW; /* 窗口风格 */
wincl.cbSize = sizeof (WNDCLASSEX);
/* 使用默认的icon和鼠标光标 */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* 没有菜单 */
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
/* 窗口的背景为黑色 */
wincl.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
/* 注册窗口类 */
if (!RegisterClassEx (&wincl))
return 0;
/* 注册完窗口类后创建一个窗口 hwnd保存窗口句柄 */
hwnd = CreateWindowEx (
, /* Extended possibilites for variation */
WINDOW_CLASS_NAME, /* 窗口类名字 */
"windows游戏编程模板 大笨兔博客--C语言学习交流专业博客", /* 窗口标题 */
WS_OVERLAPPEDWINDOW | WS_VISIBLE, /* 程序运行就激活窗口 */
,
, /* 窗口相对于桌面的位置 */
WINDOW_WIDTH,
WINDOW_HEIGHT, /* 窗口高与宽 */
HWND_DESKTOP,
NULL, /* 没有菜单 */
hinstance,
NULL
);
/* 保存窗口句柄与程序实例句柄到全局变量 */
main_window_handle = hwnd;
hinstance_app = hinstance;
/* 游戏初始化的工作 */
/* 消息循环 */
while(TRUE){
if(PeekMessage (&messages, NULL, 0, 0,PM_REMOVE))
{
//检测到退出消息
if(WM_QUIT == messages.message)
break;
TranslateMessage(&messages);
/* Send message to WindowProcedure */
DispatchMessage(&messages);
}
/*
** 游戏主循环
** 你可以执行动画、逻辑等等操作
*/
}
/* 游戏结束的工作 */
/* 程序返回 */
return messages.wParam;
}
/*事件处理函数*/
LRESULT CALLBACK
WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
RECT rt;
char szHello[]="Hello, C-Free!";
switch (message)
{
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
EndPaint(hwnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage (0);
break;
default:
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}