当前位置: 首页 > news >正文

win32之全屏窗口

游戏开发中经常使用会让游戏以全屏窗口的状态运行,下面一个例子就是来实现这个效果的。

#include <windows.h>

void RegisterMyClass();
LRESULT CALLBACK MainWndProc(HWND hwnd, 
    UINT uMsg, 
    WPARAM wParam, 
    LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow)
{
    // 注册窗口类
    RegisterMyClass();

    // 创建窗口
    HWND hwnd = CreateWindow(
        TEXT("MainWindow"), // 类名
        L"我的应用程序", // 窗口标题文字
        WS_POPUP, // 窗口外观样式
        0, //38, // 窗口相对于父级的x坐标
        0, //20, // 窗口相对于父级的y坐标 GetSystemMetrics (SM_CXSCREEN):获取屏幕宽度
        GetSystemMetrics(SM_CXSCREEN), //480, // 窗口的宽度 GetSystemMetrics(SM_CYSCREEN):获取屏幕高度
        GetSystemMetrics(SM_CYSCREEN), //250, // 窗口的高度
        NULL, // 没有父窗口
        NULL, // 没有菜单
        hInstance, // 当前应用程序的实例句柄
        NULL); // 没有附加数据

    if (hwnd == NULL)
    {
        return 0;
    }

    // 显示窗口
    ShowWindow(hwnd, SW_NORMAL);

    // 更新窗口
    UpdateWindow(hwnd);

    // 消息循环
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return 0;
}

void RegisterMyClass()
{
    WNDCLASS wc;

    wc.lpszClassName = TEXT("MainWindow");
    wc.lpfnWndProc = MainWndProc;
    wc.style = CS_OWNDC | CS_VREDRAW | CS_HREDRAW;
    wc.hInstance = NULL;
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    /*
    白色画刷 (HBRUSH)(COLOR_WINDOW + 1);
    黑色画刷 
    */
    wc.hbrBackground = (HBRUSH)(GetStockObject(BLACK_BRUSH));
    wc.lpszMenuName = TEXT("FirstWin32");
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;

    RegisterClass(&wc);
}

LRESULT CALLBACK MainWndProc(HWND hwnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_PAINT:
        break;
    case WM_DESTROY:
        PostQuitMessage(uMsg);
        break;
    default:
        return DefWindowProc(hwnd, uMsg, wParam, lParam);
        break;
    }
}

其中最主要的就是红色的地方,第一个是设置窗口样式为弹出窗口,虽然没搞明白为什么使用弹出窗口可以实现全屏,但是总归是实现了,回头仔细看看API。

后面是设置窗口的宽度和高度,分别设置为屏幕的宽度和高度即可。

 

win32编程就是舒服,真正的刺刀见红的快感,刀刀见肉,不像mfc那样,不知道框架自己做了些什么。

相关文章:

  • 【ocp新题库】052最新考题收集整理-第7题
  • 蓝桥杯-基础练习12 十六进制转八进制
  • 8 quick ways to clear up drive space in Windows 10
  • 【原创】Hacker学习发展流程图 V1.0
  • 设计模式(八)_门面模式
  • centos 中文乱码解决办法
  • Confluence 6 WebDAV 禁用严格路径检查
  • 并查集——向量偏移
  • 洛谷P3952 时间复杂度
  • XSS Filter Evasion Cheat Sheet 中文版
  • 【Android Studio安装部署系列】二十七、Android studio修改项目名称和包名
  • awk编程
  • 24. 两两交换链表中的节点
  • 如何使Python完美升级到新版本
  • 子集
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • angular学习第一篇-----环境搭建
  • C++11: atomic 头文件
  • Debian下无root权限使用Python访问Oracle
  • Git 使用集
  • gops —— Go 程序诊断分析工具
  • IDEA 插件开发入门教程
  • Next.js之基础概念(二)
  • node.js
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • Redis在Web项目中的应用与实践
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • windows下mongoDB的环境配置
  • 分布式事物理论与实践
  • 基于HAProxy的高性能缓存服务器nuster
  • 每天一个设计模式之命令模式
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 设计模式(12)迭代器模式(讲解+应用)
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (java)关于Thread的挂起和恢复
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (安卓)跳转应用市场APP详情页的方式
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (四)JPA - JQPL 实现增删改查
  • (图)IntelliTrace Tools 跟踪云端程序
  • (学习日记)2024.02.29:UCOSIII第二节
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)关于多人操作数据的处理策略
  • ./configure,make,make install的作用
  • .gitignore文件_Git:.gitignore
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • .Net下的签名与混淆
  • .net知识和学习方法系列(二十一)CLR-枚举
  • .NET中的Exception处理(C#)