从编辑控件中获取文本

时间:2011-04-16 23:22:57

标签: winapi

我试过了:

int editlength;
int buttonid = 3324; // id to button, the numbers dont mean anything
int editid = 5652; // id to edit

LPTSTR  edittxt;

HWND button; // created in wWinmain as a button
HWND edit; // created in wWinMain as an edit control

// LRESULT CALLBACK WindowProc

switch(uMsg)
{
    case WM_COMMAND:
        if(wParam == buttonid)
        {
            filedit = GetDlgItem(hwnd, editid); // I tried with and without this
            editlength = GetWindowTextLength(filedit);
            GetWindowText(filedit, edittxt, editlength);

            MessageBox(hwnd, edittxt, L"edit text", 0);
        }
        break;
}

但是我没有在消息框中看到任何文字。

2 个答案:

答案 0 :(得分:14)

GetWindowText()的最后一个参数是缓冲区的大小。由于您将其设置为字符串的长度,因此您告诉函数您的缓冲区太小,因为空终止符没有空间。没有任何东西被复制。

此外,您必须已分配缓冲区以保存文本副本。 edittxt指向什么?我甚至没有看到你在哪里初始化它。

正确使用看起来像这样:

TCHAR buff[1024];
GetWindowText(hWndCtrl, buff, 1024);

答案 1 :(得分:5)

edittxt需要是一个指向获取文本的缓冲区的指针..所以试试这个...

char txt[1024];
....
GetWindowText(filedit, txt, sizeof(txt));

你可能需要调整unicode ..对不起它已经有一段时间了,因为我做了原始win32。