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;
	}
}

运行后
在这里插入图片描述
没有出现理想中的复选框,及当前不可选状态。
在这里插入图片描述
在这里插入图片描述
还是没弄懂如何出现复选框。。。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值