草庐IT

c - 如何最好地处理 Windows 的 16 位 wchar_t 丑陋?

我正在编写一个与mingw一起使用的包装层,它为应用程序提供了一个虚拟的UTF-8环境。处理文件名的函数是从UTF-8转换并调用相应的“_w”函数等的包装器。我遇到的最大问题是Windows的wchar_t是16位的。对于文件系统操作,这没什么大不了的。我可以在UTF-8和UTF-16之间来回转换,一切正常。但是标准的C多字节/宽字符转换API不允许多wchar_t字符。可能的解决方案:提供CESU-8环境而不是UTF-8。我真的不喜欢这个。走捷径,只支持BMP。将长度为4的UTF-8序列视为无效。扩展包装器以将mingw的wchar_t替换为typedefint32_twchar_t

c++ - 打印机驱动程序开发 - 从 32 位到 64 位

我开发了一个为32位系统编译的驱动程序。该驱动程序基于unidriver。有谁知道要使驱动程序与64位兼容需要什么?如果有的话,我需要对代码做哪些更改?还是只需要用64位版本的DDK编译它?提前致谢。努诺 最佳答案 第一步是使用VisualStudio打开项目并添加x64配置。然后,测试并查看它是否构建(可能不会)。最常见的错误(我遇到过)是这些:DWORD->DWORD_PTR+所有相关的具有长版本的Win32api函数指针截断:将在msvc上发出警告,在gcc上发出错误:在适用的情况下将long/int替换为(u)intptr_

c++ - 如何使用 visual studio express 调试到汇编级别?

我很好奇某些功能是如何在幕后实现的,例如:pEvent->WaitForCompletion(INFINITE,&evCode);我试图进入它但失败了。有办法吗? 最佳答案 您没有说是哪个实际版本的VisualStudio,但我相信所有版本都包含设置反汇编您没有源代码的native代码的能力。但是,默认的调试器选项通常设置为禁用这种显示。检查工具->选项中的调试选项并启用“如果源不可用则显示反汇编”,禁用“仅我的代码”和其他类似选项。一个警告:WaitForCompletion的核心实现很可能是在内核模式代码中(特别是如果pEven

c - shellexec 和 c :\program files - x86 and x64 portability

我正在修改一个开源GUI(用c编写)以将新菜单项添加到托盘应用程序。新的菜单项在程序根目录c:\programfiles目录中执行一个文件(update.exe)。我正在使用shellexec(),它在x86上运行良好,但由于x64上的路径不同-c:\programfiles(x86),它无法加载。我想使用一些像%programfiles%这样的环境变量的效果。对此有什么优雅的解决方案?或者,我确实可以更改update.exe文件的存储位置。将它放在“程序文件”中似乎是最合乎逻辑的。对于上面的问题,它应该放在程序文件之外吗?如果是,在哪里? 最佳答案

c++ - 如何获取PC模型类型?

是否有获取PC型号类型的函数或方法?在我的例子中,这将是“OptiPlex780”。直到现在我从WMI(WIN32_Computersystem)查询它,它在99%的情况下都有效,但有时,它无法检索模型。所以WMI不是我的选择。我正在寻找其他方式。有人有想法吗?谢谢。 最佳答案 根据微软的文档,Model必须始终填写:ModelDatatype:stringAccesstype:Read-onlyProductnamethatamanufacturergivestoacomputer.Thispropertymusthaveaval

在 Windows 上使用 Tiny C Compiler 编译并运行 file.c

我可以逐步了解如何使用TinyC编译器和Windows提示编译我的file.c吗?一些我已经有的问题:将下载的所有TCC文件粘贴到哪里?是否必须编译stdio.h才能使用printf函数?(我想做一个“HelloWorld”)。这是我的file.c的样子://#include//forprintfintmain(void){printf("HelloEric.You'vecompiledandruntheprogram!\n");}谢谢,编辑1到目前为止,我正在运行它并收到错误:未找到包含文件“stdio.h”。 最佳答案 您可以将

c - Windows C 对话框大小调整器

Thispage提供了许多库来处理项目大小调整和重新调整,但它们都是针对C++的。有什么我可以用于普通C的东西吗? 最佳答案 您可以调用MoveWindow()不仅可以移动还可以调整窗口和对话框的大小:http://msdn.microsoft.com/en-us/library/ms633534%28VS.85%29.aspx 关于c-WindowsC对话框大小调整器,我们在StackOverflow上找到一个类似的问题: https://stackover

Windows 和 Linux 上的 C 文件锁定行为

我正在研究以下示例,以了解Windows和Linux上的文件锁定。程序1使用gcc在windows和linux上运行。但是第二个只能在Linux上运行。尤其是winodwsGCC中的问题出现在结构flock声明中。我不知道我是否在这里遗漏了任何东西。此外,即使在第一个示例中关闭并取消链接文件以供下次运行时,该文件也未解锁。程序1:使用GCC在Windows上工作来源:http://www.c.happycodings.com/Gnu-Linux/code9.html#include#include#include#includeintmain(){if((fd=open("locked

将在 Mac 上创建的 .c 文件转换为 Windows

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭11年前。有没有办法将在Mac上创建的.c文件转换为与VS2010兼容?还是我不得不手动重新输入代码?谢谢!

c - 如何通过 COM 接口(interface)以编程方式激活 OLE 控件?

我有一个通过ActiveX嵌入按钮控件的应用程序。该按钮由第三方提供,它实现了整个范围的ActiveX接口(interface)(其中包括IOleInPlaceObject)。我确实引用了IUnknown按钮的实现。我面临的问题是IOleWindow::GetWindow对象提供的函数总是返回错误;错误代码是0x80004005这显然是一个commonHRESULTvalue意思是E_FAIL。描述性不强。值得一提的是,该对象还通过其IDispatch公开了一个hWnd属性。执行;查询成功,但该属性的值始终为零。谷歌搜索表明我可能需要在hWnd属性产生有用值之前“激活”OLE对象。有谁