文章目录
编写第一个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
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]