MFC学习笔记(二):Windows字符集、利用向导方式创建MFC

目录

  • 1 Windows字符集
    • 1.1 常用编码格式
    • 1.2 不同编码格式统计字符长度
    • 1.3 char* 与CString之间的转换
  • 2 利用向导创建MFC
    • 2.1创建步骤
    • 2.2使用代码框架

1 Windows字符集

1.1 常用编码格式

在C++中,对于大小写英文字母,一个字符对应一个字节,为多字节表示文字,采用的是ASCII字符集。对于中文等其他国家的文字,一个字符对应多个字节,采用宽字节来表示文字,使用Unicode字符集,utf-8为3个字节,GBK为2个字节。我们在MFC中常使用Unicode字节。
在开发过程中常常需要将多字节转换为宽字节,在字符串前使用TEXT“xxx”为自适应编码格式的转换,即将字符串里的字符转换为当前的编码方式。在字符串前使用L“xxx”,将其转换为宽字节。

1.2 不同编码格式统计字符长度

统计多字节字符串的长度(ASCII字符):

	int num = 0;
	char *p = "aaaa";
	num = strlen(p);

统计宽字节字符串的长度(Unicode字符):

	int num = 0;
	wchar_t *p2 = L"aaaaa";
	num = wcslen(p2);

1.3 char* 与CString之间的转换

   //char* -> CString 
	char * p3 = "ccc";
	CString str = CString(p3);

	//CString -> char * 
	CStringA temp;
	temp = str;
	char *pp = temp.GetBuffer();

2 利用向导创建MFC

2.1创建步骤

我用的版本是Visual Studio 2015,点击文件->新建->项目。选择Visual C++模板->Windows->MFC,选择MFC应用程序,输入名称和位置后,单击确定。
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第1张图片
点击下一步。
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第2张图片
应用程序类型选择单个文档,项目类型选择MFC标准,点击下一步。
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第3张图片
目前不使用,单击下一步。
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第4张图片
单击下一步。
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第5张图片
数据库支持没有,单击下一步。
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第6张图片传统停靠工具栏可以不选,因为刚学所以先看一下,单击下一步。
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第7张图片
点击下一步。
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第8张图片
生成了四个类,CMFCAppView为视类,它的基类是CView类。CMFCAppApp为应用程序类,它的基类是上面所说的CWApp类。CMFCAppDoc类是专门处理文件的一些类。CMainFrame是上面说的框架类,它的基类是CFrameWnd。当我们想要显示一个东西的时候,要把我们显示的图形或者文字放到CMFCAppView是类中,CMainFrame类提供一个显示的框架,视类可以看作相片,框架类则可以看作相框。点击完成。
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第9张图片
我们可以看到,此时利用向导创建MFC应用程序就成功了,可以从解决方案资源管理器中看到头文件、源文件之类的。
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第10张图片

在MFC中我们更常用的是类视图。如果没有类视图,可以在视图->类视图中点击调出。
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第11张图片
现在我们可以点击运行,弹出以下的窗口界面,表示创建成功。
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第12张图片

2.2使用代码框架

MFC中通常使用的是类视图,在类视图中,单击CMainFrame,下面的对话框出现的就是该类中的所有成员函数。若双击上面类,主界面会出现对应类的.h文件,若双击类下面的成员函数,主界面会显示对应类的.cpp文件。
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第13张图片
在CMainFrame.cpp中可以找到分界宏,如下图所示:
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第14张图片
如果我们想实现鼠标单击返回坐标的功能,不需要向之前编码那么麻烦,右键单击CMainFrame类,点击属性。属性中的上面有一排小图标,点击消息按钮,可以发现消息名称。
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第15张图片
找到我我们所有实现的消息,WM_LBUTTONDOWN,点击该消息右面的白框,下拉后点击加入该消息。
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第16张图片
可以看到在MainFrm.cpp中多出了OnLButtonDown函数,在类视图中也会多出该成员函数的方法名。
OnLButtonDown函数:
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第17张图片
CMainFrame类视图:
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第18张图片
在分界宏之间也加入了相关的消息:
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第19张图片
在头文件中也对函数原型进行了声明:
在这里插入图片描述
如果想删除掉这个功能,还是按照上面的方法,在CMainFrame类属性的消息中,单击WM_LBUTTONDOWN消息右边的白框,选择Delete就可以了。
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第20张图片
但这样的删除只是逻辑删除,只是把原先该部分的代码注释掉,并不是物理删除。
如果我们想要实现鼠标点击返回坐标的功能,需要在视类(CMFCAppView类)中加入WM_BUTTONDOWN消息然后改写。

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

	CView::OnLButtonDown(nFlags, point);
	CString str;
	str.Format(TEXT("x = %d, y = %d"), point.x, point.y);
	MessageBox(str);
}

运行结果:
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第21张图片
若要进行画图操作,如在窗口上显示一串文字,使用视类的OnDraw方法:

// CMFCAppView 绘制

void CMFCAppView::OnDraw(CDC* pDC)
{
	CMFCAppDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;

	// TODO: 在此处为本机数据添加绘制代码
	pDC->TextOutW(100,100, TEXT("伍兹,永远的神!!!"));
}

运行结果:
MFC学习笔记(二):Windows字符集、利用向导方式创建MFC_第22张图片
注意:如果有了OnDraw方法,就不要使用OnPaint方法,同时存在的话 OnPaint 方法会将 OnDraw方法覆盖掉。通常不必填写OnPaint函数。

你可能感兴趣的:(MFC学习,c++,mfc,c语言,windows)