MFC窗口的建立

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章