C++語言是主要使用的編程語言,但是C++憑借其對C的兼容性,面向對象性質也開始在該領域嶄露頭角,在系統級的開發上,C++技術應用居多。這3種語言各有特色。總的來說,C++的應用集中在如下主要領域。
一、應用程序框架
在CmyApp類中定義了一個虛函數:Virtual BOOL InitIstance();用來初始化應用程序。在這裡可以初始化應用程序框架。在CMyApp類中有一個數據成員m_pMainWnd這是主框架窗口的指針。在需要時可以用AfxGetApp()->m_pMainWnd來獲得。其中AfxGetApp()是獲得應用程序的指針。
初始化應用程序:
- m_pMainWnd=new CmyFrame();
- m_pMainWnd->ShowWindow(m_nCmdShow);
- m-pMainWnd->UpdateWindow();
如果更新區域不為空,UpdateWindow成員函數直接發送消息WM_PAINT 越過應用程序隊列,如果更新區域為空,則不會發送WM_PAINT消息。 這個函數設置窗口的可視狀態。每個應用程序只應用CwinApp::m_nCmdShow為主窗口調用一次ShowWindow.以後調用ShowWindow應該用下面列出的值來替代CWinApp::m_mCmdShow指定的值。
- CWnd::ShowWindow
- 函數原型:BOOL ShowWindow(int m_nCmdShow)
- 返回值:窗口可見為:非零值;
- 窗口不可見為:零;
- m_nCmdShow可以指定的值有:
- SW_HIDE 隱藏窗口並將活動狀態傳遞給其它窗口。
- SW_MINIMIZE最小化窗口並激活系統列表中的頂層窗口。
- SW_RESTORE 激活並顯示窗口。如果窗口是最小化或最大化的,Windows恢復其原來的大小和位置。
- SW_SHOW 激活窗口並以其當前的大小和位置顯示。
- SW_SHOWMAXIMIZED 激活窗口並顯示為最大化窗口。
- SW_SHOWMINIMIZED 激活窗口並顯示為圖標。
- SW_SHOWMINNOACTIVE 將窗口顯示為圖標。當前活動的
- 窗口將保持活動狀態。
- SW_SHOWNA 按照當前狀態顯示窗口。當前活動的窗口將保持活動狀態。
- SW_SHOWNOACTIVATE 按窗口最近的大小和位置顯示。當前活動的窗口將保持活動狀態。
- SW_SHOWNORMAL 激活並顯示窗口。如果窗口是最小化或最大化的,則Windows恢復它原來的大小和位置。
CmyFrame類 類CmyFrame的對象代表著應用程序的主框架窗口。當構造函數調用基類CframeWnd的Create成員函數時,Windows將創建具體的的窗口結構,同時應用程序框架會將所創建的窗口結構連接到C++對象中。為了顯示所創建的窗口,必須調用基類中的ShowWindow和UpdateWindow成員函數。CmyFrame::Onpaint函數 應用程序框架在每次需要重新繪制窗口時,都要調用這個非常重要的且已經被映射過的CmyFrame類的成員函數。
在程序運行時,在用戶改變了窗口的大小時,在窗口的全部或部分被重新顯現時,OnPaint成員函數都會被調用。CpaintDC和圖形設備接口GDI)有關,MFC庫應用程序框架並沒有采用虛函數來處理Window消息,相反,它通過一些宏來將特定的消息映射到派生類中相應的成員函數上。MFC消息控件函數要求我們提供函數原型、函數體以及在消息映射中的。
同樣的原因,在寫了“你應當如何學習C++技術一文之後,當孟巖先生邀請我給《程序員》寫一個系列的文章,介紹一下我在接觸C++的過程中的態度和認識轉變時,我雖然非常高興的答應了,但直到現在3個月過去了還是顆粒無收。為什麼?因為我覺得真正本質的問題沒有被清晰的觸摸到;所以直到現在我都沒有動筆,免得廢話說了一大堆,除了能被當成小說讀讀之外,對真正考慮是否要學習乃至使用C++的人未必有什麼實際用處。
然而,這麼個念頭一直都放在潛意識裡面。前一陣子和Bjarne通信,談到了關於C++技術的一些想法,在郵件裡面總結了一下C++的復雜性來源,感覺思路清晰了許多。而這篇文章要達到的目的,正是傳達對C++的復雜性的一個具體而明確的認識,有了這個認識作為支持,我們便可以推導出學習C++的最佳實踐者)的方法。