草庐IT

WM_NCCREATE

全部标签

winapi: GetUpdateRect() with bRepaint TRUE in WM_PAINT 不清除绘画区域,但 InvalidateRect() 在 WM_PAINT 之外?

我的自定义绘图区的WM_PAINT看起来像这样://TRUEtoclearthebackgroundif(GetUpdateRect(hwnd,&r,TRUE)==0)return;//noupdaterect;donothingdc=BeginPaint(hwnd,&ps);//checkreturn//paintsomeRGBAimagedatawithGDI+EndPaint(hwnd,&ps);(暂时忽略向GDI+发送HDC。)我在这里使用GetUpdateRect()而不是从BeginPaint()获取更新矩形,因为我总是想在空白Canvas上绘制,尤其是因为我正在做alph

c# - Win32 : Get device info in WH_KEYBOARD_LL || Block input on WM_INPUT when using Raw Input

我需要编写一个程序来修改Windows下某个usbhid键盘(条码扫描器)的输入。应适用以下工作流程:监听来自设备的输入->记录输入->停止输入到达事件应用程序->处理记录的输入并将结果输出到事件应用程序所以我搜索了这个,但现在我卡住了!“记录输入”显然有两个选项:低级钩子(Hook)WH_KEYBOARD_LL和对原始输入中的WM_INPUT事件作出react问题是:-使用WH_KEYBOARD_LL我发现无法确定输入来自哪个设备-在WM_INPUT事件中我发现没有办法停止击键-如果使用WH_KEYBOARD_LL停止击键,它将不会到达原始输入,因此不会触发WM_INPUT,因此我无

windows - 从 SendMessage() + WM_COPYDATA 获取响应

目前我正在研究一个使用WM_COPYDATA将用户数据发送到其他进程的示例。我构造COPYDATASTRUCT结构来填充用户数据。并使用SendMessage()函数将数据发送到其他进程。OnCopy()函数返回真/假值。但想要得到除true/false之外的其他信息(如int、char[]、float等)。请帮助我从除true/false之外的其他进程获得响应问候 最佳答案 大家好,您可以使用包含返回数据的COPYDATASTRUCT结构通过SendMessage执行发送响应。您无法更改SendMessage返回类型。

windows - wxWidgets 和 WM_NCHITTEST

我在VisualC++2010中使用wxWidgets。我的目标之一是能够move我用窗口的任何部分(客户端或其他)创建的框架。为此,我过去曾使用WM_NCHITTEST让Windows认为我窗口的每个部分都是标题栏。在wxWidgets中应该如何完成? 最佳答案 经过广泛的研究,由于应答部门不活跃,我找到了一个可以接受的(虽然不是可移植的)解决方案:WXLRESULT[your-wxWindow-inheriting-objectname-here]::MSWWindowProc(WXUINTmessage,WXWPARAMwPa

c - 绘画后 WM_PAINT 不显示

所以我正在绘制位图,这是我的代码:hdcMem=CreateCompatibleDC(hdc);SelectObject(hdcMem,g_hBitmap);GetObject(g_hBitmap,sizeof(bm),&bm);BitBlt(hdc,196-(bm.bmWidth/2),90,bm.bmWidth,bm.bmHeight,hdcMem,0,0,SRCCOPY);DeleteDC(hdcMem);有时,当我用这段代码绘制时,位图不显示。尽管如果我最小化/取消最小化窗口,则会显示位图。我很确定我的代码没有问题,那么我还应该做些什么吗?编辑:原来它不仅仅是位图,如果我用Te

c# - 拦截所有 WM_MOUSEWHEEL 消息

我一直在搜索WindowsAPI,寻找一种在所有WM_MOUSESCROLL消息到达其透视消息队列之前拦截它们的方法。拦截后我需要改变一些关于它们的东西并将它们发送到不同的[或相同的]消息队列。我需要相当高效地执行此操作,因为它将在相当大的应用程序之上运行。关于如何实现此目标的任何想法?我还没有找到办法。 最佳答案 最好的选择是使用lowlevelmouseeventhook进行非托管拦截.见thisMSKBarticle了解更多信息。 关于c#-拦截所有WM_MOUSEWHEEL消息,

c++ - WM_KEYDOWN 消息未发送

我一直在尝试找出程序中的错误。我注意到,每当我按住向上和向左箭头键并按空格键时,我的WndProc永远不会接收或处理WM_KEYDOWN消息以及WPARAM为VK_SPACE。我有点好奇,所以我打开了Spy++并开始查看发送到我窗口的消息。我注意到,当我按住向左和向上箭头键并按另一个键(比如A)时,WM_KEYDOWN(以及WM_CHAR)消息会发送到我的窗口。但是,如果我按住向上和向左箭头键并按下空格键,则不会向我的窗口发送空格键命中的WM_KEYDOWN消息。这是什么原因?谁能证实这种行为? 最佳答案 发生这种情况是因为您的键盘

windows - npapi 插件如何从浏览器获取 WM_ACTIVATE 消息?

在Windows平台上,当我切换到另一个窗口时,浏览器将收到一条WM_ACTIVATE消息。无论如何将WM_ACTIVATE消息传递给插件?我试过NPP_HandleEvent,但它似乎根本不起作用。 最佳答案 对于WindowsNPP_HandleEvent()仅用于无窗口插件,默认情况下它们是有窗口的。因此,除非您明确选择无窗口,否则这就是NPP_HandleEvent()未被调用的原因。对于窗口插件,您需要子类化插件窗口以接收窗口消息(参见Mozillas测试插件源中的Subclass())。对于无窗口插件(应该是首选),WM

c++ - 当模态对话框处于事件状态时检测主应用程序窗口上的 WM_CLOSE 事件?

当模态对话框处于事件状态时,主应用程序窗口是否可以检测到WM_CLOSE事件?。如果没有,是否有任何方法可以检测到WM_CLOSE事件,因为对话框的事件处理程序也没有检测到它。要亲自观察此行为,请打开记事本的“关于”菜单,然后右键单击任务栏中的记事本图标并选择“关闭窗口”选项,它不会有任何效果。有谁知道在模态窗口处于事件状态时为应用程序捕获WM_CLOSE事件的方法吗? 最佳答案 当通过右键单击任务栏中的应用程序图标选择“关闭”时,不会发送WM_CLOSE。发生的事情是向应用程序的主窗口发送一个WM_SYSCOMMAND,其中wPa

c++ - 监听 WM_SYSCOMMAND 事件

我正在编写一个小的c++程序,它应该对sc_screensaver和sc_monitorpower事件使用react。这应该在后台运行,因此没有gui。因为我还没有使用WindowsAPI的经验,所以我为此苦苦挣扎。A已经在谷歌上搜索了很多,发现了很多我不理解或不起作用的方法。你们中的任何人都可以给我提示吗?我阅读了有关捕获wm_syscommand的内容,但这似乎很困难,因为我没有窗口。 最佳答案 获取消息的唯一方法是通过消息循环和窗口过程。如果您的程序没有可见的图形用户界面,您必须创建一个message-onlywindow为此