C++ 如何将windows消息发送到MessageBox

C++ 如何将windows消息发送到MessageBox,c++,winapi,C++,Winapi,我正在寻找一种像窗口一样操作MessageBox的方法,我是否必须实际使用CreateWindowEx并制作一个小窗口,以获得窗口的全部功能,包括使用WM_GETTEXT和WM_SETTEXT之类的东西,或者有什么方法可以将这些消息发送到MessageBox?如果我绝对不能将windows消息发送到MessageBox,那么有没有比使用CreateWindowEx更简单的替代方法来完成我所寻找的任务?在调用MessageBox()获取其窗口句柄时使用线程本地WH\u CBT钩子。然后,您可以像其

我正在寻找一种像窗口一样操作MessageBox的方法,我是否必须实际使用
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一样。然后你可以发送(和处理)任何你想要的信息。