MFC以C++形式封裝了Windows APIwindows
//實踐數組
編寫MFC須要的頭文件#include <afxwin.h>app
程序執行流程:框架
文件名:mfc.h函數
#include <afxwin.h>//mfc頭文件 //應用程序類CWinApp,派生類 Class MyApp: public CWinApp{ public: virtual BOOL InitInstance(); //基類的虛函數,派生類只是重寫,MFC程序的入口地址 }; //框架類CFrameWnd ,派生類MyFrame Class MyFrame: public CFrameWnd{ public: MyFrame();//構造函數 DECLARE_MESSAGE_MAP()//消息映射宏,聲明必須用在類聲明中,即 .h 文件中 afx_msg void OnLButtonDown(UINT,CPoint)//鼠標聲明,value afx_msg void OnChar(UINT,UINT,UINT)//鍵盤聲明 afx_msg void OnPaint()//繪畫 };
文件名:mfc.cppthis
#include "mfc.h"//對應類聲明的頭文件 MyApp app;//有且僅有一個全局的應用程序類對象 BOOL MyApp::InitInstance(){//程序入口地址 MyFrame *frame=new MyFrame;//1.建立框架類對象 frame->ShowWindow(SW_SHOWNORMAL);//2.顯示窗口 frame->UpdateWindow();//3.更新窗口 m_pMainWnd=frame;//4.保存指向應用程序主窗口的指針,實現自動管理 return TRUE;//初始化正常則返回true } //分界宏 BEGIN_MESSAGE_MAP(MyFrame,CFrameWnd) ON_WM_LBUTTONDOWN()//鼠標左鍵按下 key ON_WM_CHAR()//鍵盤按下 END_MESSAGE_MAP() MyFrame::MyFrame(){ Create(NULL,TEXT("mfc"));//建立窗口 } void MyFrame::OnLButtonDwon(UNIT,CPoint point){//鼠標按下 /* TCHAR buf[1024];//TCHAR 是MFC中的字符數組 wsprintf(buf,TEXT("x=%d,y=%d"),point.x,point.y);//轉譯 MessageBox(buf);//區別於底層的MessageBox,MFC中實則是MessageBox method 在MSDN中可查 */ //mfc中的字符串 CString CString str; str.Format(TEXT("x=%d,,,y=%d"),point.x,point.y);//格式化 MessageBox(str); } void MyFrame::OnChar(UNIT key,UNIT,UNIT){//鍵盤按下 CString str; str.Format(TEXT("按下了 %c 鍵"),key); MessageBox(str); } void MyFrame::OnPaint(){//繪畫 CPaintDC dc(this);//this指定繪圖設備 //幫助文檔,在CDC裏找其餘能畫的圖形 dc.TextOutW(100,100,TEXT("爲了部落")); dc.Ellipse(10,10,100,100);//畫橢圓,兩點鎖定矩形內切圓 }
幫助文檔:《VC++之MFC類庫中文手冊》。最上面是層次結構;最下面是消息映射宏。編碼
查找Create要搜索 :CFrameWnd::Createspa
ps:右鍵項目->屬性->常規->MFC的使用->在共享DLL中使用MFC指針
//理論code
即將消息和成員函數互相關聯的表,MFC中沒有事件和信號橋的概念,只有每一個消息映射一個函數
ps:消息映射宏查找,在中文手冊最下面。
聲明宏:
DECLARE_MESSAGE_MAP()
分界宏:
BEGIN_MESSAGE_MAP(MyFrame,CFrameWnd)
END_MESSAGE_MAP()
程序執行流程:
MessageBox(TEXT(「aaa」));
TEXT 自適應編碼轉換(即,定義裏可定製多字節和寬字節):
右鍵項目->屬性->常規->字符集->使用多字節字符集/使用Unicode字符集
Ps:TCHAR 也有自適應編碼轉換
「aaa」 多字節:一個字符對應一個字節
L「aaa」 寬字節:一個字符對應多個字節 Unicode:UTF-8 3個;GBK 2個;
多字節轉爲寬字節:MessageBox(L 「aaa」);
//統計字符串長度
int num=0; char *p="aaa"; num=strlen(p); wchar_t *p2="bbbb"; num=wcslen(p2);
//char* 與 CString 之間的轉換
C++ string 與 MFC CString 不可直接轉換,要經過 char * .c_str();
//char*->CString char *p3="ccc"; CString str=CString(p3); //CString->char* CStringA tmp=str; char *pp=tmp.GetBuffer();