此程序中包涵了一般画法和离屏绘制,相信很快就能看懂。程序中所用到的是369 * 300 名为end.bmp的位图
一般画法会闪烁,而离屏绘制不会,这就是离屏绘制的好处。
#include <iostream>
#include <string.h>
#include <windows.h>
#include <stdlib.h>
using namespace std;
#define KEY_DOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
HWND main_window_handle = NULL;
HDC windowDC = NULL; //windows屏幕设备
HDC endDC = NULL; //游戏终结图像内存设备
HBITMAP endBMP = NULL; //游戏终结图像内存句柄
HDC bufferDC = NULL; //缓冲设备环境
HBITMAP bufferBMP = NULL; //缓冲位图句柄
RECT g_ClientRect;
void game_main();
//消息回调函数
LRESULT CALLBACK textprom(HWND hwnd,
UINT msg,
WPARAM wparam,
LPARAM lparam) {
// this is the main message handler of the system
PAINTSTRUCT ps;
HDC hdc;
int result;
switch (msg)
{
case WM_CREATE:
return 0;
case WM_CLOSE:
result = MessageBox(hwnd,"你确定离开游戏么?","离开游戏",MB_YESNO|MB_ICONQUESTION);
if(result == IDYES)
return (DefWindowProc(hwnd,msg,wparam,lparam));
//释放资源
ReleaseDC(main_window_handle, endDC);
ReleaseDC(main_window_handle, bufferDC);
ReleaseDC(main_window_handle, windowDC);
return 0;
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
En