mfc作业单文档程序画矩形直线作业

本次作业参考了此作者,感谢其分享
https://blog.csdn.net/XTAOTWO/article/details/83421023?utm_source=app
代码如下:
框架类:

void CMainFrame::OnUpdateLine(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetCheck(0);
	if (type == 1)
	{
		pCmdUI->SetCheck(1);
		pCmdUI->Enable(FALSE);
	}
}


void CMainFrame::OnLine()
{
	// TODO: 在此添加命令处理程序代码
	MessageBox(_T("你选择了划线操作"));
	type = 1;
}


void CMainFrame::OnRectangle()
{
	// TODO: 在此添加命令处理程序代码
	type = 2;
}


void CMainFrame::OnPoint()
{
	// TODO: 在此添加命令处理程序代码
	type = 3;
}


void CMainFrame::OnUpdateRect(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetCheck(0);
	if (type == 2)
	{
		pCmdUI->SetCheck(1);
		pCmdUI->Enable(FALSE);
	}
}


void CMainFrame::OnUpdatePoint(CCmdUI *pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	pCmdUI->SetCheck(0);
	if (type == 3)
	{
		pCmdUI->SetCheck(1);
		pCmdUI->Enable(FALSE);
	}
}

视图类

int a = 0;
void CMFCApplication5View::OnDrawLine()
{
	// TODO: 在此添加命令处理程序代码
	//构造一个DC,传入当前对象.表示在当前对象使用.

	/*CClientDC dc(this);

	//创建一个画笔.(线的类型, 宽度, 颜色);

	CPen pen(PS_SOLID, 1, RGB(255, 0, 255));

	//把画笔选到设置描述表当中.覆盖默认画笔.

	dc.SelectObject(&pen);

	//画直线.

	dc.MoveTo(100, 50);

	dc.LineTo(200, 200);

	//MoveTo() 函数传入的是直线起点的坐标

	//LineTo() 函数传入的参数是直线中点的坐标  */
	a = 1;
}


void CMFCApplication5View::OnDrawRectangle()
{
	/* // TODO: 在此添加命令处理程序代码
	//构造一个DC,传入当前对象.表示在当前对象使用.

	CClientDC dc(this);

	//创建一个画笔.(线的类型, 宽度, 颜色);

	CPen pen(PS_SOLID, 1, RGB(255, 0, 255));

	//把画笔选到设置描述表当中.覆盖默认画笔.

	dc.SelectObject(&pen);

	//创建透明画刷,填充矩形内部

	CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));

	//将画刷加入设置描述表
	dc.SelectObject(pBrush);

	//画矩形,传入一个矩形对象,分别为左上右下的边界范围
	dc.Rectangle(CRect(200, 200, 300, 300));

	dc.LineTo(200, 200);

	//MoveTo() 函数传入的是直线起点的坐标

	//LineTo() 函数传入的参数是直线中点的坐标  */
	a = 2;

}


void CMFCApplication5View::OnDrawPoint()
{
	// TODO: 在此添加命令处理程序代码
	/*
	CClientDC dc(this);
	dc.SetPixel(50, 50, RGB(255, 0, 255));*/
	a = 3;

}


void CMFCApplication5View::OnLButtonDown(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	spoint = point;
	CView::OnLButtonDown(nFlags, point);
}


void CMFCApplication5View::OnLButtonUp(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值


	epoint = point;
	CClientDC dc(this);
	CPen pen(PS_SOLID, 4, RGB(255, 0, 255));
	CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));

	switch (a)
	{
	case(1):
		CView::OnLButtonUp(nFlags, point);


		dc.SelectObject(&pen);

		//画直线.

		dc.MoveTo(spoint);

		dc.LineTo(epoint);
		break;
	case(2):
		dc.SelectObject(&pen);

		//创建透明画刷,填充矩形内部

		//将画刷加入设置描述表
		dc.SelectObject(pBrush);

		//画矩形,传入一个矩形对象,分别为左上右下的边界范围
		dc.Rectangle(CRect(spoint, epoint));
		break;
	case(3):
		CView::OnLButtonDown(nFlags, spoint);
		break;
	}
}

运行后
mfc作业单文档程序画矩形直线作业_第1张图片
没有出现理想中的复选框,及当前不可选状态。
mfc作业单文档程序画矩形直线作业_第2张图片
mfc作业单文档程序画矩形直线作业_第3张图片
还是没弄懂如何出现复选框。。。

你可能感兴趣的:(mfc作业单文档程序画矩形直线作业)