Visual c++ 无法执行SendMessage()?

Visual c++ 无法执行SendMessage()?,visual-c++,mfc,Visual C++,Mfc,当我执行时: SendMessage(hMsgBox, WM_COMMAND, IDOK, NULL) 它总是转到ANSI并告诉错误: error C2660: 'SendMessageA' : function does not take 4 parameters. 为什么不使用UNICODE 这是我的实际代码 MessageBox("Plsease wait..","Wait",0); HWND hMsgBox = NULL; hMsgBox =

当我执行时:

SendMessage(hMsgBox, WM_COMMAND, IDOK, NULL)
它总是转到ANSI并告诉错误:

error C2660: 'SendMessageA' : function does not take 4 parameters. 
为什么不使用UNICODE

这是我的实际代码

MessageBox("Plsease wait..","Wait",0);



        HWND hMsgBox = NULL;
        hMsgBox = (HWND)FindWindow("#32270", "Wait");
        if (hMsgBox != NULL)
        {
             SendMessage(hMsgBox, WM_COMMAND, IDOK, NULL);
        }

您必须使用::like作为SendMessage的前缀,以便不调用当前类的(CWnd)SendMessage

::SendMessage(hMsgBox, WM_COMMAND, IDOK, NULL);

另外,您必须在编译器选项中定义UNICODE预处理器标志,以便它采用UNICODE版本。

您是否包括Winuser.h?您可以分享简单的代码来重现此错误吗?这只是在尝试重新启动打印假脱机服务之前显示一个消息框,而不是在重新启动打印假脱机服务时显示一个消息框。@ta.speot.is您的答案与OP的问题不匹配。@gots这不是答案。我要指出的是,该代码无法工作。是同步的。+1但是这样做没有意义,
MessageBox
同步执行,当我们到达
FindWindow(…,“Wait”)
时,它已经关闭了。这个问题与您的多个疑问不符。根据您的代码,看起来您必须使用多线程。或者至少你必须在这里使用一个无模式对话框。有任何其他方法可以做到这一点,但我希望完全一样。