从0开始创建一个MFC单文档工程

MFC单文档快速入门教程

开发环境 win7+vs2019

如何创建一个新的MFC单文档项目

从0开始创建一个MFC单文档工程_第1张图片
从0开始创建一个MFC单文档工程_第2张图片
从0开始创建一个MFC单文档工程_第3张图片

如何创建菜单添加点击事件

创建菜单我的->测试的菜单
从0开始创建一个MFC单文档工程_第4张图片

修改测试的菜单ID为ID_MY_TEST如下
从0开始创建一个MFC单文档工程_第5张图片
为菜单添加事件,选择菜->右键->添加事件处理
从0开始创建一个MFC单文档工程_第6张图片

添加如下代码

void COcctMFCView::OnMyTest()
{
	// TODO: 在此添加命令处理程序代码
	MessageBox((LPCTSTR)"1");
}

F5运行一下,点击 我的->测试的菜单,弹出1,如下图
从0开始创建一个MFC单文档工程_第7张图片

如何创建一个新的对话框

创建一个自定义的弹框。在资源视图下,选择Dialog右键,创建一个Dialog
从0开始创建一个MFC单文档工程_第8张图片
在中间的Dialog窗口,点击右键,添加MFC类,输入如下内容
从0开始创建一个MFC单文档工程_第9张图片
进入资源视图,创建一个新的菜单如下图
从0开始创建一个MFC单文档工程_第10张图片
添加事件,注意选择的类应为CxxxxxView
从0开始创建一个MFC单文档工程_第11张图片
接着,在cpp顶部,引入刚才创建的对话框类,如下

#include "TestDialog.h" // 添加这个

然后在事件中,添加代码创建弹框

void COcctMFCView::On32773()
{
	// TODO: 在此添加命令处理程序代码
	TestDialog dlg;
	dlg.DoModal();
}

F5运行,点击我的->弹框测试 ,弹出如下内容
从0开始创建一个MFC单文档工程_第12张图片

获取文本控件内容

继续设计一个如下界面,实现点击Button1时,可以弹出一个消息框,消息框内显示文本框的内容

从0开始创建一个MFC单文档工程_第13张图片
双击按钮,添加事件

void TestDialog::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	CString tmpStr;
	GetDlgItem(IDC_EDIT1)->GetWindowTextW(tmpStr);  // IDC_EDIT1为文本输入框的ID
	MessageBox(tmpStr);
}

F5运行后,效果如下:
从0开始创建一个MFC单文档工程_第14张图片

如何绘制文本或图形

在COcctMFCView.cpp 找到OnDraw(CDC* /*pDC*/)方法,去掉/*pDC*/,添加如下代码

void COcctMFCView::OnDraw(CDC* pDC)
{
	COcctMFCDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;
	// TODO: 在此处为本机数据添加绘制代码
	pDC->TextOut(10, 120, _T("Hello World!"));
	pDC->Rectangle(20, 20, 100, 100);
}

F5运行代码后,如下
从0开始创建一个MFC单文档工程_第15张图片
稍微改造一下,实现通过点击菜单,进行绘制,创建如下菜单
从0开始创建一个MFC单文档工程_第16张图片
添加菜单点击事件,事件内添加如下代码

void COcctMFCView::On32774()
{
	// TODO: 在此添加命令处理程序代码
	CDC* pDC = GetDC();
	pDC->TextOut(100, 220, _T("Hello World! Draw a rectangle!"));
	pDC->Rectangle(100, 100, 200, 200);
}

F5运行后,点击菜单 我的->doc图形绘制 出现如下内容
从0开始创建一个MFC单文档工程_第17张图片
CDC常用的绘制函数

绘制点

# SetPixel(x,y,RGB(r,g,b))
# SetPixelV(x,y,RGB(r,g,b))

绘制线函数

MoveTo()
LineTo()
Arc()
AngleArc()
PolyDraw()
PolyLine()
PolyPolyLine()

绘制形状

Ellipose()
Rectangle()
Pie()
RoundRect()
Draw3dRect()
PolyGon()
DrawEdge()
PolyPolygon()

形状填充和翻转

FillRect()
FillSolidRect()
InvertRect()
FloodFill()
ExtFloodFill()
FrameRect()

文本绘制

TextOut()
ExtTextOut()
DrawText()

绘制图形

DrawIcon()
BitBlt()
PatBlt()
LoadBitmap()
CreateBitmapIndirect()
CreateCompatibleBitmap()

你可能感兴趣的:(C++,MFC,单文档)