2014-01-16 84 views
0

任何人都可以幫助我如何通過編輯控件或任何其他類型的文本框更新HWND值嗎?我試過以下C++ mfc:通過控制箱更新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 value - >在我的程序中輸入文本文本編輯器 - >文本進入程序2的文本編輯器。我知道還有其他方法可以做到這一點,但我真的很想按照我所描述的方式來做。提前致謝。我發現了一個類似的問題,但答案是使用enumwindows,但我不想使用它。

回答

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); 
     } 
    } 
} 
+0

唉唉這是太棒了!非常感謝你。 – user3116155