草庐IT

c++ - 如何接收来自 Windows MessageBox 的反馈?

我知道可以用Windows做这样的事情:MessageBox(hWnd,"Yes,No,orCancel?","YNCB_YESNOCANCEL);但是我如何对用户按下的内容使用react(比如如果他们单击"is"则关闭窗口)? 最佳答案 MessageBox将返回一个整数,指的是按下的按钮。来自上一个链接:ReturnValueIDABORTAbortbuttonwasselected.IDCANCELCancelbuttonwasselected.IDCONTINUEContinuebuttonwasselected.IDIGN

c++ - 进程终止 C++

我有以下问题:我有一个用C++编写的应用程序(永不结束的服务器)作为服务运行,在主线程中还包含3个线程(主要执行IO)。在主循环中,我捕获了所有可能的异常。进程终止,主循环或线程本身没有打印任何内容。我在事件日志中看到进程以代码1000停止。Windows是否像在unix中一样创建核心文件?如果我从事件日志中得到一个内存地址,是否有任何方法可以知道它发生在应用程序的哪个部分?也许这是一个线索:在它发生的同时我启动了另一个应用程序(不同类型)。 最佳答案 尝试将windbg设置为事后调试器。安装windbg从命令行执行“windbg-

c - 为什么我的应用程序在复制大文件时卡住?

我有一个MFC应用程序。它基本上只是将文件从一个驱动器复制到另一个驱动器。当我复制大文件(超过1Gb)并单击我的窗口时,我的应用程序卡住,但复制在后台继续进行。有人告诉我必须使用工作线程。我用过它,但它仍然卡住。当我复制小文件时就可以了。我不知道可能是什么问题。请有人帮忙!这是我的代码:voidCGetFileListDlg::OnBnClickedButtonGetFileList(){//herei'mdoingfilelistcomparingAfxBeginThread(CopyThread,&Tstruct);//hereicallmythreadandgiveastruct

c++ - 以编程方式检测是否安装了 Windows Media Player

有人对如何以编程方式检测是否安装了WindowsMediaPlayer有任何建议吗?我知道注册表设置查找,但不要相信它,因为它有点误导(卸载可能不会删除它)。而且我考虑过只发布一个视频,但可能是由于未安装MediaPlayer以外的其他原因导致的错误,因此也不是决定性的。理想情况下,我更喜欢可以从我的C++应用程序和我的NSIS中使用的解决方案安装程序。但我的C++应用程序是最重要的,我愿意接受安装程序中的注册表破解。 最佳答案 查看键HKLM\Software\Microsoft\ActiveSetup\InstalledComp

c++ - 没有 wndproc 的窗口

我很好奇是否可以在不使用WndProc的情况下创建窗口。所以我想注册窗口类,并将lpfnWndProc字段设置为NULL;并以我自己的方式使用消息(由TranslateMessage(&msg)给出)。这样做有什么缺点吗?先谢谢,对不起我的语法错误。编辑#1:好的,我有一个窗口,但我在某个地方错了。MSGmsg;while(PeekMessage(&msg,NULL,NULL,NULL,PM_REMOVE)){if(msg.message==WM_QUIT)returnfalse;else{TranslateMessage(&msg);switch(msg.message){caseW

c++ - 如何在 C++ 中更改窗口大小?

您好,我必须在C++中运行一个程序,我想确保在执行该程序时,它会以特定的大小/尺寸打开控制台,以便我的程序中的显示正确。我需要帮助,因为我不知道该怎么做。我正在使用DevC++5.42(Orwell)。我尝试使用#include#includeusingnamespacestd;SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW);intmain(){cout遇到错误[Error]expectedconstructor,destructor,ortypeconversionbefore'

c++ - 在 C++ 中使用变量作为 system() 输入而不使用 c_str()

这不是“为什么简单的system(variable)不起作用”之类的内容的重复。解决方案是将字符串存储到可由c_str()转换的变量中,然后调用:系统(变量.c_str())不过,我正在寻找一种无需c_str()直接调用的方法。所以我试过类似的东西classsystemRunner{private:stringstreamprepareStream;public:voidsetProgram(strings){prepareStream.str("");//emptystreamprepareStream.clear();//resetstream-!IMPORTANT!prepare

c - STATUS_PENDING 是什么意思?

我对NT进程没有概念,因为我使用的是nativeAPI。因为它们返回的值如STATUS_TIMEOUT、STATUS_PENDING等。STATUS_PENDING真的是什么意思?我的代码是这样的。NTSTATUSrc;rc=NtReadFile(Keybrds[iLoop].hKeyboard,Keybrds[iLoop].hEvent,NULL,NULL,&IoStatusBlock,&KbData,sizeof(KEYBOARD_INPUT_DATA),&ByteOffset,NULL);这里,NtReadFile()正在返回STATUS_PENDING,这是什么意思?

c++ - 是否可以禁止取得文件的所有权?

我很好奇是否有办法阻止用户(包括属于admin组的用户)取得文件的所有权?我最初是通过在LocalSystem帐户下运行的服务创建此类文件的。然后我将该文件的DACL设置为D:(A;OICI;GA;;;SY)只让SYSTEM帐户拥有完全访问权限,并将myservice设置为所有者:DWORDdwRes=::SetNamedSecurityInfo(strDataFilePath,SE_FILE_OBJECT,OWNER_SECURITY_INFORMATION,//changeonlytheobject'sownerpMyServiceUserSid,//UserSIDformyser

c++ - windows和linux差异: backslash and forward slash in c++

在windows中我有std::stringgraphdir=projDir+"graph\\";intmkdirsf=_mkdir(graphdir.c_str());以上在Windows中运行良好。但是在Linux中,您知道使用了正斜杠/。所以上面将创建一个名为graph\的文件夹。有没有一种通用的方法可以输入正确的文件夹而不必担心/或\? 最佳答案 您甚至可以考虑在Windows上使用正斜杠作为目录分隔符。大多数Windows库都能够将它们转换为反斜杠(它们实际上不进行转换,但按需要理解它们;其余的是实现细节)否则,请注意C+