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 个字符。 注意:我正在修改另一个进程的句柄。
最佳答案
您不能将 PostMessage
与 WM_SETTEXT
一起使用。那是一条同步消息。当窗口处于不同的过程中时,您的问题会更大。系统需要将文本从您的进程编码到另一个进程中。它不能用异步消息做到这一点。
改用SendMessage
。
您的其他问题至少包括:
wParam
参数是错误的。该参数被忽略。将(LPARAM)arbc
传递给lParam
。 documentation很清楚。- 在任何情况下都不应该使用 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());
关于c++ - SendMessage 到 C++ 中的 TextBox Window Child 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29637858/