草庐IT

c++ - 在将 ASCII 字符串传递给 Windows API 函数之前将它们转换为 UTF-16

在我当前的项目中,我一直在使用宽字符(utf16)。但是由于用户的唯一输入将是一个url,无论如何它都必须以ascii和另一个字符串结束,所以我正在考虑将整个程序切换为ascii。我的问题是,在将字符串传递给WindowsAPI函数之前将它们转换为utf16有什么好处吗?在网上做了一些研究后,如果您不在Windows上使用UTF-16,似乎很多人都推荐这个。 最佳答案 在WindowsAPI中,如果你调用像这样的函数intSomeFunctionA(constchar*);然后它会自动将字符串转换为UTF-16并调用函数的真实、Un

c++ - Windows 游戏 : UTF-8, UTF-16、DirectX 和 Lua

我正在为学习目的开发一个Windows游戏(我正在学习DirectX)。我希望它有UTF支持。Readingthisquestion我了解到windows使用的是wchar_t,也就是UTF-16。我希望我的游戏支持Lua脚本,并且Luadoesn'treallylikeUnicodemuch..它只是将字符串视为“字节流”;这对于UTF-8来说已经足够好了,但是UTF-16几乎不可能使用。长话短说:windows需要UTF-16,lua需要UTF-8。所以我想,让我们只使用带有普通char*和string的UTF-8!.length()会被搞砸,但谁在乎呢?但是它不起作用:const

c++ - GetFileAttributesA 为现有目录返回 "17"。 "16"表示它是一个目录,文档中没有提到 "17"

Windows764位,用mingw编译。我正在尝试使用Windowsheader中的GetFileAttributesA来测试给定路径是否是目录。作为目录的常量是16。但出于某种原因,它返回17。我的代码如下所示:#include#includevoiddir_exists(std::stringdir_path){DWORDf_attrib=GetFileAttributesA(dir_path.c_str());std::cout当我运行它时,输出是:Current:17Wanted:16电流应该返回16,在这里。正如我在主题中所说,我什至在文档中找不到任何提及17的含义。

c++ - 将 UTF-16 转换为 UTF-8

我目前使用的是VC++2008MFC。由于PostgreSQL不支持UTF-16(Windows为Unicode使用的编码),我需要在存储之前将字符串从UTF-16转换为UTF-8。这是我的代码片段。//demo.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include"demo.h"#include"Utils.h"#include#ifdef_DEBUG#definenewDEBUG_NEW#endif//TheoneandonlyapplicationobjectCWinAppthe

c++ - C++ 入门问题;无法实例化抽象类(VS 中的 C2259)

我正在尝试创建IAudioEventsCOM接口(interface)的具体实例(在Vista和更高版本中可用)。这是我第一次涉足COM编程,所以我可能只是在做一些愚蠢的事情。无论如何,以下代码无法通过“C2259:‘AudioEndpointVolumeNotifierImpl’:无法实例化抽象类”进行编译。类定义(AudioEndpointVolumeNotifierImpl.h):classAudioEndpointVolumeNotifierImpl:publicIAudioSessionEvents{private:LONG_cRef;public:AudioEndpoint

windows - Wix 项目模板在安装后没有出现在 VS2012 中

我已经安装了WiX3.7以在VS2012中创建安装程序。但是WiX项目模板不会出现在VS2012专业版中。我尝试了网络上可用的一些分辨率,但没有结果。我该如何解决这个问题? 最佳答案 我不确定您在Wix项目模板中指的是什么,但是有EXE文件和MSI文件的模板。和别的。这是我的VS2012+wix3.7照片。顺便说一句,它很好用。 关于windows-Wix项目模板在安装后没有出现在VS2012中,我们在StackOverflow上找到一个类似的问题: http

windows - 缺少注册表 HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7

在将我的机器单独放置几周后,我回来做一些使用Qt-using-VC10的工作。麻烦的第一个迹象是QtCreator关于“cl”未被识别的错误,这让我发现C:\Windows\System32不知何故已从PATH中删除。无法识别“reg”命令导致vcvarsall.bat无法设置VS100COMNTOOLS,如所述here.上述线程将我引导至this,建议简单地将C:\Windows\System32添加回PATH。然而,我的麻烦还没有结束。一旦C:\ProgramFiles(x86)\MicrosoftVisualStudio10.0\VC\vcvars32.bat(由vcvarsal

windows - 图标分辨率 : Pixels vs DPI

当我尝试研究为Windows制作图标,以及在保存之前我应该​​在我的.ico文件中保留什么大小/分辨率的图像时,有太多奇怪的信息。有人说在96DPI中放置16x16、24x24、32x32、48x48...等等。这就是让我恼火的地方,我觉得这没有任何意义。不是1像素=1像素吗?为什么他们坚持要将DPI混入其中? 最佳答案 永远正确的是1像素=1像素。真正改变的是像素在具有不同屏幕密度的各种显示器上的大小。这就是DPI所描述的-每英寸的点数(像素)。但是在图像大小的上下文中使用DPI只有当您将它与英寸(厘米)结合使用时才有意义。例如“

windows - 为 VS 命令行编译器设置正确的路径

我最近安装了vs15-预览版(VisualStudio2015的精简版)。我可以从IDE内部编译C/C++源代码,但无法使用命令行界面cl.exe进行编译。它找不到cstdlibheader。我尝试使用vcvars32.bat设置正确的reg值,但似乎找不到“CommonToolsFolder”。“错误:无法确定VSCommonTools文件夹的位置。”脚本使用环境。变量“%VS150COMNTOOLS%”。如果我尝试从cmd行运行“cd%VS150COMNTOOLS%”,它找不到路径,所以这似乎是主要问题。如何手动设置%VS150COMNTOOLS%到正确的路径?如何手动设置cmd链

windows - 为什么我的窗口布局在 VS2010 中从一天到另一天发生了变化?

我一直在默认设置下使用VisualStudio2010SP1forC++,解决方案资源管理器和所有其他选项卡都在左侧。我已经习惯了。今天,我启动VisualStudio,解决方案资源管理器、团队资源管理器、类View移到屏幕右侧,而服务器资源管理器和工具箱出现在屏幕左侧,在垂直自动隐藏选项卡中。此外,现在隐藏了输出窗口,以及屏幕底部的其他窗口。我在窗口菜单中尝试了“重置窗口布局”,但没有任何变化。这似乎是现在的默认布局。我怎样才能恢复原来的默认布局?当我为等待用户输入的应用程序单击“开始调试”时,在调试时,会出现良好的旧版布局。但是当我完成调试时,疯狂的新UI又出现了。是什么让这个新界