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個 ...