用户区中央显示一个圆(大小自定),然后 a. 按键盘上的方向键,正方形能够按方向键的指示相应移动,大小不变。 b. 按键盘上的 b键,正方形涂黑,再按一下b键,正方形又切换为白色填充。如此,可以利用b键正方形可以在黑白两色间切换(要求在WM_CHAR消息中对b键进行相应,即在case WM_CHAR: if(wParam == ‘b’) …… )
时间: 2023-05-24 14:01:53 浏览: 187
mfc.rar_MFC 方向键_mfc 随机大小的正方形
可以利用以下代码实现:
// 定义方形的位置、大小、颜色以及移动速度
int squareX = 100;
int squareY = 100;
int squareSize = 50;
bool squareIsBlack = false;
int squareSpeed = 5;
// 在 WM_PAINT 消息中绘制圆和方形
case WM_PAINT:
{
HDC hdc;
PAINTSTRUCT ps;
hdc = BeginPaint(hWnd, &ps);
Ellipse(hdc, 200, 200, 300, 300);
HBRUSH brush = CreateSolidBrush(squareIsBlack ? RGB(0, 0, 0) : RGB(255, 255, 255));
HBRUSH oldBrush = (HBRUSH)SelectObject(hdc, brush);
Rectangle(hdc, squareX, squareY, squareX + squareSize, squareY + squareSize);
SelectObject(hdc, oldBrush);
DeleteObject(brush);
EndPaint(hWnd, &ps);
break;
}
// 在 WM_CHAR 消息中处理按键事件
case WM_CHAR:
{
if (wParam == 'b') {
squareIsBlack = !squareIsBlack; // 切换方形的颜色
InvalidateRect(hWnd, NULL, true); // 重新绘制窗口以显示颜色更新后的方形
}
break;
}
// 在 WM_KEYDOWN 消息中处理方向键事件
case WM_KEYDOWN:
{
switch (wParam) {
case VK_UP:
squareY -= squareSpeed; // 向上移动
break;
case VK_DOWN:
squareY += squareSpeed; // 向下移动
break;
case VK_LEFT:
squareX -= squareSpeed; // 向左移动
break;
case VK_RIGHT:
squareX += squareSpeed; // 向右移动
break;
default:
break;
}
InvalidateRect(hWnd, NULL, true); // 重新绘制窗口以显示方形的位置更新
break;
}
阅读全文