逐梦旅程---GDICoredemo

//---------------------头文件---------------------
#include<windows.h>

//---------------------宏定义---------------------
#define WINDOW_WIDTH 800        //窗口宽度
#define WINDOW_HEIGHT 600        //窗口高度
#define WINDOW_TITLE L"GameDevelopDepartment" //窗口标题 游戏开发部

//---------------------全局函数---------------------
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
BOOL Game_Init(HWND hwnd);//资源初始化
VOID Game_Paint(HWND hwnd);//绘图
BOOL Game_CleanUp(HWND hwnd);//资源清理

//---------------------全局变量---------------------
HDC g_hdc = NULL;    //全局设备环境句柄

//---------------------WinMain()函数---------------------
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
    //1.建立窗口类
    WNDCLASSEX wndClass = { 0 };
    wndClass.cbSize = sizeof(WNDCLASSEX);    //窗口字节数大小
    wndClass.style = CS_HREDRAW | CS_VREDRAW;  //窗口样式 窗口宽度和高度改变时候重绘窗口
    wndClass.lpfnWndProc = WndProc;        //指向窗口过程的指针
    wndClass.cbClsExtra = 0;        //窗口类的额外内存
    wndClass.cbWndExtra = 0;        //窗口的额外内存
    wndClass.hInstance = hInstance; //实例句柄
    wndClass.hIcon = (HICON)::LoadImage(NULL, L"icon.ico", IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_LOADFROMFILE);  //加载本地的ico图标
    wndClass.hCursor = LoadCursor(NULL, IDC_ARROW); //窗口的光标
    wndClass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);    //窗口的灰色画刷句柄
    wndClass.lpszMenuName = NULL;
    wndClass.lpszClassName = L"GameDevelopDepartment";    //窗口类名字

    //2.注册窗口类
    if (!RegisterClassEx(&wndClass)) {
        //注册失败
        return -1;
    }

    //创建窗口
    HWND hwnd = CreateWindow(L"GameDevelopDepartment", WINDOW_TITLE, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, WINDOW_WIDTH, WINDOW_HEIGHT, NULL, NULL, hInstance, NULL);

    //窗口的移动 显示 更新
    MoveWindow(hwnd, 250, 80, WINDOW_WIDTH, WINDOW_HEIGHT, true);
    ShowWindow(hwnd, nShowCmd);
    UpdateWindow(hwnd);

    if (!Game_Init(hwnd)) {
        //资源初始化失败
        MessageBox(hwnd, L"资源初始化失败", L"详细窗口", 0);
        return false;
    }

    //消息循环
    MSG msg = { 0 };
    while (msg.message != WM_QUIT){
        //PeekMessage接收到消息返回非0 未接收到消息返回0
        if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) {
            TranslateMessage(&msg);    //虚拟键转为字符
            DispatchMessage(&msg);    //分发一个消息给窗口程序
        }
    }

    UnregisterClass(L"GameDevelopDepartment", wndClass.hInstance);
    return 0;
}



LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
    PAINTSTRUCT paintStruct;        //PAINTSTRUCT结构体用于记录绘信息

    switch (message) {
    case WM_PAINT:
            g_hdc = BeginPaint(hwnd, &paintStruct);    //指定窗口准备开始绘画工作,并将绘画有关幸喜填充到paintStruct结构体中
            Game_Paint(hwnd);    //绘画
            EndPaint(hwnd,&paintStruct);    //结束绘画
            ValidateRect(hwnd, NULL);    //更新客户区的显示
            break;
    case WM_KEYDOWN:
        if (wParam == VK_ESCAPE) {    //用户按下ESC 退出窗口
            DestroyWindow(hwnd);
        }
        break;
    case WM_DESTROY:    //窗口销毁
        Game_CleanUp(hwnd);    //资源清理
        PostQuitMessage(0);    //向系统传递信息表示又线程终止请求
        break;
    default:    //默认调用默认窗口过程
        return DefWindowProc(hwnd, message, wParam, lParam);
    }
}


//---------------------Game_Init()函数---------------------
//描述:初始化函数 进行简单的初始化
BOOL Game_Init(HWND hwnd)
{
    g_hdc = GetDC(hwnd);
    Game_Paint(hwnd);
    ReleaseDC(hwnd, g_hdc);
    return true;
}

//---------------------Game_CleanUp()函数---------------------
//描述:绘制函数 在这个函数中进行绘制操作
VOID Game_Paint(HWND hwnd)
{
    
}

//---------------------Game_CleanUp()函数---------------------
//描述:资源清理函数 在这个函数中进行退出窗口前的资源清理
BOOL Game_CleanUp(HWND hwnd)
{
    return true;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值