草庐IT

WM_CLOSE

全部标签

c++ - 在我的 Qt 应用程序中收到 WM_DEVICECHANGE 但没有收到 DBT_DEVICEARRIVAL

我正在按照一个示例来检测Windows7中的USB闪存驱动器插件和拔出检测。我确实收到了通知WM_DEVICECHANGE但没有收到DBT_DEVICEARRIVAL,这是在USB设备是插入。我的代码如下:/********************************************WINDOWSEVENTS********************************************//*WeusethefirstWM_PAINTeventtogetthehandleofmainwindowandpassittoRegisterDeviceNotificatio

c++ - MFC 应用程序终止时运行自定义代码 : d'tor or WM_CLOSE?

我有一个基于对话框的MFC应用程序,它需要停止WindowsWifi服务才能正常运行,但我想在我的应用程序退出时再次启用它。所以我想我应该将重启服务的代码放在主对话框类的析构函数中。现在我注意到其他人将他们应该在程序终止期间运行的代码放入WM_CLOSE消息处理程序中。这两种方式似乎都有效,但我想知道这两种方式是否有缺点。 最佳答案 对于基于MFC对话框的应用程序,您可以将最终代码放置到应用程序类InitInstance方法中,紧接在主对话框DoModal调用之后。对于其他MFC应用程序类型(MDI、SDI),最终代码通常放在Exi

c++ - 正确重置 WM_SETCURSOR 处理程序中的光标

简介及相关信息:我制作了一个应用程序,当鼠标悬停在静态控件上方时,需要将光标的外观更改为手形,否则将其重置为普通光标。我最初的应用程序是全屏模式,但最近条款发生了变化,它必须有一个可调整大小的窗口。这意味着我的WM_SETCURSOR处理程序必须重写以反射(reflect)新引入的更改。游标加载到WM_CREATE中,我定义了类游标,如下所示://cursorscaseWM_CREATE:hCursorHand=LoadCursor(NULL,IDC_HAND);hCursorArrow=LoadCursor(NULL,IDC_ARROW);//otherstuff在我的课上:WNDC

c++ - 窗口未最大化时丢失 WM_NCLBUTTONUP 消息的奇怪问题

我有一个处理WM_NCLBUTTONUP消息的窗口,以便处理对标题栏中自定义按钮的点击。这在窗口最大化时效果很好,但当它没有最大化时,WM_NCLBUTTONUP消息永远不会到达!我确实收到了WM_NCLBUTTONDOWN消息。奇怪的是,如果我单击菜单栏右侧,WM_NCLBUTTONUP确实会到达,但在标题栏/窗口框架的任何位置,消息永远不会到达。调试一段时间后发现如果在CMainFrame::OnNcLButtonDown()上设置断点,点击标题栏,但按住鼠标不放,让调试器在函数中断点,按F5继续调试,然后释放鼠标按钮-神奇地发送WM_NCLBUTTONUP!!我的问题有两个方面:

c++ - 在 C++ 中为 Message Pump 定义自己的 WM 消息

如何在C++中定义可由消息泵处理的自己的WM(如WM_CLOSE等)消息?如果可能的话。 最佳答案 这取决于您使用消息的目的。Thislink显示Win32消息的“地址空间”的segmentation。WM_USER在一般情况下不是正确的解决方案。WM_USER消息“可以由应用程序定义并用于在私有(private)窗口类中发送消息。这些值不能用于定义在整个应用程序中有意义的消息,因为一些预定义的窗口类已经在此范围内定义了值。”您最好分配一个WM_APP范围内的消息ID。RegisterWindowMessage如果您想让系统在运行时

c++ - 删除 HWND 对象

我有一种情况,当我收到一条消息时,我必须从hWnd中删除一个窗口。我虽然这一定是可能的,因为CreateWindowEx通过返回HWND创建了一个对象,但我必须能够删除一个对象。注意:hWnd位于其他进程中。 最佳答案 正确的方式是发送WM_CLOSE向相关窗口发送消息或直接调用DestroyWindow这将发送WM_DESTROY消息到窗口。线程不能使用DestroyWindow来销毁由不同线程创建的窗口。WM_CLOSE和WM_DESTROY的区别:发送WM_CLOSE后,目标应用程序可以在销毁窗口之前提示用户确认,方法是处理W

c++ - 围绕 avcodec_open/close 的线程锁定

我有一个c++-cli代码,它使用capture从opencv中的文件夹捕获视频,然后使用cvqueryframe检索帧。然后我处理帧,一旦处理完所有帧,我就释放捕获。它工作正常但是当我尝试多线程时它给了我一个警告并且无法捕获文件夹中的一些视频并警告“avcodec_open/close()周围的线程锁定不足”。//foreachvideoinfolderdo{capture=cvCreateFileCapture(filename);while(1){img=cvqueryframe(capture)if!imgbreak;///processimg}cvreleasecapture

c++ - "cout<<(char*)NULL"在这里做 "close(1)"吗?

这个问题在这里已经有了答案:Whydoesstd::coutoutputdisappearcompletelyafterNULLissenttoit(3个答案)关闭8年前。在下面的代码中我使用了cout在这一行之后,我的程序没有在输出屏幕上打印任何内容。这是否意味着我已经完成了close(1)与cout这里?这里到底发生了什么?这是一个错误吗?请分享您的想法。#includeusingnamespacestd;voidf(){cout我在gcc和DevCpp编译器上都试过了,观察到相同的行为。

c++ - WM_ENTERSIZEMOVE/WM_EXITSIZEMOVE - 使用菜单时,并不总是配对

为了防止我的应用程序在用户四处移动其窗口时更改窗口内容,我捕获消息WM_ENTERSIZEMOVE/WM_EXITSIZEMOVE并在消息之间暂停应用程序。但是,有时我会收到WM_ENTERSIZEMOVE但根本没有收到WM_EXITSIZEMOVE。一个复制品是:打开窗口菜单点击尺寸不要调整窗口大小,而是点击进入窗口注意窗口从未收到任何WM_EXITSIZEMOVE。在检查其工作原理时,我还检查了MicrosoftDirectX示例,发现了同样的问题。执行上述重现步骤后,示例应用程序看起来已卡住(我刚刚使用2009年3月SDK中的BasicHLSL示例对其进行了尝试)。应用程序应该如

c++ - Windows Web Server 2008 中的事件 CTRL_CLOSE_EVENT 未调用 CtrlHandler

我有一个控制台应用程序,它使用SetConsoleCtrlHandler设置一个处理程序来处理和CTRL_CLOSE_EVENT。处理程序仅返回TRUE,这将导致出现一个对话框并提示用户继续关闭或取消。该软件在WindowsXPSP3和WindowsWebServer2008SP2上运行。在XP上,当单击控制台窗口上的“X”时,将调用我的控制处理程序并按预期出现提示。在Server2008上,关闭控制台窗口不会调用我的控制处理程序,应用程序会在没有提示的情况下关闭。为了检查控制处理程序是否设置正确,我为CTRL_C_EVENT添加了一个案例。我可以看到为Ctrl-C调用了代码。在Ser