War3的分辨率配置是写在注册表中的,注册表项是:

HKEY_CURRENT_USER\Software\Blizzard Entertainment\Warcraft III\Video

中的resheight和reswidth这两个DWORD类型的值中。

例如War3的分辨率为800x600,则这两个值如下图所示:

这个小程序的实现思路是:

  1. 获取系统当前的分辨率
  2. 获取War3原来的分辨率(不是必须的)
  3. 修改注册表中的reswidth和resheight

获取系统当前分辨率

这个直接调用API就可以了,废话少说上代码:

typedef struct resolution_def
{int width;int height;
} RESOLUTION, * PRESOLUTION;void GetSysResolution(PRESOLUTION res)
{res->width = GetSystemMetrics(SM_CXSCREEN);res->height = GetSystemMetrics(SM_CYSCREEN);
}

获取War3原来的分辨率

// 读取注册表指定项的值(此项的类型是DWORD)
static DWORD RegGetValueDword(HKEY hkey, LPCTSTR lpSubKey, LPCTSTR lpValue, DWORD dwDefValue)
{DWORD dwValue;DWORD dwSize;LONG lRet;dwSize = sizeof(dwValue);lRet = RegGetValue(hkey, lpSubKey, lpValue, RRF_RT_DWORD, NULL, &dwValue, &dwSize);if (lRet != ERROR_SUCCESS) {return dwDefValue;}return dwValue;
}

此函数共有四个参数,前三个参数与RegGetValue的前三个参数相同,

RegGetValue的详细说明,请参考http://msdn.microsoft.com/en-us/library/windows/desktop/ms724868(v=vs.85).aspx

最后一个参数dwDefValue是一个默认值,当读取注册表发生错误时,返回这个默认值。

#define WAR_VIDEO "Software\\Blizzard Entertainment\\Warcraft III\\Video"void GetWarResolution(PRESOLUTION res)
{res->width = RegGetValueDword(HKEY_CURRENT_USER, TEXT(WAR_VIDEO), TEXT("reswidth"), 0);res->height = RegGetValueDword(HKEY_CURRENT_USER, TEXT(WAR_VIDEO), TEXT("resheight"), 0);
}

上面的代码就是具体的调用。

修改注册表

static bool RegSetValueDword(HKEY hkey, LPCTSTR lpSubKey, LPCTSTR lpValue, DWORD dwValue)
{HKEY hSubKey;LONG lRet;lRet = RegOpenKeyEx(hkey, lpSubKey, 0, KEY_SET_VALUE, &hSubKey);if (lRet != ERROR_SUCCESS) {return FALSE;}lRet = RegSetValueEx(hSubKey, lpValue, 0, REG_DWORD, (PBYTE)&dwValue, sizeof(dwValue));if (lRet != ERROR_SUCCESS) {RegCloseKey(hSubKey);return FALSE;}RegCloseKey(hSubKey);return TRUE;
}

这个函数是对API的一个简单封装,完成的功能就是打开键,修改项的值,关闭键。

RegOpenKeyEx的详细说明,请参考http://msdn.microsoft.com/en-us/library/windows/desktop/ms724897(v=vs.85).aspx

RegSetValueEx的详细说明,请参考http://msdn.microsoft.com/en-us/library/windows/desktop/ms724923(v=vs.85).aspx

调用的代码如下:

bool SetWarResolution(const PRESOLUTION res)
{bool bOk;bOk = RegSetValueDword(HKEY_CURRENT_USER, TEXT(WAR_VIDEO), TEXT("reswidth"), res->width);if(!bOk) return FALSE;bOk = RegSetValueDword(HKEY_CURRENT_USER, TEXT(WAR_VIDEO), TEXT("resheight"), res->height);return bOk;
}

主要的代码就这些了,应该没有什么难以理解的地方。

转载于:https://www.cnblogs.com/wang286217157/archive/2013/01/28/2880262.html

修改War3分辨率的小程序相关推荐

  1. 修改已经上线的小程序名称

    需求:修改已经上线的小程序的名称 ps: 修改名称的费用为300RMB,参考链接 https://developers.weixin.qq.com/ 解决办法: 1.登录[微信公众平台] https: ...

  2. 微信小程序:装B神器P图修改微信流量主小程序源码下载趣味恶搞图制作免服务器域名

    今天给大家带来的这一款小程序是装逼生成,趣味制图工具 该小程序免服务器和域名,低成本运营 内容丰富,搭建简单,而且更逼真哟 内涵N种模板制作,另外还可以设置推荐小程序更好的互引 简单说几个模板吧 红包 ...

  3. 改变屏幕分辨率的小程序

    文章目录 前言 一.调用原理 二.使用步骤 1.导入代码 2.小程序效果 总结 前言 现在的分辨率普遍较大,而老的程序很多需要较小的分辨率.因为大部分的老程序都还在指定的工作岗位上,所以做了一个分辨率 ...

  4. wxml修改样式_微信小程序 动态绑定事件并实现事件修改样式

    微信小程序 动态绑定事件并实现事件修改样式 实例代码 wxml {{item.name}} js var reportTypeList = [ { name: "日报1", id: ...

  5. 微信会员卡html修改样式模板,微信小程序 JS动态修改样式的实现代码

    微信小程序这个坑啊,js动态修改样式,我们并不能用js或者jq 轻轻松松一行代码搞定.或者用removeClass addClass 来修改样式. 以下是一种动态修改样式的方法,原理是绑定数据,然后动 ...

  6. 修改源码实现小程序UI库iview weapp的modal组件自定义宽高

    记一下小程序端UI库iview weapp的modal模态窗自定义样式修改 因为项目需要在模态窗中显示内容,小程序端的iview没有类似popup这种的弹出框,所以就选择了modal对话框来承载弹出内 ...

  7. ios11修改微信步数_小程序同步微信步数

    文章正文 小程序获取微信运动步数,咱们看文档:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/werun/wx.getWeR ...

  8. wxml修改样式_微信小程序wxml和wxss样式

    对于css不熟悉的Android程序员来说,开发微信小程序面临的一个比较困难的问题就是界面的排版了.微信小程序的排版就跟wxml和wxss有关了,它们两者相当于android的布局文件,其中wxml指 ...

  9. 修改uniapp后微信小程序提示appid更新失败

    背景:使用vscode创建uniapp项目,在微信开发者工具运行提示APPID更新失败 解决:在生成的uniapp目录下有一个名为mainfest.json的文件,内部集成各类项目运行模式的配置,用于 ...

最新文章

  1. GSM协议编号及其内容
  2. 利用XtraBackup做mysql不停机重做主从复制
  3. 数据库面试题【十六、优化长难的查询语句】
  4. 【CKFinder】解决上传中文名文件乱码和文件重命名的问题
  5. python 死循环程序能占满cpu吗_运行tensorflow python程序,限制对GPU和CPU的占用操作...
  6. matlab回归分析sst_R语言 | 回归分析(一)
  7. Struts1.2+Spring2.5+Hibernate3.2框架搭建(十三)
  8. 人生不值得,我在用python.1_关于python
  9. 没有必要学完oldboy课程再找工作,现在就可以试试
  10. linux 脚本 if then,shell学习之if-then语法
  11. java graphics dispose_Graphics.Dispose 方法 (System.Drawing) | Microsoft Docs
  12. Android百分比布局支持和垂直TextView
  13. 选择排序是外面循环的array[i]与内循环的array[j]比较。冒泡排序是内循环的相邻两个值做比较修改...
  14. Js-Alert弹出框几种样式(一级)
  15. 微软雅黑字体的设计理念
  16. ddos防火墙的作用和部署
  17. 利用计算机来对指纹,指纹识别系统(文献综述).doc
  18. 我今天给来学习的学员试讲的课程笔记-2019-04-20
  19. 关于chm电子书无法显示网页的解决方
  20. 改版后的CSDN如何更换皮肤

热门文章

  1. SketchUp扩展程序规范
  2. 三种web性能压力测试工具
  3. Unity Shader - 后处理:油画效果
  4. 像专家一样思考,像专家一样实践
  5. 24 前 K 个高频元素
  6. Blender 建模 - 制作一个茶几
  7. Microsoft Project 2010基础使用方法
  8. 粉了一位P8大佬!!
  9. 杂题记录及简要题解(一)
  10. 一个通过nbtscan收集局域网MAC地址及IP地址的脚本