基于Visual C++2010与windows SDK fo windows7开发windows7平台的新特性--HighDPI为视觉障碍的人服务...

本文介绍如何在Windows 7中利用HighDPI特性开发应用程序,包括设置操作系统的DPI、调整UI元素,以及如何实现对视觉障碍者的友好支持。

HighDPI是windows7提出的一种新特性,使应用程序更加容易地为视觉障碍者服务,使程序随着窗口一样自动缩放,

展示完美的效果,下面我们来实践一下,如何开发基于HIGHDPI的应用程序

首先体验下,在英文windows7下如何设置highDPI

在控制面板下设置,设置highDPI新特性

您将运行在96 DPI设置和144 DPI设置应用程序,然后比较每个UI元素。

1.运行程序在144 DPI 设置,设置操作系统Win7的操作系统DPI设置为144DPI,创建一个多文档程序ribbon程序

HighDPIAPP1,可见ribbon界面如下:

2.是否启用HighDPI设置,请打开项目设置,如下图所示,设置Enable DPI Awareness

运行应用程序在144 DPI的状态下设置为视觉障碍的人使用

请确保您的计算机的设置为DPI144(150%) - 请参阅练习详情1。
如果确认要为视觉障碍的人的使用,
在生成菜单上,选择重新生成解决方案。
在调试菜单上,选择开始调试。
看看程序在high DPI下的运行,

对比下DPI Awareness Disabled 在144 DPI 设置与 the 96 DPI设置

UI Element

Appearance at 144 DPI with DPI Awareness disabled

Size of the window frame

Much larger

Size of the buttons

Larger

Size of the text

Larger

Blurriness

Yes

改变设置,运行在144 DPI 设置下看看具体实际效果,

随后的图形展示的UI在highDPI上的变化.

UI element

DPI-aware application on a computer set to 144 DPI

Size of the window frame

Larger

Size of the buttons

Larger

Size of the text

Larger

Blurriness

No

任务栏之间,模式比较,highDPI模式与其他模式的不同!字体与控件都变大了,使视觉障碍的人更加容易使用

本文作者专著《Visual C++2010开发权威指南》即将推出,敬请关注,Visual C++2010最近技术,Windows7开发最新技术!

<think> 我们面对的是Windows环境下使用Visual Studio 2022和CMake时出现的C编译器测试失败问题。错误信息中关键点是链接阶段出现`no such file or directory`,具体是`rc`命令(资源编译器)在生成manifest.res时失败。同时注意到错误信息中有一个关键点:`--mt=CMAKE_MT-NOTFOUND`,这表明CMake没有找到mt.exe(manifest tool),这可能是导致资源编译失败的原因。 ### 问题分析 从错误日志看,编译阶段(cl.exe)成功生成了testCCompiler.c.obj,但链接阶段(link.exe)之前需要处理manifest资源时失败。具体错误是: ``` RC Pass 1: command "rc /fo CMakeFiles\cmTC_19bd4.dir/manifest.res CMakeFiles\cmTC_19bd4.dir/manifest.rc" failed (exit code 0) with the following output: no such file or directory ``` 这里`exit code 0`通常表示命令没有执行(因为文件不存在),而不是命令执行后返回错误。因此,问题可能出在`rc.exe`(资源编译器)的路径没有正确设置,或者`rc.exe`本身缺失。 另外,CMake在调用链接器时传递了`--mt=CMAKE_MT-NOTFOUND`,这表明CMake没有找到`mt.exe`(manifest tool),而`mt.exe`是处理清单文件的重要工具。在Visual Studio环境中,`rc.exe`和`mt.exe`通常位于同一个目录(即VC安装目录的bin子目录下)。 ### 解决步骤 #### 1. 检查环境变量 确保Visual Studio的命令行环境变量正确设置。最可靠的方式是通过Visual Studio提供的开发者命令提示符来运行CMake。因为这样会设置所有必要的环境变量(包括`PATH`,`INCLUDE`,`LIB`等)。 - 在开始菜单中搜索“Developer Command Prompt for VS 2022”,然后打开该命令提示符。 - 在打开的命令提示符中,切换到你的构建目录,然后重新运行CMake。 #### 2. 验证rc.exe和mt.exe是否存在 在开发者命令提示符中,运行: ```cmd where rc.exe where mt.exe ``` 它们应该位于类似`E:\vs2022\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x64`的目录中。如果找不到,说明Visual Studio的安装可能有问题。 #### 3. 修复Visual Studio安装 如果上述工具不存在,需要修复Visual Studio安装: - 打开Visual Studio Installer - 找到已安装的Visual Studio 2022版本,点击“修改” - 确保在“工作负载”选项卡中勾选了“使用C++的桌面开发- 在右侧的“安装详细信息”中,确保“Windows 10 SDK”和“MSVC v143 - VS 2022 C++ x64/x86生成工具”被选中 - 点击“修改”进行修复安装 #### 4. 手动设置CMAKE_MT环境变量(如果必要) 如果`mt.exe`存在但CMake没有自动找到,可以尝试在CMake命令中显式指定: ```cmd cmake -DCMAKE_MT="E:/vs2022/VC/Tools/MSVC/14.44.35207/bin/Hostx64/x64/mt.exe" .. ``` #### 5. 清理构建目录 在重新运行CMake之前,删除构建目录下的`CMakeCache.txt`和`CMakeFiles`目录,以确保重新进行编译器检测。 #### 6. 重新生成 在开发者命令提示符中,重新运行CMake生成命令。 ### 备选方案 如果问题依然存在,可以尝试使用CMake的Ninja生成器,它有时能避免一些MSBuild的问题: ```cmd cmake -G "Ninja" .. ``` 但注意,使用Ninja需要提前安装Ninja构建工具。 ### 详细步骤示例 假设项目在`E:\visualstudio‘sproject\workflow-master\workflow-master`,构建目录是`out/build/x64-Debug`: 1. 打开“Developer Command Prompt for VS 2022” 2. 切换到构建目录: ```cmd cd E:\visualstudio‘sproject\workflow-master\workflow-master\out\build\x64-Debug ``` 3. 清理缓存(可选,但推荐): ```cmd del CMakeCache.txt rmdir /s /q CMakeFiles ``` 4. 重新生成(使用Visual Studio生成器): ```cmd cmake -G "Visual Studio 17 2022" -A x64 .. ``` 或者使用Ninja: ```cmd cmake -G "Ninja" .. ``` ### 参考 [^1]: CMake编译器测试失败通常环境变量或工具链路径有关。 [^2]: Visual Studio的开发者命令提示符确保正确的编译环境。 [^3]: 资源编译器(rc.exe)和清单工具(mt.exe)是Windows平台构建的关键组件。 如果按照以上步骤操作,应该能解决C编译器测试失败的问题。如果问题仍然存在,请检查Visual Studio的安装日志,确保没有安装错误。 §§相关问题§§ 1. 如何在Visual Studio开发者命令提示符中正确设置环境变量? 2. CMake如何指定不同的生成器(如Ninja)? 3. 如何修复Visual Studio安装以包含C++构建工具? </think> 针对CMake报错"C编译器无法编译简单测试程序"且链接阶段出现`no such file or directory`的问题,根本原因是资源编译器(rc.exe)路径缺失或环境配置错误。以下是具体解决方案: ### 分步解决方案 1. **检查Windows SDK安装**(核心问题) - 打开Visual Studio Installer - 点击"修改"当前安装的Visual Studio版本 - 在"工作负载"选项卡确认勾选: - ✔️ 使用C++的桌面开发 - ✔️ Windows 10 SDK(或Windows 11 SDK- 在"单个组件"选项卡搜索并勾选: - ✔️ Windows资源编译器(rc.exe) - ✔️ C++ MFC for latest v143 build tools - 点击"修改"应用更改 2. **设置环境变量**(关键步骤) ```cmd :: 以管理员身份打开CMD setx /M PATH "%PATH%;E:\vs2022\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x64" setx /M WindowsSdkDir "C:\Program Files (x86)\Windows Kits\10" ``` 3. **验证资源编译器路径** ```cmd where rc.exe :: 正确应返回类似: :: C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64\rc.exe ``` 4. **强制指定CMake工具链** 在CMake命令中显式设置工具链路径: ```bash cmake -G "Visual Studio 17 2022" -A x64 ^ -DCMAKE_RC_COMPILER="C:/Program Files (x86)/Windows Kits/10/bin/10.0.22621.0/x64/rc.exe" ^ -DCMAKE_MT="C:/Program Files (x86)/Windows Kits/10/bin/10.0.22621.0/x64/mt.exe" ^ .. ``` 5. **修复清单生成问题** 在CMakeLists.txt开头添加: ```cmake # 禁用manifest生成(临时方案) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO") ``` ### 故障排查流程图 ```mermaid graph TD A[CMake链接错误] --> B{rc.exe是否存在?} B -->|是| C[检查PATH环境变量] B -->|否| D[安装Windows SDK] C --> E[开发者命令提示符测试] E -->|成功| F[清理CMake缓存] E -->|失败| G[手动指定rc路径] F --> H[重新生成项目] G --> H H --> I[问题解决] ``` ### 典型错误修复方案对比 | 错误特征 | 解决方案 | 验证命令 | |---------|----------|---------| | `rc.exe not found` | 安装Windows SDK组件 | `where rc.exe` | | `mt.exe not found` | 设置CMAKE_MT变量 | `set CMAKE_MT="..."` | | 清单文件缺失 | 禁用manifest生成 | `/MANIFEST:NO` | | SDK版本不匹配 | 更新Windows SDK | VS Installer → 修改安装 | > **重要提示**:始终在**开发者命令提示符**中运行CMake(开始菜单搜索"Developer Command Prompt"),这会自动加载必要的环境变量[^1]。 完成上述步骤后,重新生成项目应能解决编译器测试失败问题。如果仍遇到资源编译错误,请检查`CMakeFiles/CMakeError.log`获取具体缺失文件名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值