Windows窗口游戏编程模板

转载自:<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;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值