MFC
微軟基礎(chǔ)類庫(kù)(英語(yǔ):Microsoft Foundation Classes,簡(jiǎn)稱MFC)是微軟公司提供的一個(gè)類庫(kù)(class libraries),以C++類的形式封裝了Windows API,并且包含一個(gè)應(yīng)用程序框架,以減少應(yīng)用程序開發(fā)人員的工作量。其中包含大量Windows句柄封裝類和很多Windows的內(nèi)建控件和組件的封裝類。
MFC(MicrosoftFoundationClasses)是微軟基礎(chǔ)類庫(kù)的簡(jiǎn)稱,是微軟公司實(shí)現(xiàn)的一個(gè)c++類庫(kù),主要封裝了大部分的windows API函數(shù),vc++是微軟公司開發(fā)的c/c++的集成開發(fā)環(huán)境,所謂集成開發(fā)環(huán)境,就是說(shuō)利用它可以編輯,編譯,調(diào)試,而不是使用多種工具輪換操作,靈活性較大。vc也指它的內(nèi)部編譯器,集成開發(fā)環(huán)境必須有一個(gè)編譯器內(nèi)核,例如DevC++其中一個(gè)編譯器內(nèi)核就是gcc。
MFC除了是一個(gè)類庫(kù)以外,還是一個(gè)框架,在vc++里新建一個(gè)MFC的工程,開發(fā)環(huán)境會(huì)自動(dòng)幫你產(chǎn)生許多文件,同時(shí)它使用了mfcxx.dll。xx是版本,它封裝了mfc內(nèi)核,所以你在你的代碼看不到原本的SDK編程中的消息循環(huán)等等東西,因?yàn)镸FC框架幫你封裝好了,這樣你就可以專心的考慮你程序的邏輯,而不是這些每次編程都要重復(fù)的東西,但是由于是通用框架,沒(méi)有最好的針對(duì)性,當(dāng)然也就喪失了一些靈活性和效率。但是MFC的封裝很淺,所以效率上損失不大。
MFC初學(xué)教程
編寫MFC程序,其實(shí)跟編寫C++程序一樣,在VS編譯平臺(tái)上新建項(xiàng)目,然后一直默認(rèn)下一步就行,不過(guò)有其他需求則需要根據(jù)實(shí)際情況來(lái)添加。建好一個(gè)項(xiàng)目后,會(huì)出現(xiàn)兩個(gè)界面,一個(gè)是顯示窗口,一個(gè)是編程界面,類似LV中的前面板和程序框圖。在界面右邊有個(gè)工具箱,可以根據(jù)需要添加控件。
下面主要編寫一個(gè)簡(jiǎn)單的計(jì)算器程序,實(shí)現(xiàn)對(duì)輸入數(shù)的四則運(yùn)算,主要步驟如下:
1、在對(duì)話框中放置6個(gè)按鈕控件和3個(gè)編輯框控件
具體操作:界面右邊點(diǎn)擊工具箱,根據(jù)具體需要選擇具體控件。
2、將3個(gè)編輯框控件分別添加float型變量m_edit1、m_edit2、m_edit3
具體操作:選中編輯框點(diǎn)右鍵添加變量,將右邊類別改為value,變量名分別改為m_edit1、m_edit2、m_edit3。
3、將6個(gè)個(gè)按鈕控件重新命名
具體操作:選中按鈕點(diǎn)擊右鍵屬性,將Caption改為所需要+ - * / 清除 關(guān)閉,具體可根據(jù)需要來(lái)命名。
4、選擇工具箱中Group Box將四則運(yùn)算框住,然后通過(guò)屬性改名字,同時(shí)在上方添加靜態(tài)文本(Static Text)來(lái)編輯命名。
界面主要部分完成,接下來(lái)就是編寫代碼,雙擊各個(gè)控件,就可自動(dòng)跳轉(zhuǎn)到程序編寫部分,主要代碼如下
[html] view plain copyvoid CMFC入門Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知處理程序代碼
UpdateData(true);//從控件獲得數(shù)據(jù)賦給變量
m_edit3 = m_edit1 + m_edit2;
UpdateData(false);//輸出變量的值到控件
}
void CMFC入門Dlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知處理程序代碼
UpdateData(true);
m_edit3 = m_edit1 - m_edit2;
UpdateData(false);
}
void CMFC入門Dlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知處理程序代碼
UpdateData(true);
m_edit3 = m_edit1*m_edit2;
UpdateData(false);
}
void CMFC入門Dlg::OnBnClickedButton4()
{
// TODO: 在此添加控件通知處理程序代碼
UpdateData(true);
if (m_edit2 == 0)
{
MessageBox(_T(“除數(shù)不能為0”));
return;
}
m_edit3 = m_edit1 / m_edit2;
UpdateData(false);
}
void CMFC入門Dlg::OnBnClickedButton7()
{
// TODO: 在此添加控件通知處理程序代碼
m_edit1 = 0;
m_edit2 = 0;
m_edit3 = 0;
UpdateData(false);
GotoDlgCtrl((CEdit*)GetDlgItem(IDC_EDIT1));//設(shè)置焦點(diǎn)在第一個(gè)編輯框
}
最后編寫完成,運(yùn)行一下,彈出一個(gè)界面如下:
驗(yàn)證一下程序,以加法為例,m_edit1輸入18,m_edit2輸入36,得出結(jié)果如下所示。
評(píng)論
查看更多