C++ 在windows c++;应用程序
我正在编写一些代码,希望能够处理任何窗口,例如通过WindowsAPI、MFC、wxWidgets等创建的窗口 问题是,对于某些事情,我需要使用创建窗口的同一线程,在许多情况下,它只是位于消息循环中 我的第一个想法是向窗口发送一条回调消息,当它使用某个参数和某种函数指针接收到消息时,窗口将调用代码中的函数。但是,似乎没有标准的windows消息来执行此操作,而且我无法创建自己的消息,因为我无法控制windows代码,因此无法将所需的代码添加到消息处理程序以实现回调 有没有其他方法可以让创建窗口的线程进入我的函数 编辑: John Z建议我挂上windows消息。如果我这样做,是否有某种方法可以获取自定义消息的“ID”,而不会与窗口中已有的任何自定义消息发生冲突 我可能会的C++ 在windows c++;应用程序,c++,windows,C++,Windows,我正在编写一些代码,希望能够处理任何窗口,例如通过WindowsAPI、MFC、wxWidgets等创建的窗口 问题是,对于某些事情,我需要使用创建窗口的同一线程,在许多情况下,它只是位于消息循环中 我的第一个想法是向窗口发送一条回调消息,当它使用某个参数和某种函数指针接收到消息时,窗口将调用代码中的函数。但是,似乎没有标准的windows消息来执行此操作,而且我无法创建自己的消息,因为我无法控制windows代码,因此无法将所需的代码添加到消息处理程序以实现回调 有没有其他方法可以让创建窗口的
WM_CALLBACK = WM_APP+1
但是如果我挂的窗口已经用WM_APP+1做了一些事情,我会遇到问题
编辑2:
刚找到RegisterWindowMessage:)如果您与窗口处于同一进程中,则可以通过对其子类化来钩住其消息。退房 关键API是SetWindowLong
// Subclass the edit control.
wpOrigEditProc = (WNDPROC) SetWindowLong(hwndEdit, GWL_WNDPROC, (LONG)EditSubclassProc);
// Remove the subclass from the edit control.
SetWindowLong(hwndEdit, GWL_WNDPROC, (LONG)wpOrigEditProc);
除了子类化之外,还可以使用调用窗口线程中的函数
VOID CALLBACK Function(
HWND hwnd,
UINT uMsg,
UINT_PTR idEvent,
DWORD dwTime
)
{
// stuff
}
SetTimer(hWnd, event, 0, Function);