草庐IT

c++ - Windows 样式标志(如 WS_TILED 和 WS_ICONIC 只是重命名其他标志)的目的是什么? ( Windows/C++)

我正在查看各种窗口样式标志,我注意到一些标志是这样定义的:#defineWS_TILEDWS_OVERLAPPED#defineWS_ICONICWS_MINIMIZE#defineWS_SIZEBOXWS_THICKFRAME#defineWS_TILEDWINDOWWS_OVERLAPPEDWINDOW定义与其他标志完全相同的新标志的目的是什么? 最佳答案 它的目的是向后兼容。WS_TILED和WS_ICONIC可能可以追溯到Windows版本1。Microsoft的一大负担是,一旦他们将#define或函数放入SDK头文件中,

c++ - 有什么简单的方法可以确定弹出菜单何时被关闭?

我正在使用TrackPopupMenu显示一个弹出菜单,并想知道何时通过在其外部单击将其关闭。我查看了所有菜单功能,但没有发现任何在这方面有用的东西。Spy++告诉我在这种情况下没有发送窗口消息。那么,有没有不用安装鼠标钩子(Hook)的简单方法呢?谢谢! 最佳答案 [编辑]这个更好。如果在uFlags参数中指定TPM_RETURNCMD,则返回值是用户选择的项目的菜单项标识符。如果用户在没有进行选择的情况下取消菜单,或者发生错误,则返回值为零。菜单循环在::TrackPopupMenu()返回时结束:)如果选择了一个菜单项,则将H

c - 持续的虚拟内存增加是否表明内存泄漏?

进程的虚拟内存(私有(private)字节)持续增加是否表明内存泄漏...?我正在使用第三方库。不断使用库导致虚拟内存不断增加。所以它是内存泄漏,可能导致虚拟内存不断增加,也可能是任何其他原因。 最佳答案 我们说不准。一些应用程序在您使用它们时自然会增加内存大小。想一想文字处理器——它的内存使用量会随着您的书写而增加。但是您应该对自己的应用程序的内存使用模式有一个很好的了解,所以您应该能够自己回答这个问题。 关于c-持续的虚拟内存增加是否表明内存泄漏?,我们在StackOverflow上

c++ - ctrl+alt+del 禁止在window操作系统中使用c

如何在Window操作系统中使用C禁用ctrl+alt+del?我试过了SystemParametersInfo(SPI_SETSCREENSAVERRUNNING,true,&bOldState,0);但它对我不起作用。您能否指导我,以便我可以实现。 最佳答案 您使用的SPI_SETSCREENSAVERRUNNING参数是为Windows95上的屏幕保护程序设计的。它适用于Windows95/98/ME及更早版本。它不适用于WindowsNT/2000/XP/Vista。Ctrl-Alt-Del热键组合可以在WindowsNT/

c - 有什么方法可以使用 getaddrinfo() 和 freeaddrinfo() 并且仍然是与旧版 Windows 兼容的程序?

在Winsock2库中,getaddrinfo()和freeaddrinfo()仅在WindowsXP及更高版本中添加。我知道如何在遗留系统中替换它们,但根据Windows版本有条件地使用将无济于事。应用程序不会在9x中启动,并显示一条消息说它链接到WS2_32.dll中丢失的导出。我正在使用MinGW编译和链接代码,并希望继续使用它。也许自己写那些函数?非常感谢你所做的一切。 最佳答案 您可以使用LoadLibrary和GetProcAddress来(尝试)获取getaddrinfo和freeaddrinfo的地址,然后通过指针调

c++ - 在没有源代码访问权限的情况下修改旧 Windows 程序以在按键后不调用退出

我有一个较旧的C++Windows程序,我被要求在一个学生项目的kiosk风格环境中运行。在主菜单中,按ESC将退出程序,这是不可取的。在过去,我会捕获键盘中断或其他任何东西,并在可能决定所有这些的case语句中引用JMP或CALL的情况下挖掘NOOP,但在Windows上,一切都经过各种注册的事件处理程序,我还没有大约10年没有完成任何Windows内部工作。是否有一个很好的工具可以在某些WM_EVENT(WM_KEYDOWN是主要目标)消息或类似消息上对程序进行断点,以便我可以缩小可执行文件中进行检查的位置?我目前正在退出各种线程清理和最终退出调用之前进行的各种潜在系统调用,但似乎

c++ - 从Windows上的串口读取的时间

我正在尝试在windows(xp)机器上通过串口实现一个协议(protocol)。问题在于协议(protocol)中的消息同步是通过消息中的间隙完成的,即发送字节之间的x毫秒间隙表示新消息。现在,我不知道是否有可能准确地检测到这个差距。我正在使用win32/serport.hapi读取我们服务器的多个线程之一。来自串口的数据被缓冲,所以如果我们的软件有足够的(并且会有足够的)延迟,我将在一个读取序列中从端口缓冲区获取多条消息。有没有一种从串行端口读取的方法,以便我可以在接收到特定字节时检测到间隙? 最佳答案 如果您想对Windows

C++内存泄漏检测方法

我正在开发一个在Windows上使用许多外部库的项目。我遇到了内存泄漏问题:我通过重写operatornew/new[]和delete/delete[]检测到了很多内存泄漏。问题是我知道有多少内存块泄漏了,但不知道在哪里可以找到它们,在重写的函数中,我可以记录分配的内存块的大小和位置,而没有堆栈跟踪。所以为了处理它,我想我也需要记录堆栈跟踪(但是怎么做?),或者有什么方法可以找到导致内存泄漏的代码?非常感谢您的帮助。 最佳答案 我使用以下方法为new提供有关分配每个内存块的文件和行的信息:voidoperatordelete(voi

c++ - 通过 Winsocks 发送一个 int 数组

我正在尝试通过Winsocks发送一个int数组。我可能是错的,但我很确定只支持char*,所以我对如何正确执行此操作有点困惑。little/bigedian也有问题,那么这样做的好方法是什么?我已经问过convertingintarraytochar的问题了但建议改为在网络部分就此启动一个新线程。 最佳答案 您误解了可以使用WinSock发送的内容。是send()被定义为采用char*缓冲区,但实际上它只采用数据缓冲区。如果今天定义了send(),buf将被定义为void*。但我相信在定义sent()时void*不是C标准的一部分

c++ - 如何在没有子类化的情况下挂接特定的 Windows 消息?

有没有一种方法可以在不对窗口进行子类化的情况下Hook特定的窗口消息。有WH_GETMESSAGE但这似乎会产生性能问题。除了这些不会降低性能的任何其他解决方案? 最佳答案 据我所知,没有比您提到的更好的解决方案了。而且,当然,子类化窗口比Hook线程的所有消息要好。让我们想想消息向上传递的路径,直到它被窗口处理:通过显式调用PostMessage/SendMessage或由操作系统隐式调用,将消息发布或发送到窗口。仅发布消息:最终线程从消息队列中弹出此消息(通过调用GetMessage或类似方法),然后调用DispatchMess