谁能帮助我如何通过编辑控件或任何其他类型的文本框更新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/

10-11 23:16
查看更多