C++ 如何将windows消息发送到MessageBox
我正在寻找一种像窗口一样操作MessageBox的方法,我是否必须实际使用C++ 如何将windows消息发送到MessageBox,c++,winapi,C++,Winapi,我正在寻找一种像窗口一样操作MessageBox的方法,我是否必须实际使用CreateWindowEx并制作一个小窗口,以获得窗口的全部功能,包括使用WM_GETTEXT和WM_SETTEXT之类的东西,或者有什么方法可以将这些消息发送到MessageBox?如果我绝对不能将windows消息发送到MessageBox,那么有没有比使用CreateWindowEx更简单的替代方法来完成我所寻找的任务?在调用MessageBox()获取其窗口句柄时使用线程本地WH\u CBT钩子。然后,您可以像其
CreateWindowEx
并制作一个小窗口,以获得窗口的全部功能,包括使用WM_GETTEXT
和WM_SETTEXT
之类的东西,或者有什么方法可以将这些消息发送到MessageBox?如果我绝对不能将windows消息发送到MessageBox,那么有没有比使用CreateWindowEx
更简单的替代方法来完成我所寻找的任务?在调用MessageBox()
获取其窗口句柄时使用线程本地WH\u CBT
钩子。然后,您可以像其他窗口一样向它发送消息
// if you need to customize MessageBox() across threads,
// store this variable in a TLS (thread-local storage) slot...
HHOOK hHook;
LRESULT CALLBACK MyCBTHook(int nCode, WPARAM wParam, LPARAM lParam)
{
switch (nCode)
{
case HCBT_CREATEWND: // window is being created
case HCBT_ACTIVATE: // window is being activated
{
HWND hWnd = (HWND) wParam;
// use hWnd as needed...
break;
}
}
return CallNextHookEx(hHook);
}
int MyMessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType)
{
hHook = SetWindowsHookEx(WH_CBT, (HOOKPROC)&MyCBTHook, NULL, GetCurrentThreadId());
int iResult = MyMessageBox(hWnd, lpText, lpCaption, uType);
UnhookWindowsHookEx(hHook);
return iResult;
}
我要把它寄到什么地方?如何获得MessageBox的句柄?我以为messagebox是一个int,那么我能把它转换成hwnd吗挂起
消息框
,对其进行更改/修改;另请参见获得任何其他窗口句柄的相同方式Findwindowe
,FindWindowEx
,一个CBT钩子…@user1958850,对于前两个,无法判断它选择了哪一个。通过挂接您自己的应用程序,您可以在每次创建应用程序时获得正确的句柄。为什么不在RC文件中使用您自己的对话框模板呢。然后使用DialogBox()API以模块方式启动—就像MessageBox一样。然后你可以发送(和处理)任何你想要的信息。