检查以下原因:
编辑控件的风格设置不正确。如果控件的风格设置为ES_AUTOHSCROLL或ES_AUTOVSCROLL,则它将只显示文本的一部分,并且数据将无法保存。尝试将风格设置为ES_MULTILINE和ES_WANTRETURN之一。
控件未处理WM_KILLFOCUS消息。当用户离开控件时,它应该处理该消息并将数据保存到变量中。您可以通过在控件的父窗口中添加以下代码来完成此操作:
LRESULT CALLBACK EditWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData)
{
switch (uMsg)
{
case WM_KILLFOCUS:
// Save data to variable
break;
}
return DefSubclassProc(hWnd, uMsg, wParam, lParam);
}
SetWindowSubclass(hwndEdit, EditWindowProc, 0, 0);
HWND hwndEdit = CreateWindowEx(0, "EDIT", "",
WS_CHILD|WS_VISIBLE|ES_MULTILINE|ES_WANTRETURN,
0, 0, 100, 100, hWnd, NULL, hInst, NULL);
int nValue = 0;
SetWindowLongPtr(hwndEdit, GWLP_USERDATA, (LONG_PTR)&nValue);
// Save data to variable
nValue = GetWindowText(hwndEdit, szBuffer, nLength);