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个字符。 注意:我正在修改另一个进程的句柄。
答案 0 :(得分:3)
您无法将PostMessage
与WM_SETTEXT
一起使用。这是一个同步消息。当窗口处于不同的进程时,您的问题会更严重。系统需要将您的流程中的文本编组到另一个流程中。它不能用异步消息做到这一点。
请改用SendMessage
。
您的其他问题至少包括以下内容:
wParam
参数错误。该参数被忽略。将(LPARAM)arbc
传递给lParam
。 documentation非常明确。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());