需要通过 EDIT 字段进行数据输入。我自己实现了输入字段,它仍然以某种方式保存在此字段中键入的文本。我已经“打破”了我的头,它不起作用!
我试图将文本保存到一个数组中,然后通过MessageBox. 将显示一个空窗口。
这是徒劳的尝试:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
HWND hed;
int len;
TCHAR* buff;
RECT screen_rect;
GetWindowRect(GetDesktopWindow(), &screen_rect); // разрешение экрана
int x1 = screen_rect.right / 2 - 300;
int y1 = screen_rect.bottom / 2 - 75;
switch (message)
{
case WM_CREATE:
hed = CreateWindow(TEXT("edit"), TEXT(""),
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_RIGHT, 50, 50, 500, 20,
hWnd, NULL, NULL, NULL);
len = GetWindowTextLength(hed) + 1;
buff = new TCHAR[len];
len = GetWindowText(hed, buff, len);
buff[len] = 0;
MessageBox(hWnd, buff, TEXT("text"), MB_OKCANCEL | MB_ICONEXCLAMATION);
delete[] buff;
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
break;
}
创建后立即显示一个带有文本的对话框
EDIT。您遇到的另一个小问题是,当您编写 line 时
buff[len] = 0,您超出了数组的限制。需要写buff[len - 1] = 0我还要马上说,如果你在函数中
WndProc留下一个变量hed,那么你需要把它变成静态的。可以通过多种方式保存文本。例如:
在静态窗口中显示文本
STATIC我们将
STATIC在更改文本时设置文本EDIT,为此我们需要捕获相应的消息WM_COMMAND例如像这样:
并且
MessageBox您可以在单击按钮时显示,为此您还需要捕获按钮单击事件。例如像这样:
这是整个函数的示例
WndProc:结果,我们有
BUTTON和。当我们在 中写入内容时,会在 中显示相同的文本。当您单击按钮时,来自.EDITSTATICEDITSTATICEDIT