将消息发送到文本框窗口子级C++不起作用

SendMessage to TextBox Window Child in C++ not working

本文关键字:窗口 C++ 不起作用 文本 消息      更新时间:2023-10-16
char arbc[60];
cout << "Message: ";
cin.getline(arbc+'',sizeof(arbc)+1);
system("pause");
PostMessage(hwndch,WM_SETTEXT,(WPARAM)*arbc,0);

所以hwndch是一个窗口子项,子项是一个文本框,它的父项是主窗口窗体。问题是WM_SETTEXT没有将文本框的文本设置为字符串。我知道这不是窗子的问题,因为WM_CHAR文本框中至少输出 1 个字符。注意:我正在修改另一个进程的句柄。

不能将PostMessageWM_SETTEXT一起使用。这是一个同步消息。当窗口处于不同的进程中时,您的问题甚至更大。系统需要将流程中的文本封送到另一个流程中。它不能使用异步消息执行此操作。

请改用SendMessage

您的其他问题至少包括以下内容:

  • wParam论点是错误的。该参数将被忽略。改为将(LPARAM)arbc传递给lParam。文档非常清楚。
  • 在任何情况下都不应使用 C 字符串。使用 std::string ,然后c_str()
  • 你对sizeof的使用是错误的。你对getline的使用也是错误的。
  • 您似乎对调用哪个函数感到困惑。标题说SendMessage,代码说PostMessage

您可能想要以下内容:

std::cout << "Message: ";
std::string msg;
std::getline(std::cin, msg);
SendMessage(hwndch, WM_SETTEXT, 0, (LPARAM)msg.c_str());