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 个字符。
注意:我正在修改另一个进程的句柄。
您不能将 PostMessage
与 WM_SETTEXT
一起使用。那是一条同步消息。当 window 处于不同的进程中时,您的问题会更大。系统需要将文本从您的进程编组到另一个进程中。它不能用异步消息做到这一点。
改用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());
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 个字符。 注意:我正在修改另一个进程的句柄。
您不能将 PostMessage
与 WM_SETTEXT
一起使用。那是一条同步消息。当 window 处于不同的进程中时,您的问题会更大。系统需要将文本从您的进程编组到另一个进程中。它不能用异步消息做到这一点。
改用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());