一、軟件初始化與界面構(gòu)建
在軟件開發(fā)之初,我們首先創(chuàng)建了主對話框類CAttendanceDlg的實(shí)例dlg,并將其指針信息存儲在全局變量中,以便后續(xù)使用。這個指針信息被存儲在CWinApp的m_pMainWnd和附加的m_pMiddle中作為備用。這樣,軟件就能隨時訪問這個主界面對象。
二、子框架與視圖的創(chuàng)建

在ClassWizard中,我們?yōu)橹鲗υ捒蝾悓?dǎo)入了OnCreate()函數(shù)。在這個函數(shù)中,我們創(chuàng)建了子框架對象CChildFrame。這個子框架作為軟件的主要工作區(qū)域,承載著軟件的核心功能。我們將其實(shí)例化并存儲在m_pChildFrame中,然后將其顯示狀態(tài)暫時設(shè)置為隱藏。
接下來,我們在子框架對象CChildFrame的OnCreate()函數(shù)中創(chuàng)建了子視類對象CChildView。這個子視圖是用戶與軟件交互的主要界面,用于顯示和處理考勤數(shù)據(jù)。我們通過在CCreateContext的上下文中指定相應(yīng)的參數(shù)來創(chuàng)建視圖對象,并將其存儲在m_pView中。如果視圖創(chuàng)建成功,我們將其顯示狀態(tài)也暫時設(shè)置為隱藏,并將它設(shè)置為當(dāng)前活動視圖。
三、打印及打印預(yù)覽功能實(shí)現(xiàn)
在主對話框的打印或打印預(yù)覽處理函數(shù)中,我們只需要向子框架CChildFrame發(fā)送相應(yīng)的消息即可。對于打印函數(shù),我們發(fā)送WM_MAND ID_FILE_PRINT消息;對于打印預(yù)覽函數(shù),我們先將子框架顯示狀態(tài)設(shè)置為顯示,然后發(fā)送WM_MAND ID_FILE_PRINT_PREVIEW消息進(jìn)行打印預(yù)覽。
在子框架的打印預(yù)覽處理函數(shù)中,我們需要暫時將CWinApp::m_pMainWnd替換為子框架CChildFrame的指針,并將子視類對象的顯示狀態(tài)激活,然后調(diào)用子視類對象的打印預(yù)覽處理函數(shù)。這樣,我們就可以在子框架中完成打印預(yù)覽操作。

四、打印預(yù)覽結(jié)束后的恢復(fù)工作
在打印預(yù)覽結(jié)束后,我們需要進(jìn)行一些后處理工作。我們要恢復(fù)原有的顯示狀態(tài),并將CWinApp::m_pMainWnd恢復(fù)為主對話框。這些工作放在CWrapperView::OnEndPrintPreview函數(shù)的結(jié)尾處完成。這樣,我們就可以確保軟件在打印預(yù)覽結(jié)束后能夠正常地返回到其他操作。
五、菜單資源的創(chuàng)建
我們還要為軟件創(chuàng)建一個菜單資源。這個菜單資源包含軟件的各項(xiàng)功能,如文件操作、設(shè)置、幫助等。我們?yōu)檫@個菜單資源創(chuàng)建一個標(biāo)識為IDR_MAINFRAME的菜單項(xiàng),以便在軟件中使用。這個菜單項(xiàng)是軟件的主要導(dǎo)航工具,幫助用戶方便快捷地訪問軟件的各種功能。
關(guān)于用C語言開發(fā)App的問題

是的,C語言完全可以用來開發(fā)應(yīng)用程序。C語言是一種通用的編程語言,具有強(qiáng)大的功能和高度的靈活性,可以用于開發(fā)各種類型的應(yīng)用程序。雖然現(xiàn)代移動應(yīng)用開發(fā)主要使用如Java(Android)和Swift/Objective-C(iOS)等語言,但C語言在跨平臺應(yīng)用開發(fā)、系統(tǒng)級應(yīng)用開發(fā)等方面仍然有著廣泛的應(yīng)用。開發(fā)者可以根據(jù)項(xiàng)目需求和自身技能選擇使用合適的編程語言進(jìn)行開發(fā)。C語言特性及其在手機(jī)App開發(fā)中的應(yīng)用
一、C語言的特性
C語言是一種具有結(jié)構(gòu)化程序設(shè)計(jì)、變量作用域以及遞歸功能的過程式語言。其特點(diǎn)包括:
1. 傳遞參數(shù)均是以值傳遞,同時也可以傳遞指針。
2. 不同的變量類型可以用結(jié)構(gòu)體組合在一起,方便數(shù)據(jù)的組織和處理。

3. 只有32個保留字,使變量、函數(shù)命名有更多彈性。
4. 部分變量類型可以轉(zhuǎn)換,例如整型和字符型變量之間的轉(zhuǎn)換。
5. 通過指針,C語言可以容易地對存儲器進(jìn)行低級控制,滿足底層開發(fā)的需求。
6. 預(yù)編譯處理讓C語言的編譯更具有彈性,方便開發(fā)人員進(jìn)行宏定義、條件編譯等操作。
二、C語言在操作系統(tǒng)相關(guān)開發(fā)中的應(yīng)用

C語言在操作系統(tǒng)相關(guān)的開發(fā)中有著廣泛的應(yīng)用,例如驅(qū)動開發(fā)、嵌入式開發(fā)等。其強(qiáng)大的底層控制能力使得它在這些領(lǐng)域具有得天獨(dú)厚的優(yōu)勢。
三、C語言在手機(jī)App開發(fā)中的應(yīng)用與挑戰(zhàn)
雖然C語言在底層開發(fā)中具有強(qiáng)大的能力,但在手機(jī)App開發(fā)中,尤其是針對移動設(shè)備的圖形界面開發(fā),C語言的難度相對較大,也很少有人這么做。這是因?yàn)橄啾扔谄渌呒壵Z言,如Java或Swift等,C語言的開發(fā)門檻較高,學(xué)習(xí)曲線較陡峭。移動設(shè)備上的圖形界面開發(fā)通常需要更多的資源和工具支持,而C語言在這方面相對較弱。對于一些需要高性能或特殊功能的App,使用C語言進(jìn)行底層開發(fā)仍然是一種重要的選擇。例如,某些游戲或高性能應(yīng)用的底層邏輯可能會使用C語言進(jìn)行開發(fā)。雖然挑戰(zhàn)存在,但并不意味著C語言無法用于手機(jī)App的開發(fā)。開發(fā)者可以根據(jù)實(shí)際需求選擇最合適的開發(fā)語言和工具。然而需要注意的是,由于移動設(shè)備的硬件和操作系統(tǒng)差異較大,使用C語言進(jìn)行手機(jī)App開發(fā)需要針對不同的平臺和環(huán)境進(jìn)行相應(yīng)的適配和優(yōu)化工作。這也增加了開發(fā)的復(fù)雜性和難度。因此開發(fā)者需要充分了解目標(biāo)平臺的特性和限制以確保開發(fā)的順利進(jìn)行和應(yīng)用的穩(wěn)定運(yùn)行。同時開發(fā)者也需要不斷學(xué)習(xí)和掌握最新的技術(shù)和工具以提高開發(fā)效率和產(chǎn)品質(zhì)量。總之雖然C語言在手機(jī)App開發(fā)中面臨一些挑戰(zhàn)但仍然是一種強(qiáng)大的開發(fā)工具開發(fā)者可以根據(jù)實(shí)際需求選擇是否使用C語言進(jìn)行開發(fā)并充分利用其優(yōu)勢實(shí)現(xiàn)高質(zhì)量的應(yīng)用。四、C語言的未來發(fā)展隨著技術(shù)的不斷進(jìn)步和需求的不斷變化C語言也在不斷地發(fā)展和完善其應(yīng)用領(lǐng)域也在不斷擴(kuò)大盡管在手機(jī)App開發(fā)領(lǐng)域C語言面臨一些挑戰(zhàn)但在其他領(lǐng)域如嵌入式系統(tǒng)、系統(tǒng)開發(fā)、游戲開發(fā)等方面C語言仍然具有廣泛的應(yīng)用前景此外隨著開源項(xiàng)目和自由軟件的不斷涌現(xiàn)C語言的生態(tài)系統(tǒng)也在不斷完善為開發(fā)者提供了更多的資源和支持因此可以預(yù)見在未來C語言仍將是一種重要的編程語言并繼續(xù)發(fā)揮其重要作用五、總結(jié)綜上所述C語言是一種強(qiáng)大且豐富的編程語言具有廣泛的應(yīng)用領(lǐng)域雖然在手機(jī)App開發(fā)領(lǐng)域面臨一些挑戰(zhàn)但仍然是一種重要的開發(fā)工具開發(fā)者可以根據(jù)實(shí)際需求選擇是否使用C語言進(jìn)行開發(fā)并充分利用其優(yōu)勢實(shí)現(xiàn)高質(zhì)量的應(yīng)用同時隨著技術(shù)的不斷進(jìn)步和需求的不斷變化C語言的未來發(fā)展前景仍然廣闊。