[英]How could I handle a Window's Message?
我正在处理一些CreateWindow
事情。 我的工作需要将一个按钮插入到应用程序的窗口之一中,当我单击该按钮时,我的应用程序可以执行某些操作。 该应用程序不是我的应用程序,所以我认为我需要做一些“钩子”。 我试过这个:
HWND hwnd = FindWindowEx("className",NULL)
CreateWindowEx(...hwnd...)
它的工作。 按钮成功插入目标应用程序。
但是当我尝试处理该窗口的消息时,我失败了。 这个hwnd
属于我的应用程序hInstance
,但我的应用程序有自己的 CEF 消息循环。 我试过SetWindowsHookEx
,但它不起作用。 无论我做什么,它都不会处理。 如果我使用while(GetMessage (&messages, NULL, 0, 0))
,它将阻塞我的应用程序线程
WNDCLASS xxx
和RegisterClass(xxx)
或CreateWindow(className)
让我感到困惑。
我尝试使用LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
但while()
会阻塞我的应用程序的线程,并且在我的应用程序的wndProc
,没有WM_COMMAND
消息。
HWND hwnd = FindWindowEx(0, 0, L"TCustomBaseForm" , NULL);
HWND hwndButton = CreateWindowEx(0L,_T("Button"), L"Btn", WS_CHILD|WS_VISIBLE| BS_PUSHBUTTON, 435, 45, 35, 45, hwnd, NULL, GetModuleHandle(0), 0);
DWORD dwProcId = 0;
DWORD dwThreadId = 0;
dwThreadId = GetWindowThreadProcessId(hwndButton, &dwProcId);
SetWindowsHookEx(WH_MOUSE, Hookproc, g_hInstance, dwProcId);
直到现在,我的“插入按钮”从未起作用。 那么,有没有办法让这个“插入的窗口”或按钮与 MFC 按钮相同,当我点击它时,我可以在我的WndProc
处理像WM_LBUTTONCLICK
这样的消息?
单击按钮时,按钮会向其父窗口发送WM_COMMAND
消息。
至少有两种方法可以在不挂钩的情况下处理此问题:
STATIC
控件(或自定义窗口)的子项。 您需要子类的STATIC
控制接收消息。谢谢你们。 我做到了。
我创建了一个带有按钮的窗口。 我使用SetParent(myWindowHwnd,myTargetWindowHwnd)
并在我的窗口中处理按钮的单击事件,它可以工作。
没有钩子,没有问题。 非常感谢大家。 感谢您编辑我的问题,因为我的英语很糟糕。
我学到了很多关于 Windows Hook 的知识。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.