草庐IT

c++ - 如何将可变长度字符串从 RPC 服务器传递到客户端?

我正在实现一个Windows系统服务,它充当RPC服务器和一个相应的客户端,两者都是用C++编写的。我正在使用普通的WindowsRPC功能。将字符串从RPC客户端传递到服务器很容易。只需像这样在IDL文件中声明函数参数:[in,string]wchar_t*myStringMIDL将处理内存分配魔法。就像款待一样。返回修改后的客户端字符串也很容易:[in,out,string]wchar_t*myString不过,这需要我在客户端正确调整字符串的大小。问题:我需要从服务器返回字符串给客户端。我不知道在客户端上它们会有多大,所以在客户端上分配内存不是一个选项。我可以分配非常大量的内存,

c++ - 将托管函数指针作为非托管回调传递

我正在尝试将托管函数指针void(*)(void*)传递到我的非托管库。我的非托管库使用指向受CriticalSection保护的数据帧的指针调用此回调。当托管回调运行时,由于关键部分,没有其他任何东西可以修改数据帧。但是,我仅通过输入回调就遇到了访问冲突和堆损坏。编辑:我忘了说了。StartStreaming()窃取了它管理的线程。此外,它还创建了一个单独的线程,用于将新数据分派(dispatch)给给定的回调。在这个单独的线程中调用回调。到目前为止,我已经完成了以下操作://StartStreamingstreaming_thread_=gcnewThread(gcnewThrea

c++ - 在 QT for Windows 中使用 Win32 API

我正在从.netC#迁移到QTC++,我正在尝试使用此Win32函数在QT中模拟驱动器:[DllImport("kernel32.dll",CharSet=CharSet.Auto,SetLastError=true)]privatestaticexternboolDefineDosDevice(intflags,stringdevname,stringpath);[DllImport("kernel32.dll",CharSet=CharSet.Auto,SetLastError=true)]privatestaticexternintQueryDosDevice(stringdev

c++ - 使用 C++ 创建所有者绘制的菜单,2012 风格

我的任务目标很简单——将图标添加到通过调用TrackPopupMenuAPI显示的上下文菜单中。但显然,为Windows编写代码就像用勺子划水一样,除了制作所有者绘制的菜单外,没有简单的方法来添加图标。所以我做了一些搜索,得到了一堆关于所有者绘制菜单主题的C++代码,但到目前为止我找不到任何适合我的代码。原因很简单——它绘制的菜单看起来像从Windows95中出来的东西……那么有什么方法可以使所有者绘制的菜单具有默认的Windows7外观吗?附言。如果有更简单的方法向菜单项添加图标,例如LoadIcon然后ChangeMenuItem来设置它,如果有人能告诉我如何操作,我将不胜感激,因

c++ - 在 Visual Studio 10 项目中一起使用/YC 和/MP

我试图绕过/YC和/MP相互排斥的限制。我想利用预编译header和多进程编译。到目前为止,我的答案是创建2个项目而不是1个。第一个是pch生成库,仅包含一个stdafx.h和stdafx.cpp。它生成在stdafx.cpp上设置了/YC的pch文件那个库成功生成了pch文件!作为旁注,pch库项目还指定了/YU指向其stdafx.h和/Fp引用输出pch文件。我的第二个项目是我的主要可执行文件。它指定了/MP但没有为任何文件指定/YC,并且不包含stdafx.h或stdafx.cpp。相反,我将项目的/YU设置为pch库的stdafx.h,将/Fp设置为pch库生成的pch。然后我

c++ - 在 Win32 应用程序中添加状态栏

我想为我的Win32应用程序添加一个状态栏。我发现我可以使用CreateStatusWindow函数。在重新调整窗口大小之前,我工作正常。查看我的代码块的一部分:BOOLInitInstance(HINSTANCEhInstance,intnCmdShow){HWNDhWnd;hInst=hInstance;//StoreinstancehandleinourglobalvariablehWnd=CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL

c++ - 使用 FindFirstFile 和 FindNextFile C++ 进行递归硬盘搜索

我看不出哪里出错了。当前代码直接跳到closefile。不处理任何文件,我可能只是遗漏了一些明显的东西,这是漫长的一天。我的功能是在硬盘(c:)中搜索给定文件。例如example.txt。&strFilePath将在FindFirstFile声明中使用。如有任何帮助,我们将不胜感激。谢谢。StringCopy::SearchDrive(constString&strFile,constString&strFilePath,constbool&bRecursive,constbool&bStopWhenFound)const{HANDLEhFile;WIN32_FIND_DATAfile

c++ - 如何检查进程是否关闭/事件?

我正在用C++编写程序。在我的代码中,我使用函数CreateProcess运行进程A.进程A启动另一个进程B。B工作了一段时间,然后关闭。B的运行时间取决于各种参数。有时B工作1小时,但有时-将近2小时。我需要知道B何时结束工作(B何时关闭)。如何检查第二个程序B的结束?也就是说,有没有什么函数(比如WINAPI)可以检测进程是否存活? 最佳答案 使用WaitForSingleObject(),传入进程句柄。 关于c++-如何检查进程是否关闭/事件?,我们在StackOverflow上找

c++ - 永久更改光标

我正在尝试将光标永久更改为其他光标。当我这样做时,我得到的只是新光标,直到我再次移动光标。caseWM_RBUTTONDOWN:cursor=LoadCursor(NULL,IDC_CROSS);SetCursor(cursor);break;我如何更改它以使其永久化..我知道它与wndclass有关..当我在wndproc中创建窗口时,我对IDC_ARROW说wndclass.hIcon但我不能在WM_RBUTTONDOWN中调用wndclass..有什么帮助吗? 最佳答案 每次鼠标移动都会导致WM_SETCURSOR要发送到您的

c++ - Windows sleep 不一致?

我使用opengl制作的游戏有点问题。游戏有时会半速运行,有时会正常运行。我不认为是opengl导致了问题,因为它在我的计算机上以14,000fps的速度运行。(即使以半速运行)这让我相信是“游戏计时器”导致了问题。游戏计时器在单独的线程上运行,并被编程为在其“循环”结束时通过Sleep(5)调用暂停。如果我删除Sleep(5)调用,它运行得如此之快以至于我几乎看不到屏幕上的Sprite。(可预测的行为)我尝试在Render()线程的末尾(也在它自己的线程上)抛出一个Sleep(16)。此操作应将fps限制在62左右。请记住,该应用程序有时以预期速度运行,有时以一半速度运行(我在我拥有