vs2019用mfc单个文档绘制简单图形
时间: 2023-11-20 20:05:33 浏览: 227
以下是一个简单的绘制矩形的例子:
1. 创建一个 MFC 单文档应用程序。
2. 打开 `Doc.cpp`,在 `CDoc` 类的 `Serialize` 函数中添加以下代码:
```cpp
void CDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
}
else
{
// TODO: add loading code here
}
}
```
3. 打开 `View.cpp`,找到 `CView` 类的 `OnDraw` 函数。在函数中添加以下代码:
```cpp
void CView::OnDraw(CDC* pDC)
{
CDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// 绘制矩形
CRect rect(100, 100, 200, 200);
pDC->Rectangle(rect);
}
```
4. 运行程序,可以看到一个绘制了矩形的窗口。
注意:这只是一个简单的例子,实际上你可以使用 MFC 提供的各种图形绘制函数来绘制更复杂的图形。
相关问题
MFC单个文档添加鼠标点击操作步骤
添加鼠标点击操作步骤可以通过以下步骤实现:
1. 在你的 MFC 文档类中添加一个成员变量,用于保存鼠标点击的位置信息。例如:
```
CPoint m_ptClick;
```
2. 在你的 MFC 文档类中覆盖 OnLButtonDown 函数,获取当前鼠标点击的位置信息,并保存到 m_ptClick 成员变量中。例如:
```
void CMyDoc::OnLButtonDown(UINT nFlags, CPoint point)
{
m_ptClick = point;
}
```
3. 在你的 MFC 视图类中覆盖 OnDraw 函数,根据鼠标点击的位置信息绘制一些图形或者文本。例如:
```
void CMyView::OnDraw(CDC* pDC)
{
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// 绘制一些图形或者文本
pDC->TextOut(pDoc->m_ptClick.x, pDoc->m_ptClick.y, _T("Hello, world!"));
}
```
4. 在你的 MFC 视图类中添加一个成员变量,用于保存鼠标点击操作是否启用的状态。例如:
```
bool m_bClickEnabled = false;
```
5. 在你的 MFC 视图类中覆盖 OnUpdate 函数,根据当前文档的状态更新鼠标点击操作是否启用的状态。例如:
```
void CMyView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// 更新鼠标点击操作是否启用的状态
m_bClickEnabled = (pDoc->GetState() == STATE_CLICK_ENABLED);
// 刷新视图
Invalidate();
}
```
6. 在你的 MFC 视图类中覆盖 OnMouseMove 函数,根据鼠标点击操作是否启用的状态更新视图。例如:
```
void CMyView::OnMouseMove(UINT nFlags, CPoint point)
{
// 如果鼠标点击操作已启用,则更新视图
if (m_bClickEnabled)
{
Invalidate();
}
}
```
7. 最后,在你的 MFC 应用程序中添加一个菜单项或者工具栏按钮,用于控制鼠标点击操作的启用和禁用。当用户点击该菜单项或者工具栏按钮时,修改当前文档的状态,以便在下一次更新视图时启用或者禁用鼠标点击操作。例如:
```
void CMyApp::OnEnableClick()
{
CMyDoc* pDoc = GetActiveDocument();
ASSERT_VALID(pDoc);
// 修改文档状态,以便在下一次更新视图时启用鼠标点击操作
pDoc->SetState(STATE_CLICK_ENABLED);
}
```
以上就是 MFC 单个文档添加鼠标点击操作的步骤。希望对你有所帮助!
阅读全文