




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
創(chuàng)建mfc程序,在窗口上分別輸出“hello,現(xiàn)在開始mfc編程”和數(shù)字5例程1.MFChello
步驟
1.
選擇新建-工程,翻開后消失假如1所示對話框。選擇VC++中的智能設備,在右邊選擇MFC智能設備應用程序。在下方的名稱中輸入MFChello,點擊確定。
步驟2.
點擊下一步
步驟
3.
將Mini2440-CE6-SDK移到右邊,點擊下一步。
步驟4.
在應用程序類型選擇基于對話框,直接點擊完成。
步驟
5.
選擇類視圖,點擊CMFChelloApp,在下方可以看到InitInstance(void)函數(shù),雙擊該函數(shù)。步驟6
在BOOLCMFChelloApp::InitInstance()添加如下代碼
AfxEnableControlContainer();//調用此函數(shù)的目的是為了使程序支持包含OLE控件
MessageBox(NULL,_T(一個簡潔的MFC程序),_T(你好),MB_OK);//談出對話框
例程2.鼠標測試程序
同例程1一樣,建立一個基于對話框的MouseTest程序。
在右邊的對話框編輯器中選擇StaticText,添加到對話框中一個靜態(tài)文本,然后更改右下角的靜態(tài)文本的屬性,Caption改為提示:點一下鼠標右鍵或左鍵,ID改為
IDC_STATIC
點擊對話框,在右下角點擊消息按鈕,消失下列圖。
VS2023MFC編程入門之四(MFC應用程序框架分析)
篇二:創(chuàng)立mfc程序,在窗口上分別輸出“hello,現(xiàn)在開頭mfc編程”和數(shù)字5
上一講雞啄米講的是VS2023應用程序工程中文件的組成構造,可能大家對工程的運行原理還是很模糊,理不出頭緒,究竟跟C++編程入門系列中的例程差異太大。這一節(jié)雞啄米就為大家分析下MFC應用程序框架的運行流程。
一.SDK應用程序與MFC應用程序運行過程的比照
程序運行都要有入口函數(shù),在之前的C++教程中都是main函數(shù),而Windows應用程序的入口函數(shù)是WinMain函數(shù),MFC程序也是從WinMain函數(shù)開頭的。下面雞啄米就給出用WindowsSDK寫的“HelloWorld”程序,與應用程序框架進展比照,這樣能更好的了解框架是怎樣運行的。WindowsSDK開發(fā)程序就是不使用MFC類庫,直接用WindowsAPI函數(shù)進展軟件開發(fā)。雞啄米不是要講解SDK開發(fā),只是為了比照而簡潔介紹,至于SDK開發(fā)可以在大家學完MFC以后選擇是否要討論,一般來說有簡潔了解就可以了。SDK應用程序
首先,給出WindowsSDK應用程序“HelloWorld”的源碼:
上面的程序運行的流程是:進入WinMain函數(shù)-初始化WNDCLASSEX,調用RegisterClassEx函數(shù)注冊窗口類-調用ShowWindow和UpdateWindow函數(shù)顯示并更新窗口-
進入消息循環(huán)。關于消息循環(huán)再簡潔說下,Windows應用程序是消息驅動的,系統(tǒng)或用戶讓應用程序進展某項操作或完成某個任務時會發(fā)送消息,進入程序的消息隊列,然后消息循環(huán)會將消息隊列中的消息取出,交予相應的窗口過程處理,此程序的窗口過程函數(shù)就是myWndProc函數(shù),窗口過程函數(shù)處理完消息就完成了某項操作或任務。本例是要顯示“HELLOWORLD”字符串,UpdateWindow函數(shù)會發(fā)送WM_PAINT消息,但是此消息不經(jīng)過消息隊列而是直接送到窗口過程處理,在窗口過程函數(shù)中最終繪制了“HELLOWORLD”字符串。
MFC應用程序
下面是MFC應用程序的運行流程,通過MFC庫中代碼進展分析:
首先在HelloWorld.cpp中定義全局對象theApp:CHelloWorldApptheApp;。調用C
在TCHAR.h中,有此定義:#define_tWinMainWinMain,所以這里的_tWinMain就是WinMain函數(shù)。它調用了AfxWinMain函數(shù)(位于WinMain.cpp中)。
C++代碼
InitInstance中的ProcessShellCommand函數(shù)又調用了CMainFrame的LoadFrame函數(shù)注冊并創(chuàng)立了窗口,執(zhí)行完ProcessShellCommand函數(shù)以后,調用了m_pMainWnd的ShowWindow和UpdateWindow函數(shù)顯示并更新框架窗口。這些是不是與上面的SDK程序非常類似?
接下來該是消息循環(huán)了,上面的AfxWinMain函數(shù)中調用了pThread的Run函數(shù)(位
VS2023和MFC編程入門之4(MFC應用程序框架分析)
篇三:創(chuàng)立mfc程序,在窗口上分別輸出“hello,現(xiàn)在開頭mfc編程”和數(shù)字5
VS2023和MFC編程入門之4(MFC應用程序框架分析)這里就為大家分析下MFC應用程序框架的運行流程。
一.SDK應用程序與MFC應用程序運行過程的比照
程序運行都要有入口函數(shù),在之前的C++教程中都是main函數(shù),而Windows應用程序的入口函數(shù)是WinMain函數(shù),MFC程序也是從WinMain函數(shù)開頭的。下面雞啄米就給出用WindowsSDK寫的“HelloWorld”程序,與應用程序框架進展比照,這樣能更好的了解框架是怎樣運行的。WindowsSDK開發(fā)程序就是不使用MFC類庫,直接用WindowsAPI函數(shù)進展軟件開發(fā)。雞啄米不是要講解SDK開發(fā),只是為了比照而簡潔介紹,至于SDK開發(fā)可以在大家學完MFC以后選擇是否要討論,一般來說有簡潔了解就可以了。
SDK應用程序
首先,給出WindowsSDK應用程序“HelloWorld”的源碼:
C++代碼
#includewindows.h
LRESULTCALLBACKmyWndProc(HWNDhWindow,UINTmsg,WPARAMwParam,LPARAMlParam);
intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,PSTRszCmdLine,intiCmdShow)
{
conststaticTCHARappName[]=TEXT(Helloworld);
WNDCLASSEXmyWin;
myWin.cbSize=sizeof(myWin);
myWin.style=CS_HREDRAW|CS_VREDRAW;
myWin.lpfnWndProc=myWndProc;
myWin.cbClsExtra=0;
myWin.cbWndExtra=0;
myWin.hInstance=hInstance;
myWin.hIcon=0;
myWin.hIconSm=0;
myWin.hCursor=0;
myWin.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
myWin.lpszMenuName=0;
myWin.lpszClassName=appName;
//Register
if(!RegisterClassEx(myWin))return0;
constHWNDhWindow=CreateWindow(
appName,
appName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,創(chuàng)立mfc程序,在窗口上分別輸出“hello,現(xiàn)在開頭mfc編程”和數(shù)字5。
CW_USEDEFAULT,
0,
0,
hInstance,
0);
ShowWindow(hWindow,iCmdShow);
UpdateWindow(hWindow);
{創(chuàng)立mfc程序,在窗口上分別輸出“hello,現(xiàn)在開頭mfc編程”和數(shù)字5。
MSGmsg;
while(GetMessage(msg,0,0,0))
{
TranslateMessage(msg);
DispatchMessage(msg);
}
return(int)msg.wParam;
}
}
LRESULTCALLBACKmyWndProc(HWNDhWindow,UINTmsg,WPARAMwParam,LPARAMlParam)
{
if(msg==WM_PAINT)
{
PAINTSTRUCTps;創(chuàng)立mfc程序,在窗口上分別輸出“hello,現(xiàn)在開頭mfc編程”和數(shù)字5。
constHDChDC=BeginPaint(hWindow,ps);
RECTrect;
GetClientRect(hWindow,rect);
DrawText(hDC,TEXT(HELLOWORLD),-1,rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
EndPaint(hWindow,ps);
return0;
}
elseif(msg==WM_DESTROY)
{
PostQuitMessage(0);
return0;
}
returnDefWindowProc(hWindow,msg,wParam,lParam);
}
上面的程序運行的流程是:進入WinMain函數(shù)-初始化WNDCLASSEX,調用
RegisterClassEx函數(shù)注冊窗口類-調用ShowWindow和UpdateWindow函數(shù)顯示并更新窗口-進入消息循環(huán)。關于消息循環(huán)再簡潔說下,Windows應用程序是消息驅動的,
系統(tǒng)或用戶讓應用程序進展某項操作或完成某個任務時會發(fā)送消息,進入程序的消息隊列,然后消息循環(huán)會將消息隊列中的消息取出,交予相應的窗口過程處理,此程序的窗口過程函數(shù)就是myWndProc函數(shù),窗口過程函數(shù)處理完消息就完成了某項操作或任務。本例是要顯示“HELLOWORLD”字符串,UpdateWindow函數(shù)會發(fā)送
WM_PAINT消息,但是此消息不經(jīng)過消息隊列而是直接送到窗口過程處理,在窗口過程函數(shù)中最終繪制了“HELLOWORLD”字符串。
MFC應用程序
下面是MFC應用程序的運行流程,通過MFC庫中代碼進展分析:
首先在HelloWorld.cpp中定義全局對象theApp:CHelloWorldApptheApp;。調用
CWinApp和CHelloWorldApp的構造函數(shù)后,進入WinMain函數(shù)(位于appmodul.cpp中)。
C++代碼
externCintWINAPI
_tWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,
_In_LPTSTRlpCmdLine,intnCmdShow)
#pragmawarning(suppress:4985)
{
//callshared/exportedWinMain
returnAfxWinMain(hInstance,hPrevInstance,lpCmdLine,nCmdShow);}
在TCHAR.h中,有此定義:#define_tWinMainWinMain,所以這里的_tWinMain就是WinMain函數(shù)。它調用了AfxWinMain函數(shù)(位于WinMain.cpp中)。
C++代碼
intAFXAPIAfxWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPTSTRlpCmdLine,intnCmdShow)
{
.............略
//Appglobalinitializations(rare)
if(pApp!=NULL!pApp-InitApplication())gotoInitFailure;
if(!pThread-InitInstance())
{
.........略
}
//Run函數(shù)位于THRDCORE.cpp中,由此函數(shù)進入消息循環(huán)nReturnCode=pThread-Run();
..............略
returnnReturnCode;
}
上面InitInstance函數(shù)的代碼如下:
C++代碼
BOOLCTestApp::InitInstance()
VS2023-MFC編程入門
篇四:創(chuàng)立mfc程序,在窗口上分別輸出“hello,現(xiàn)在開頭mfc編程”和數(shù)字5
VS2023/MFC編程入門之前言
分類標簽:編程入門VC++VS2023MFC
雞啄米的C++編程入門系列給大家講了C++的編程入門學問,大家對C++語言在語法和設計思想上應當有了肯定的了解了。但是教程中講的例子只是一個個簡潔的例程,并沒有可視化窗口。雞啄米在這套VS2023/MFC編程入門教程中將會給大家講解怎樣使用VS2023進展可視化編程,也就是基于窗口的程序。
C++編程入門系列主要偏重于理論方面的學問,目的是讓大家打好底子,練好內功,在使用VC++編程時不至于丈二和尚摸不著頭腦。本套教程也會涉及到VC++的原理性的東西,同樣更重視有用性,讓大家學完本套教程以后,根本的界面程序都能很簡單編寫出來。VC++簡介
VC++全稱是VisualC++,是由微軟供應的C++開發(fā)工具,它與C++的根本區(qū)分就在于,C++是語言,而VC++是用C++語言編寫程序的工具平臺。VC++不僅是一個編譯器更是一個集成開發(fā)環(huán)境,包括編輯器、調試器和編譯器等,一般它包含在VisualStudio中。VisualStudio包含了VB、VC++、C#等編譯環(huán)境。固然我們在使用VC++6.0的時候為了輕巧,總是只單獨安裝VC++6.0。但自微軟2023年公布VisualStudio.NET以來,微軟建立了在.NET框架上的代碼托管機制,一個工程可以支持多種語言開發(fā)的組件,VC++同樣被擴展為支持代碼托管機制的開發(fā)環(huán)境,所以.NETFramework是必需的,也就不再有VC++的獨立安裝程序,不過可以在安裝VisualStudio時只選擇VC++進展安裝。
VC++版本的選擇:VS2023
由于VC++6.0以后的版本不再有獨立的安裝程序,所以雞啄米在教程中將不會稱VC++6.0以后的版本為VC++7.0等等,而是用VC++所屬的VisualStudio的版本名稱代替,比方VS2023。
近些年VC++主要的版本包括:VC++6.0、VS2023、VS2023、VS2023和VS2023。VC++6.0占用的系統(tǒng)資源比擬少,翻開工程、編譯運行都比擬快,所以贏得許多軟件開發(fā)者的青睞。但由于它先于C++標準推出,所以對C++標準的支持不太好。舉個例子:for(inti=0;i5;i++)
{
a[i]=i;
}
for語句中聲明的變量i,對于VC++6.0來說,出了for循環(huán)仍能使用。但很明顯這與C++標準對于變量生存期的規(guī)定不符合。
隨著VC++版本的更新,對C++標準的支持越來越好,對各種技術的支持也越來越完善。但同時新版本所需的資源也越來越多,對處理器和內存的要求越來越高。到VS2023,光安裝文件就2G多,安裝后的文件占3G多空間,其運行也常常受處理器和內存等性能的限制。但雞啄米還是推舉大家使用VS2023,究竟它是最新版本,類庫和開發(fā)技術都是最完善的,本教程也將使用VS2023為大家做例程的演示。固然假如系統(tǒng)配置的確比擬低,可以選擇VS2023,VS2023和VS2023相比還是要輕量級一些的。VC++6.0已經(jīng)過時,奉勸大家盡量別用了。
VC++與MFC
講VC++免不了要提MFC,MFC全稱MicrosoftFoundationClasses,也就是微軟根底類庫。它是VC++的核心,是C++與WindowsAPI的結合,很徹底的用C++封裝了WindowsSDK(SoftwareDevelopmentKit,軟件開發(fā)工具包)中的構造和功能,還供應了一個應用程序框架,此應用程序框架為軟件開發(fā)者完成了一些例行化的工作,比方各種窗口、工具欄、菜單的生成和治理等,不需要開發(fā)者再去解決那些很簡單很乏味的難題,比方每個窗口都要使用WindowsAPI注冊、生成與治理。這樣就大大削減了軟件開發(fā)者的工作量,提高了開發(fā)效率。
固然VC++不是只能夠創(chuàng)立MFC應用程序,同樣也能夠進展WindowsSDK編程,但是那樣的話就舍棄了VC++的核心,放棄了VC++最強大的局部。MFC也不是只能用于VC++中,它同樣也可以用在BorlandC++等編譯器中,固然沒有幾個人這樣做。
本節(jié)旨在讓大家對VC++、VS2023和MFC有根本的概念上的熟悉,后面雞啄米會帶大家進入VS2023/MFC的世界,讓大家輕松的開發(fā)各種包含窗口、圖形等的可視化程序。
VS2023/MFC編程入門之二(利用MFC向導生成單文檔應用程序框架)
分類標簽:編程入門VC++MFCVS2023
上一講中講了VS2023和MSDN如何安裝,信任大家都已經(jīng)安裝好了。這一講給大家一個簡潔的例子,演示如何生成單文檔應用程序框架。
解決方案與工程
雞啄米在VS2023的使用介紹中已經(jīng)講了解決方案與工程的概念,這里再重提一下。每個應用程序都作為一個工程來處理,它包含了頭文件、源文件和資源文件等,這些文件通過工程集中治理。在VS2023中,工程都是在解決方案治理之下的。一個解決方案可以治理多個工程,可以把解決方案理解為多個有關系或者沒有關系的工程的集合。VS2023供應了一個SolutionExplorer解決方案掃瞄器視圖,可以顯示當前解決方案的內容,當新建一個工程時可以選擇新建一個解決方案還是參加當前解決方案。
下列圖左側面板中正在顯示的視圖就是SolutionExplorer,視圖中有一個解決方案-HelloWorld,此解決方案下有一個同名的工程-HelloWorld。
在應用程序向導生成應用程序后,VS2023會在用戶設置的路徑下,以解決方案名為名稱建立一個名目,里面存放自動生成的文件。
使用VS2023應用程序向導生成單文檔應用程序框架
雞啄米這里簡單演示下怎樣生成單文檔應用程序框架,讓大家先有個直觀的了解,有不理解的地方可以留著以后回來再看。下面根據(jù)操作步驟一步步講解:
1.點菜單欄File-New-Project,彈出NewPro
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 船舶航線優(yōu)化與航速計劃
- 兒科科室工作總結與未來計劃
- 初一歷史教師工作總結
- 自動洗胃機的操作流程
- 質量管理的基礎與精髓
- 2025年《小豬變干凈了》標準教案
- AIGC商業(yè)應用實戰(zhàn)教程 課件 1-1 AIGC概述
- 藥劑科倉庫管理制度
- 藥廠廠房設施培訓
- 健康管理服務流程設計協(xié)議
- 2025年中考百日誓師大會校長發(fā)言稿:激揚青春志 決勝中考時
- YY/T 1860.1-2024無源外科植入物植入物涂層第1部分:通用要求
- 中央2025年全國婦聯(lián)所屬在京事業(yè)單位招聘93人筆試歷年參考題庫附帶答案詳解
- 人教版高中物理選擇性必修第二冊電磁波的發(fā)射與接收課件
- 《建筑冷熱源》全冊配套最完整課件1
- 廣州2025年廣東廣州市番禺區(qū)小谷圍街道辦事處下屬事業(yè)單位招聘5人筆試歷年參考題庫附帶答案詳解
- 2025年春新人教版生物七年級下冊全冊教學課件
- 【物理】《跨學科實踐:制作微型密度計》(教學設計)-2024-2025學年人教版(2024)初中物理八年級下冊
- 2024年湖南高速鐵路職業(yè)技術學院高職單招數(shù)學歷年參考題庫含答案解析
- 學校食堂餐廳管理者食堂安全考試題附答案
- 2025廣西中煙工業(yè)限責任公司招聘126人高頻重點提升(共500題)附帶答案詳解
評論
0/150
提交評論