[英]Trying to capture text from an edit box on button click and then display to another edit box
我對Win32 gui編碼非常陌生,並且在捕獲用戶輸入方面遇到了很多困難。
基本上,我想做的是讓用戶在文本框中輸入一些文本(稱為文本框A),單擊按鈕,然后將該文本復制到另一個文本框中(稱為文本框B)。 我正在嘗試使用GetWindowsText()
函數將文本框A中的文本復制到緩沖區,然后單擊該按鈕時,將消息發送到文本框B,將文本設置為等於緩沖區的內容。 簡單吧? ...來自我的回調的代碼是:
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDC_MAIN_BUTTON:
{
GetWindowText(hwnd_path, buffer, 5);
SendMessage(hEdit,WM_SETTEXT,NULL,(LPARAM)buffer);
MessageBox(NULL, buffer, TEXT("Edit Text"), MB_OK);
}
break;
}
break;
hwnd_path是文本框A的句柄,hEdit是文本框B的句柄,並且緩沖區已聲明為: TCHAR buffer[6]
-這些變量已全局聲明,因此它們都應在回調函數的范圍內。 我添加了消息框只是為了仔細檢查緩沖區的值。
問題是單擊該按鈕后,文本框B或消息框中GetWindowText(hwnd_path, buffer, 5)
顯示任何內容-在執行GetWindowText(hwnd_path, buffer, 5)
命令后,緩沖區保持為空。
如果有人可以提供任何建議,我將不勝感激。
插口
使用SetWindowText而不是調用SendMessage。
我懷疑您的hEdit和/或hwnd_path句柄不是您認為的那樣。 在創建它們時,請確保這些HWND變量實際上引用了您的編輯和文本控件句柄。
不要期望在調用“ MessageBox”后對話框立即更新。 SetWindowText API可能需要一些內部消息才能完成。 MessageBox確實在內部泵送消息,因此這可能沒問題。
這是一些有效的示例代碼。 它是在DialogBox wndproc中編寫的。 如果在對話框中,請將對GetDlgItem的兩個調用替換為創建編輯和文本字段時返回的窗口句柄的分配。
case WM_COMMAND:
{
switch LOWORD(wParam)
{
case IDC_BUTTON1:
{
wchar_t szEditText[300] = {0};
// If you aren't using DialogBox(), then replace these apis by assigneing hEdit and hText with the HANDLES of your created controls.
HWND hEdit = GetDlgItem(hwnd, IDC_EDIT1);
HWND hText = GetDlgItem(hwnd, IDC_TEXT1);
GetWindowText(hEdit, szEditText, ARRAYSIZE(szEditText));
SetWindowText(hText, szEditText);
// If this Window was created with DialogBox, then return TRUE
// Otherwise, return 0.
return TRUE;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.