谁能帮助我如何通过编辑控件或任何其他类型的文本框更新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
的整数,然后将其他文本分配给该根据需要。
例如:
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);
}
}
}
关于c++ - C++ MFC:通过控制盒更新HWND,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21167572/