gpt4 book ai didi

时间:2018-01-08 标签:c++mfc: update HWND through a control box

转载 作者:行者123 更新时间:2023-11-28 02:59:34 25 4
gpt4 key购买 nike

谁能帮助我如何通过编辑控件或任何其他类型的文本框更新 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,但我不想使用它。

最佳答案

您正在将 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);
}
}
}

关于时间:2018-01-08 标签:c++mfc: update HWND through a control box,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21167572/

25 4 0