SendMessage到TextBox窗口C ++中的Child无法正常工作

时间:2015-04-14 21:38:18

标签: c++ winapi

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

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

1 个答案:

答案 0 :(得分:3)

您无法将PostMessageWM_SETTEXT一起使用。这是一个同步消息。当窗口处于不同的进程时,您的问题会更严重。系统需要将您的流程中的文本编组到另一个流程中。它不能用异步消息做到这一点。

请改用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());