MFC入门--编写第一个MFC应用程序

文章目录

编写第一个MFC应用程序

代码

头文件 mfc.h

#include <afxwin.h> //MFC需要包含的头文件

class MyApp :public CWinApp  //CWinApp 应用程序类
{
public:

	//MFC 程序入口
	virtual BOOL InitInstance();

};

//窗口框架类
class MyFrame :public CFrameWnd
{
public:
	MyFrame(); //窗口构造函数

	//使用消息映射机制 必须引用声明宏

	DECLARE_MESSAGE_MAP()

	afx_msg void OnLButtonDown(UINT, CPoint); //鼠标左键按下声明

	afx_msg void OnChar(UINT, UINT, UINT); // 键盘函数声明

	afx_msg void OnPaint(); //绘图声明

};

头文件 mfc.cpp

  • 多字节字符集(MBCS,Multi-Byte Chactacter Set):指用多个字节来表示一个字符的字符编码集合。一般英文字母用1Byte,汉语等用2Byte来表示。兼容ASCII 127。
  • 宽字节字符集:一般指Unicode编码的字符集,
#include "mfc.h"

MyApp app; //应用程序对象 ,有且仅有一个

BOOL MyApp::InitInstance()
{
	//创建窗口
	m_pMainWnd = new MyFrame;
	

	//显示 和 更新
	m_pMainWnd->ShowWindow(SW_SHOWNORMAL);
	m_pMainWnd->UpdateWindow();

	//m_pMainWnd = frame;//保存指向应用程序的主窗口的指针

	return TRUE; //返回正常初始化
}


//消息映射的 分界宏
BEGIN_MESSAGE_MAP(MyFrame,CFrameWnd)

	ON_WM_LBUTTONDOWN() //鼠标左键按下 宏

	ON_WM_CHAR() //键盘宏

	ON_WM_PAINT() //绘图宏

END_MESSAGE_MAP()



//窗口框架的默认构造函数
MyFrame::MyFrame()
{
	Create(NULL, TEXT("MFC WINDOW"));
}

//鼠标左键按下 实现
void MyFrame::OnLButtonDown(UINT, CPoint point)
{

	//TCHAR buf[1024];
	//wsprintf(buf, TEXT("x = %d, y = %d"), point.x, point.y);
	//MessageBox(buf);

	CString str; //MFC使用的字符串
	//格式化字符串
	str.Format(TEXT(" :::::x = %d, y = %d"), point.x, point.y);

	MessageBox(str);

}

//键盘实现
void MyFrame::OnChar(UINT key, UINT, UINT)
{
	//TCHAR buf[1024];
	//wsprintf(buf, TEXT("按下了%c"), key);
	//MessageBox(buf);


	CString str;
	str.Format(TEXT("按下了%c 键"),key);
	MessageBox(str);

}

void MyFrame::OnPaint()
{
	CPaintDC dc(this); //画家 画到当前的窗口中

	//画文字
	dc.TextOutW(100, 100, TEXT("为了部落"));
	
	dc.Ellipse(10, 10, 100, 100);

	// 多字节 转 宽字节
	//MessageBox(L"aaa");
	MessageBox(TEXT("aaa"));

	//TEXT  TCHAR 自动编码转换

	//统计宽字节字符串长度
	char * p = "aaaa";
	int n = 0;
	n = strlen(p);

	wchar_t * p2 = L"bbbb";
	n = wcslen(p2);


	//string 互相转换 char *   .c_str()
	//CString 和char * 互相转换
	//char *  -> CString
	char * p3 = "aa";
	CString str = CString(p3);

	//CString -> char* 
	CString str2 = TEXT("abc");
	CStringA tmp;
	tmp = str2;
	char * pp = tmp.GetBuffer();
	MessageBox(CString(pp));


}

// Window字符集
// ANSI  1个字符 对应 1个字节  多字节
// 中文 韩文...  宽字节  1个字符对应多个字节  UniCode   utf8  3个字节  gbk  2个字节




mfc没有提示

安装mfc
MFC入门--编写第一个MFC应用程序
修改
MFC入门--编写第一个MFC应用程序

配置MFC

MFC入门--编写第一个MFC应用程序

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\atlmfc\include\afx.h(24,1): fatal error C1189: #error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]

参考:
VS编译错误:#error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version

上一篇:第18天 GUI编程


下一篇:杭电ACM2015--偶数求和