visual c++ 6.0画圆移动
时间: 2023-08-23 17:05:44 浏览: 179
visual c++6.0 画画板
5星 · 资源好评率100%
以下是在 Visual C++ 6.0 中使用 MFC 库绘制并移动圆的示例代码:
1. 首先创建一个 MFC 应用程序项目,选择单文档类型。
2. 在 View 类的头文件中定义一个变量来存储圆的位置和半径:
```cpp
class CMyView : public CView
{
// ...
private:
int m_nX, m_nY; // 圆心坐标
int m_nRadius; // 圆半径
};
```
3. 在 View 类的构造函数中初始化这些变量:
```cpp
CMyView::CMyView()
{
// 初始化圆的位置和半径
m_nX = 100;
m_nY = 100;
m_nRadius = 30;
}
```
4. 在 View 类的 OnDraw 函数中绘制圆:
```cpp
void CMyView::OnDraw(CDC* pDC)
{
CBrush brush(RGB(255, 0, 0)); // 红色画刷
CBrush* pOldBrush = pDC->SelectObject(&brush);
pDC->Ellipse(m_nX - m_nRadius, m_nY - m_nRadius,
m_nX + m_nRadius, m_nY + m_nRadius);
pDC->SelectObject(pOldBrush);
}
```
5. 在 View 类的 OnTimer 函数中更新圆的位置并调用 Invalidate 函数刷新窗口:
```cpp
void CMyView::OnTimer(UINT nIDEvent)
{
// 移动圆的位置
m_nX += 5;
m_nY += 5;
// 判断是否超出窗口边界
CRect rect;
GetClientRect(&rect);
if (m_nX + m_nRadius > rect.right)
m_nX = rect.right - m_nRadius;
if (m_nY + m_nRadius > rect.bottom)
m_nY = rect.bottom - m_nRadius;
Invalidate(FALSE);
CView::OnTimer(nIDEvent);
}
```
6. 在 View 类的 OnInitialUpdate 函数中启动定时器:
```cpp
void CMyView::OnInitialUpdate()
{
CView::OnInitialUpdate();
SetTimer(1, 50, NULL);
}
```
7. 在 MainFrame 类的 OnCreate 函数中调用 EnableDocking 函数和相关的 DockControlBar 函数,以便在窗口底部添加一个状态栏:
```cpp
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
// ...
// 启用停靠
EnableDocking(CBRS_ALIGN_ANY);
// 创建状态栏
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // 未能创建
}
// 将状态栏停靠在窗口底部
m_wndStatusBar.EnableDocking(CBRS_ALIGN_BOTTOM);
DockControlBar(&m_wndStatusBar);
// ...
}
```
8. 在资源编辑器中打开状态栏的属性对话框,将 Style 属性设置为 1,表示自适应大小。
现在你可以运行应用程序,你将看到一个红色的圆在窗口中移动,并且状态栏将显示当前圆的位置。
阅读全文