草庐IT

c++ - 异步 Windows 控制台输入同时输出

我在尝试读取输入的同时输出时遇到问题。我的游戏需要一个服务器控制台,它可以在输出的同时接收输入并且不会弄乱缓冲区。例如,我正在输入“Helloworld”,在此过程中,玩家死亡、击杀等信息被输出到控制台,结果如下:Hello*PlayerkilledPlayer2*world提前致谢 最佳答案 为什么不生成一个GUI窗口,而不是直接将输出写入控制台?然后,只有一个区域用于输出,底部有一个单独的输入区域,您可以在其中键入命令。有点像irc客户端的样子。如果它只能是控制台,我会建议使用ncurses(或PDCurses)之类的东西来创建

c++ - 监听套接字意外死亡

我遇到了一个问题,TCP套接字正在监听一个端口,并且已经完美地工作了很长时间-它处理了多个连接,并且似乎可以完美地工作。但是,有时在调用accept()创建新连接时,accept()调用会失败,并且我会从系统中收到以下错误字符串:10022:提供了无效参数。显然,当您在不再监听的套接字上调用accept()时,可能会发生这种情况,但我自己并没有关闭套接字,也没有收到该套接字上的任何错误通知。谁能想到监听套接字停止监听的任何原因,或者上述错误是如何产生的? 最佳答案 一些可能性:您的代码的其他部分覆盖了句柄值。检查它是否已更改(在其他

c++ - 写入文件函数 "freezes"

我正在尝试重写xCmd,它可以在远程机器上启动进程。基本上,它将自身作为服务安装在目标计算机上,然后启动请求的进程。一切正常,但我注意到一个错误。xCmd通过管道进行通信,它使用WriteFile()。我的问题是,如果我运行我的API(或最初的API,两者都会产生此错误),那么它将第一次启动请求的进程,但如果我再次启动它,那么它将“卡住”在这一行:WriteFile(hCommandPipe,&msg,sizeof(msg),&dwTemp,NULL);WriteFile没有返回任何错误代码,程序就在这里停止。我什至无法关闭cmd窗口。当我关闭目标计算机上的服务时,我只能关闭它。谁能帮

c++ - 发送消息到不同的线程

是否有任何API可以向线程发送消息?基本上我只有threadId可用,我想向该线程发送自定义消息。 最佳答案 PostThreadMessage。虽然不是很可靠。查看旧新事物博客here和here有关原因的详细信息。基本上模态消息循环把整个想法搞得一团糟。由于发布到线程的消息没有窗口句柄,因此调用DispatchMessage将丢弃该消息。您运行的任何模态循环(直接或间接)都会调用DispatchMessage,因此大部分时间此策略都会失败并且您的消息会消失在以太中。 关于c++-发送消

windows - Visual Studio C++ 实现接口(interface)

我知道在VisualStudio中,当用C#编程时,如果我指定一个类实现一个接口(interface),我可以右键单击该接口(interface)和“实现接口(interface)”,这将自动神奇地用适当的方法签名填充我的类.编辑:对于原始问题的含糊不清,我深表歉意。我正在寻找一种快速简单的方法来让VisualStudio完成实现多个COM接口(interface)的肮脏工作,即在实现类中生成方法签名/stub。谢谢,亚历克斯 最佳答案 C++中不存在接口(interface)。IDE对该语言的支持级别是C#的优势之一。Visual

c++ - 如何知道附加的windowstation是否是交互式的?

我正在编写一个可以由另一个服务(在我们的控制下)或由登录用户加载的程序。程序需要知道窗口站是否是交互式的以便显示对话框。我知道GetProcessWindowStation函数,但是这个函数返回一个句柄。有办法查出来吗? 最佳答案 交互式窗口站总是winsta0。所以需要获取windowstationname来确定。这是一些伪代码:wchar_tbuffer[256]={0};DWORDlength=0;GetUserObjectInformation(GetProcessWindowStation(),UOI_NAME,buffe

c++ - 部署到 Windows 和 Linux 时选择哪个安装系统?

我的公司正在考虑放弃InstallShield并转向其他东西,主要是因为使用它的体验很差,主要是在Linux上。我们的产品是针对Windows和Linux(RedHat)的C++应用程序(二进制文件、共享库)。安装程序本身不需要做任何特殊的事情,只需转储一些二进制文件和共享库,有时还可以执行一个外部进程。不需要通过安装程序升级版本,这是在安装程序完成后处理的。我想建议在Windows上使用NSIS,在Linux上使用RPM。部署到Windows/Linux时推荐使用哪些安装程序系统?跨平台以防止维护两个安装程序的东西无疑是一个优势。 最佳答案

c++ - Cygwin 端口不工作 => 在启动时立即退出

我正在尝试使用cygwin将C++程序从Linux移植到Windows。我现在可以很好地构建和链接它,但是当我启动该程序时,它会立即退出并出现错误。当我在gdb中尝试时,我得到以下“未知目标异常”结果:$gdb../../bin/ARCH.cygwin/release/myAppGNUgdb6.8.0.20080328-cvs(cygwin-special)Copyright(C)2008FreeSoftwareFoundation,Inc.LicenseGPLv3+:GNUGPLversion3orlaterThisGDBwasconfiguredas"i686-pc-cygwin"

c++ - C++ (Windows) 的 TEMP 环境变量扩展

我需要在Windows平台上获取一个%TEMP%环境变量值字符串。如果我尝试使用任何方法(C/C++)(getenv(),…)获取此环境变量,它会返回“~”字符串。例如:C:\DOCUME~1\pkp\LOCALS~1\Temp。但由于某些原因我需要获取完整的字符串,如下所示:C:\DocumentsandSettings\pkp\LocalSettings\Temp如果有人知道任何获得此方法的方法,请告诉我。 最佳答案 调用GetLongPathName()关于简称。 关于c++-C+

c++ - 在Windows中初始化静态全局变量时new返回NULL?

我正在努力将rLog与我们的代码库集成,我注意到Windows上存在一个在Linux上没有的问题。在头文件中,我有一个静态变量,它给了我一个“详细”的日志记录channel(基本上是从调试开始的),定义如下:staticRLogChannel*rlog_verbose=DEF_CHANNEL("verbose",Log_Debug);这在Linux上没有问题,但在Windows上,应用程序一启动我就会收到错误消息。我已经在rLog库中追踪到这一行:RLogChannel*rlog::GetComponentChannel(constchar*component,constchar*pa