VS2015
头文件
#include <afxwin.h>//mfc头文件
class MyApp :public CWinApp//继承CWinApp应用程序类
{
public:
//程序入口
virtual BOOL InitInstance();
};
class MyFrame :public CFrameWnd//继承于CFrameWnd窗口框架类
{
public:
MyFrame();
//声明宏 提供消息映射机制
DECLARE_MESSAGE_MAP()
afx_msg void OnLButtonDown(UINT, CPoint);//鼠标左键按下函数原型
afx_msg void OnChar(UINT, UINT, UINT);//键盘按下函数原型
afx_msg void OnPaint();//绘图宏函数原型
};
源文件:
#include "mfc.h"
MyApp app;//全局应用程序对象,有且仅有一个
BOOL MyApp::InitInstance()//创建窗口对象
{
//入口里创建窗口
MyFrame *frame = new MyFrame;
//显示和更新
frame->ShowWindow(SW_SHOWNORMAL);
frame->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"));//默认值和窗口框显示标题名字
}
void MyFrame::OnLButtonDown(UINT, CPoint point)
{
// TCHAR buf[1024];//MFC中的字符数组类型
// wsprintf(buf, TEXT("x = %d,y = %d"), point.x, point.y);
//
// MessageBox(buf);//MFC里的MessageBox的API与底层MessageBox的API是不同的
//mfc中的字符串 CString
CString str;
str.Format(TEXT(" x = %d ,,,, y= %d "), point.x, point.y);
MessageBox(str);
}
void MyFrame::OnChar(UINT key, UINT, UINT)
{
CString str;
str.Format(TEXT("按下了%c 键"), key);
MessageBox(str);
}
void MyFrame::OnPaint()
{
CPaintDC dc(this);//类似QT里的QPaint画夹类
dc.TextOutW(100, 100, TEXT("人生苦短 我用Python"));
//画椭圆
dc.Ellipse(10,10,100,100);
//多字节转为 宽字节
//TEXT是自适应编码的转换
//TCHER 自适应编码的转换
//MessageBox(L"aaa");//一打开exe就弹出
//统计字符串长度
int num = 0;
char *p = "aaaa";
num = strlen(p);
//统计宽字节的字符串长度
wchar_t *p2 = L"bbbb";
num = wcslen(p2);
//char * 与 CString之间的转换
char *p3 = "ccc";
CString str = CString(p3);//有参构造
//CString ->char *
CStringA tmp;
tmp = str;
char *pp = tmp.GetBuffer();
}
//英文 一个字符对应一个字节 叫多字节
//中文 一个字符对应多个字节 叫宽字节 Unicode UTF-8对应3个 ...