有人可以帮助我如何通过编辑控件或任何其他类型的文本框更新HWND值吗?我尝试了以下
void ChwndtestDlg::OnBnClickedButton1()
{
TCHAR thebuffer[100];
HWND thetext = (HWND)thebuffer;
GetDlgItemText(IDC_EDITWINDOW, thebuffer, 100);
::SendMessage(thetext,WM_SETTEXT,0,(LPARAM)L"hello");
}
但是,这不起作用!我是所有这一切的新手,我将不胜感激任何帮助。请记住,我已经了解了enumwindows,我已经成功地从我的程序中更改了另一个程序中的文本,但我想在编辑控件中实际更新HWND。它应该像这样工作......
程序2的当前hwnd = 0x00000: 打开我的程序 - >开放计划#2 - >在我的程序中输入0x00000到文本框中 - >点击我程序中的按钮来更新hwnd值 - >在我的程序文本编辑器中输入文本 - >文本转到程序2的文本编辑器。我知道还有其他方法可以做到这一点,但我真的想按照我描述的方式去做。提前致谢。我发现了一个类似的问题,但答案是使用enumwindows,但我不想使用它。
答案 0 :(得分:2)
您将TCHAR[]
本身强制转换为HWND
。那永远不会奏效。您需要从编辑控件中提取TCHAR[]
文本,然后使用_stscanf()
或类似的解析函数将该文本值转换为可以强制转换为HWND
的整数,然后分配您的 HWND
的其他文字。
例如:
void ChwndtestDlg::OnBnClickedButton1()
{
CString sWnd;
if (GetDlgItemText(IDC_HWNDEDIT, sWnd) > 0)
{
HWND hWnd;
if (_stscanf((LPTSTR)sWnd, _T("%p"), &hWnd) == 1)
{
CString sText;
GetDlgItemText(IDC_TEXTEDIT, sText);
::SendMessage(hWnd, WM_SETTEXT, 0, (LPARAM)(LPTSTR)sText);
}
}
}