草庐IT

c++ - 使用 _beginthread 和 CreateThread 的多线程

我尝试用C++编写多线程WIN32应用程序,但由于我遇到了困难。其中一个窗口过程创建了一个线程,它管理这个窗口的输出。如果此窗口过程收到一条消息(来自其他窗口过程),它应该将其传输到它们的线程。一开始我使用_beginthread(...)函数,但是什么不起作用。然后我用CreateThread(...)函数尝试了它,它有效吗?我做错了什么?(我的英语不太好,希望你能理解我的问题)使用CreateThread(...)编写代码:DWORDthHalloHandle;//globalHWNDhwndHallo;//HwndofWndProc4...LRESULTAPIENTRYWndPr

c++ - Win32。在 dll 中启用视觉样式

我没有C++和WinAPI方面的经验,如果这个问题是新问题,我很抱歉。我有DLL,我可以在其中创建一些组件,例如MessageBox。我添加了pragma注释以启用视觉样式,但它不起作用(我从这个答案中知道它不应该:windows7styleforcomboboxoninternetexplorertoolbar,how?Dll代码(省略export等):#include"stdafx.h"#include"my-dll.h"#include#pragmacomment(linker,"\"/manifestdependency:type='win32'name='Microsoft.

c++ - 错误 C2731 : 'wWinMain' : function cannot be overloaded

我将一个旧项目从VC6升级到VS2008,现在我得到这个编译错误:errorC2731:'wWinMain':functioncannotbeoverloaded在这些代码行:intAPIENTRY_tWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow)同一项目在VC6下编译良好。 最佳答案 谢谢大家,我终于找到了真正的罪魁祸首,这是一个错字,我使用LPSTRlpCmdLine而不是LPTSTRlpCmdLine。真正的谜团是为什么

c++ - 处理 Winnt.h 的奇怪编译错误

尝试通过windows.h编译包含winnt.h的文件时,出现以下错误:MyGl.cpp..\microsoftsdks\windows\v6.0a\include\winnt.h(964):errorC2988:unrecognizabletemplatedeclaration/definition..\microsoftsdks\windows\v6.0a\include\winnt.h(964):errorC2059:syntaxerror:'&'TheypointtothefollowinglinesinWinnt.hextern"C++"//templatescannotbe

c++ - 在 C++ Win32 中获取计算机上的用户配置文件列表

枚举计算机上所有用户配置文件的最佳方法是什么?我知道如何获取当前登录的用户配置文件,我知道如何获取“所有用户”配置文件。但我想获得计算机上每个配置文件的列表。 最佳答案 在像flokra建议的那样走无证路线之前,我会尝试NetUserEnum()或NetQueryDisplayInformation()如果你想进入无证之地,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\ProfileList有一个(不完整的)帐户列表(它缺少特殊帐户,如ASPNET、He

c++ - 以编程方式通过扬声器 C++ 发出和播放声音

我正在用原生vc++(不是.Net)制作游戏我正在寻找一种通过真实扬声器(不是内部扬声器)播放噪音(可能是8位或其他)的方法。我知道PlaySound,但我不想让我的EXE变大。我想对声音进行编程。是否有一种api方式(有点像Beep())但它通过真实的扬声器播放?谢谢 最佳答案 您提到您了解PlaySound。其中一个标志(SND_MEMORY)将允许您播放已经加载到内存中的WAVE,即您自己创建的缓冲区。只要缓冲区具有适当的WAVEheader,无论您放在那里什么都应该通过扬声器播放。header是一个44字节的block,非常

c++ - 有没有C++/win32库函数把文件路径转换成文件://URL?

我有一个文件路径的LPTSTR,即C:\ProgramFiles\Ahoy。我想将它转换为一个file://URL,我可以将其传递给ShellExecute以启动指向该文件的系统默认浏览器。我不想直接提供ShellExecute的路径,因为文件关联可能会导致它被web浏览器以外的其他东西打开。路径是任意的,可能包含需要转义的字符。是否有一个现有的库函数,按照Python的urllib.pathname2url的思路,进行这种翻译?这可以通过.NET中的Uri类完成,但我还没有找到任何适用于普通win32的内容。 最佳答案 有UrlC

c++ - 创建 MFC 控件的子类的正确方法是什么?

我们使用资源编辑器布局对话框。假设我有一个名为IDC_RICH的RichEditCtrl。我想将它链接到自定义类CMyRichEditCtrl:CRichEditCtrl的一个实例,而不失去在资源编辑器中设置属性的能力。什么是正确的方法?您当然可以通过创建一个DDX链接变量并将类型更改为CMyRichEditCtrl来获得一些功能。但在某些情况下,我看到人们调用这样的代码:m_Rich.SubclassDlgItem(IDC_RICH,this));有什么区别?编辑:我遇到的一个问题是,当我覆盖Create(Ex)方法时,它们不会被调用。这有点像当我的对象链接到资源标识符时控件已经创建

c++ - 管理 Windows XP 和 Vista/Server 2008 之间的 Windows API 差异

我正在尝试创建一个简单的Win32应用程序的可执行文件,该应用程序必须能够在WindowsXP和WindowsVista/2008上运行。由于Vista工作方式的一些变化,必须调用一些额外的Win32API才能使程序像在XP上一样正常运行。目前我检测应用程序是否在比XP更新的Windows版本上运行,并根据需要调用额外的win32函数。这在Vista和Server2008上运行时工作正常,但在WindowsXP上运行时失败。在WindowsXP上,程序启动时出现错误消息:无法在动态链接库USER32.DLL中找到过程入口点ShutdownBlockReasonCreate。这发生在我的

c++ - GetShortPathName 函数有哪些替代方法?

我正在寻找一个函数,它可以为给定的“长”路径返回“短”(8.3表示法)路径。然而,GetShortPathName函数(看起来非常适合)对我不起作用,因为它要求具有给定长路径的文件已经存在。对于给定的长路径,我还有哪些其他选项可以计算8.3路径? 最佳答案 如果文件不存在,则它没有8.3名称。8.3名称是在创建文件时创建的。如果需要,您当然可以在目录本身上使用GetShortPathName获取其所在目录的8.3路径名。不管怎样,现在是2010年了。任何东西都使用8.3名称真的很倒退。