我使用 Win32 API 创建了一个窗口,带有一个绘制的文本和一个按钮。如果按钮被按下,它将被删除,并且文本应该被一个填充的矩形覆盖。
按钮消失效果很好,但是矩形的位置就是按钮的位置。无论我是否更改以下值:
RECT rect = { 50, 120, 450, 15 };
LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uiMessage, WPARAM wParam, LPARAM lParam)
{
static HWND hWndButton;
static HWND hWndEditBox;
switch (uiMessage)
{
case WM_CREATE:
hWndButton = CreateWindow(TEXT("BUTTON"), TEXT("Los geht's !"),
WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON,
240, 50, 120, 40, hWnd,
reinterpret_cast<HMENU>(BTN_MAIN_BUTTON_ID),
reinterpret_cast<HINSTANCE>(GetWindowLongPtr(hWnd, GWL_HINSTANCE)),
NULL);
return (0);
case WM_PAINT: {
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
SetBkMode(hdc, TRANSPARENT);
SetTextColor(hdc, RGB(0, 0, 0));
SetTextAlign(hdc, TA_CENTER);
TextOut(hdc, 300, 10, TEXT("Bitte legen Sie ihr Mitarbeiterprofil an."), lstrlen(TEXT("Bitte legen Sie ihr Mitarbeiterprofil an.")));
EndPaint(hWnd, &ps);
return (0); }
case WM_COMMAND:
if (wParam == BTN_MAIN_BUTTON_ID)
{
DestroyWindow(hWndButton);
PAINTSTRUCT ps2;
HDC hdc = BeginPaint(hWnd, &ps2);
RECT rect = { 50, 120, 450, 15 };
HBRUSH brush = CreateSolidBrush(RGB(50, 151, 151));
GetClientRect(hWnd, &rect);
FillRect(hdc, &rect, brush);
DeleteObject(brush);
EndPaint(hWnd, &ps2);
int i;
char string[20];
for (i = 0; i< profilEinheiten; i++)
{
hWndEditBox = CreateWindow(
TEXT("EDIT"), TEXT("Edit Boxes"),
WS_VISIBLE | WS_CHILD,
100, 40+(20*i), 100, 15, hWnd,
(HMENU)IDC_EDITBOX_TEXT,
(HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE),
NULL);
}
return (0);
break;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
return (0);
}
return (DefWindowProc(hWnd, uiMessage, wParam, lParam));
}