SendMessage to TextBox Window C++ 中的 Child 不工作

SendMessage to TextBox Window Child in C++ not working

char arbc[60];
cout << "Message: ";
cin.getline(arbc+'[=11=]',sizeof(arbc)+1);
system("pause");
PostMessage(hwndch,WM_SETTEXT,(WPARAM)*arbc,0);

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

您不能将 PostMessageWM_SETTEXT 一起使用。那是一条同步消息。当 window 处于不同的进程中时,您的问题会更大。系统需要将文本从您的进程编组到另一个进程中。它不能用异步消息做到这一点。

改用SendMessage

您的其他问题至少包括以下几点:

  • wParam的说法是错误的。该参数被忽略。而是将 (LPARAM)arbc 传递给 lParamdocumentation 说的很清楚了。
  • 在任何情况下都不应使用 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());