繁体   English   中英

我如何处理窗口的消息?

[英]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 xxxRegisterClass(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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM