草庐IT

WM_QUERYENDSESSION

全部标签

c - WM_SYSCOLORCHANGE 消息的含义

来自documentation:WM_SYSCOLORCHANGEmessageissenttoalltop-levelwindowswhenachangeismadetoasystemcolorsetting.Applicationsthathavebrushesusingtheexistingsystemcolorsshoulddeletethosebrushesandre-createthemusingthenewsystemcolors.声明全局变量HBRUSHg_hBackground=NULL;在WM_CREATE消息处理程序中创建背景画笔caseWM_CREATE:g_h

c++ - 如何在不将 wm_paint 发送到子窗口的情况下使父窗口无效?

父子窗口大小相同。家长听着child的重绘当子重绘时,父重绘。所以我不能使用invalidate来清理父窗口,因为这会将wm_paint发送到子窗口,然后无限循环。如何在不使用invalidateRect、invalidateRgn等的情况下清理父窗口。或者,如何在不将wm_paint发送到子窗口的情况下使父窗口无效?谢谢! 最佳答案 您可以在您的窗口上设置WS_CLIPCHILDREN样式,或者尝试调用RedrawWindow将RDW_NOCHILDREN指定为最终参数的函数。这可能会做你想做的事,虽然这有点难说。

windows - WM_ERASEBKGND 后面没有跟 WM_PAINT

我的应用收到一条WM_ERASEBKGND消息,但不是后跟一条WM_PAINT消息。很自然地,我的应用程序会删除背景,然后只出现一个空白窗口。我在Vista下运行,但它也发生在XP下。我很确定这是我的错,但我该怎么做才能让Windows无法运行?我对这些消息相当确定,因为我正在使用Spy++观看。这是一个在MSVC2008下编译的C应用程序。 最佳答案 不要在您的WM_ERASEBKGND处理程序中调用BeginPaint/EndPaint。 关于windows-WM_ERASEBKGN

c++ - WM_MENUSELECT 未在 CFrameWndEx 窗口中处理

我试图在基于CFrameWndEx主框架窗口的VS2008(和VS2010)SDI项目中处理WM_MENUSELECT消息。我从VS2008向导(单个文档、“MFC标准”、“使用经典菜单”选项)创建了一个简单的项目,结果类似于(添加WM_MENUSELECT消息后):classCMainFrame:publicCFrameWnd{///...public:afx_msgvoidOnMenuSelect(UINTnItemID,UINTnFlags,HMENUhSysMenu);};和IMPLEMENT_DYNCREATE(CMainFrame,CFrameWnd)BEGIN_MESSA

c++ - 在 WM_CREATE 中设置接口(interface)指针,在 WM_COMMAND 中变为 NULL

我正在学习COM,目前没有遵循任何特定的架构,我正在加载我自己的库而不是使用COM引擎。我在WM_CREATE中加载我的库,创建指向ISum的接口(interface)指针,hServerLib=LoadLibrary(TEXT("QIPropertiesServer.dll"));if(hServerLib==NULL){MessageBox(hwnd,TEXT("RequiredLibrarycouldnotbefound"),TEXT("Error!!"),MB_OK);DestroyWindow(hwnd);}pfnCreateComponentInstance=(PFN_FU

windows - WM_PAINT 消息是排队消息还是非排队消息?

在这篇文章中AboutMessagesandMessageQueues,据说WM_PAINT是一种排队消息。排队的消息Whenevertheusermovesthemouse,clicksthemousebuttons,ortypesonthekeyboard,thedevicedriverforthemouseorkeyboardconvertstheinputintomessagesandplacestheminthesystemmessagequeue.Thesystemremovesthemessages,oneatatime,fromthesystemmessagequeue

windows - WM_GETMINMAXINFO,ptMaxSize 没有任何作用

在处理WM_GETMINMAXINFO消息时,我试图通过更改ptMaxSize来更改参数MINMAXINFO结构。好像没什么效果。当我收到WM_SIZE消息时,无论我是增加还是减少WM_GETMINMAXINFO中的ptMaxSize,我总是得到相同的值。 最佳答案 您确定您的窗口已最大化吗?根据http://msdn.microsoft.com/en-us/library/ms632605(VS.85).aspx,MINMAXINFO::ptMaxSize控制最大化窗口的最大尺寸。如果要控制窗口的最大跟踪尺寸(窗口正常时的最大尺寸

c++ - WM_SETFOCUS,获取刚刚失去焦点的应用

当我的WTLC++应用程序被激活或获得键盘焦点时,我需要确定先前激活/具有焦点的应用程序的窗口句柄。但是,WM_SETFOCUS和WM_ACTIVATE消息的窗口句柄(LPARAM)都是NULL(XP,32位)。当我的应用程序被激活时,如何确定刚刚失去焦点的应用程序?有没有一种简单的方法可以做到这一点,或者我需要滚动一个特殊的CBTHook? 最佳答案 要准确查看正在发送的消息及其参数的简单方法是启动Spy++并将其设置为记录消息,同时按Alt+Tab转到另一个窗口。与您发现的一致,WM_SETFOCUS和WM_ACTIVATE的l

c++ - SS_NOTIFY 和 WM_SETCURSOR

我正在尝试使用C++模拟对话框中的超链接。我正在使用设置了SS_NOTIFY的静态控件,以便用户可以单击该控件并转到网页:LTEXT"Caption2",IDC_SETTINGS,9,36,219,13,SS_NOTIFY通过设置SS_NOTIFY,我可以拦截点击,因为它是针对静态注册的:caseIDC_STC_URL:ShellExecute(NULL,"open","http://google.co.uk",NULL,NULL,SW_SHOWNORMAL);returnTRUE;我还通过拦截WM_SETCURSOR消息将光标更改为手:caseWM_SETCURSOR:POINTpt

windows - 向 WM_PAINT 发送消息

我正在尝试编写一个程序来控制带有箭头键的框的移动。我的代码有问题。是否可以通过SendMessage向WM_PAINT发送消息以在按下LEFT键时绘制一个新矩形?以下是我的代码caseWM_KEYDOWN:switch(wParam){caseVK_LEFT://LEFTMOVEMENTSendMessage(hwnd,WM_PAINT,VK_LEFT,0);break;caseVK_ESCAPE://FORENDINGTHEGAMEWITHESCAPEKEYSendMessage(hwnd,WM_DESTROY,VK_ESCAPE,0);break;}caseWM_PAINT:hdc