草庐IT

c++ - C++中的子窗口问题

每当我关闭子窗口时,我的程序就会出现问题,主窗口也会退出。我是这个编程的新手。正确的代码:/**@fileMainWindow.cpp@authorAndroBondoc@date2011-02-11*//**@fileMainWindow.cpp@authorAndroBondoc@date2011-02-11*/#include"tray.h"#defineWM_USER_SHELLICONWM_USER+1HWNDhWnd,Button,LoadNew,TextBox;HINSTANCEhInst;HICONhMainIcon;HMENUhPopMenu;NOTIFYICONDA

c++ - 当我使用 win32 SendMessage 发送和转换标准字符串时,我得到了奇怪的字符

我需要将文本附加到win32编辑控件我有执行此操作的功能,但在编辑控件中打印的文本是乱码,为什么?示例代码取自here的Microsoft示例voidsettext(HWNDhDlg,std::strings){//std::wstringws;//ws.assign(s.begin(),s.end());//LPWSTRpwst=&ws[0];////gettemporaryLPCWSTR(prettysafe)//LPCWSTRpcwstr=ws.c_str();//SetDlgItemText(hWndEdit,IDC_EDIT1,pcwstr);HWNDhWndEdit=Get

c++ - 测试文件路径的等效性

程序中有两个字符串。它们每个都包含一些文件或文件夹的路径。如何在C++中检查这些路径是否指向同一个文件/文件夹?我可以使用WindowsAPI来执行此操作吗? 最佳答案 您可能会使用BoostFilesystem.它具有跨平台的额外优势;这显然也是一个潜在的优势。请注意下面加粗的API引用,以备您查看:GetFileInformationByHandle。equivalentboolequivalent(constpath&p1,constpath&p2);boolequivalent(constpath&p1,constpath&

c++ - 永远不会调用 SetTimer 回调

我的C++应用程序有一个无窗口计时器,用于定期清理从未(也永远不会)完全处理的潜在通信数据。问题是永远不会调用回调函数。我的类构造函数在返回之前执行以下代码:if((this->m_hMsgsThread=::CreateThread(NULL,//nosecurityattributes0,//usedefaultinitialstacksizereinterpret_cast(MessagesThreadFn),//functiontoexecuteinnewthreadthis,//threadparameters0,//usedefaultcreationsettingsNUL

c++ win32 使用 DirectInput 模拟按键

如何使用DirectInput模拟按键?我目前有初始化(但我不确定它是否好):#include#pragmacomment(lib,"dinput8.lib")#pragmacomment(lib,"dxguid.lib")LPDIRECTINPUT8din;//thepointertoourDirectInputinterfaceLPDIRECTINPUTDEVICE8dinkeyboard;//thepointertothekeyboarddeviceBYTEkeystate[256];//thestorageforthekey-informationvoidinitDInput(

c++ - 是否为 unicode 或不为 unicode

我正在从注册表中获取一个值。该值中可能包含双字节字符。我稍后必须通过网络传输它到C#客户端进行显示。C#都是unicode。如果您将其称为非unicode,该函数将返回MBCS。我应该使用什么?stringresult=string(cbData);RegQueryValueExA(h_sub_key,"DisplayName",NULL,NULL,(LPBYTE)&result[0],&cbData)或stringresult=string(cbData);RegQueryValueExW(h_sub_key,L"DisplayName",NULL,NULL,(LPBYTE)&res

c++ - 有什么方法可以将 3rd 方 DLL 中的静态变量重置为其原始值吗?

我们必须在开发过程中使用第3方DLL,遗憾的是我们无法修改它或指定库必须如何工作。原始库开发人员通过静态变量在他们的方法中引入了状态机制。例如:voidfoo(){staticinta=1;if(a==1){/*someinitlogic*/a=2;}}有时我们需要将库恢复到原始状态。有没有什么方法可以将静态变量重置为其原始值而无需任何系统“黑客攻击”?我们目前的解决方案是FreeLibrary/LoadLibrary,但我们想避免它。 最佳答案 您当前的解决方案是最干净的解决方案。唯一的选择是找出变量在DLL中的存储位置并直接修改

c++ - 如何从其他线程停止 ReadDirectoryChangesW

我使用下一个代码来了解某个文件夹中的文件何时更改:HANDLEhDir=::CreateFile(path,FILE_LIST_DIRECTORY,FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,NULL,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS|FILE_FLAG_OVERLAPPED,NULL);FILE_NOTIFY_INFORMATIONreturnData[1024];DWORDreturnDataSize=0;while(ReadDirectoryChangesW(hDir,ret

c++ - 如何在应用程序中更改 Windows ANSI api 的 CP_ACP(0)?

我尝试使用仅具有ANSI版本接口(interface)的dll库绘制文本,封装了windowsANSIapi,但我需要使用utf-8存储字符串数据。我不想使用MultiByte/WideChar函数转换字符串,所以我想要一种方法来更改我的应用程序中的CP_ACP,以便我可以将字符串数据输入到ANSIapi中。谢谢。ps:我不想更改系统默认代码页。 最佳答案 CP_ACP表示系统Ansi代码页。您不能在每个进程或每个线程的基础上更改它。这是一个系统范围的设置。如果DLL确实在内部依赖于CP_ACP,那么您别无选择,只能在与DLL交互时

c++ - 如何在 Metro 应用程序中打印到 C++ 中的 Visual Studio 11 控制台/日志?

我正在尝试弄清楚如何在VisualStudio11C++Metro应用程序中打印到调试器控制台/日志。我尝试了多种方法来打印到C++Metro应用程序中的日志(cout、Windows.System.Diagnostics、MSDN和Metro开发站点上的文档)。如何打印到控制台? 最佳答案 OutputDebugString:Sendsastringtothedebuggerfordisplay.某些WindowsAPI可从Metro风格应用程序使用,包括此功能。您可以从Metro风格应用程序中找到其他与诊断相关的WindowsA