freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第4章mfc基本應(yīng)用程序的建立-閱讀頁(yè)

2024-11-06 13:15本頁(yè)面
  

【正文】 // 以下虛函數(shù)供實(shí)現(xiàn)打印與打印預(yù)覽功能時(shí)重載。 virtual BOOL OnPreparePrinting(CPrintInfo* pInfo)。 virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)。 ifdef _DEBUG virtual void AssertValid() const。 dc) const。 ifndef _DEBUG // 內(nèi)聯(lián)函數(shù),用于返回在文檔模板定義的文檔類指針 inline CEx_SDIHelloDoc* CEx_SDIHelloView::GetDocument() { return (CEx_SDIHelloDoc*)m_pDocument。 MFC AppWizard CEx_SDIHelloView類的 : include include include include ... IMPLEMENT_DYNCREATE(CEx_SDIHelloView, CView) BEGIN_MESSAGE_MAP(CEx_SDIHelloView, CView) //{{AFX_MSG_MAP(CEx_SDIHelloView) //}}AFX_MSG_MAP // 為 “ 文件 ” 菜單下的 “ 打印 ...”和 “ 打印預(yù)覽 ” 映射標(biāo)準(zhǔn)打印命令 ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) END_MESSAGE_MAP() CEx_SDIHelloView::CEx_SDIHelloView() { } CEx_SDIHelloView::~CEx_SDIHelloView() { } BOOL CEx_SDIHelloView::PreCreateWindow(CREATESTRUCTamp。 } MFC AppWizard void CEx_SDIHelloView::OnDraw(CDC* pDC) { CEx_SDIHelloDoc* pDoc = GetDocument()。 } BOOL CEx_SDIHelloView::OnPreparePrinting(CPrintInfo* pInfo) { // default preparation return DoPreparePrinting(pInfo)。 } void CEx_SDIHelloView::Dump(CDumpContextamp。 } CEx_SDIHelloDoc* CEx_SDIHelloView::GetDocument() { ASSERT(m_pDocument IsKindOf(RUNTIME_CLASS(CEx_SDIHelloDoc)))。 } endif //_DEBUG MFC AppWizard 視圖類 CEx_SDIHelloView是從基類 CView派生而來(lái)的。這種文檔和視圖的結(jié)合,稱為 “ 文檔 /視圖結(jié)構(gòu) ” 機(jī)制,是MFC應(yīng)用程序框架的核心,可以進(jìn)行消息的處理、文檔的格式化及文檔數(shù)據(jù)的可視化處理等;它不但使文檔數(shù)據(jù)和視圖分離,而且能簡(jiǎn)化應(yīng)用程序并減少代碼冗余。在此函數(shù)中,可以更改其 CREATESTRUCT結(jié)構(gòu)內(nèi)容,將改變相應(yīng)窗口的風(fēng)格 . ? OnDraw是個(gè)非常有用的虛函數(shù),當(dāng)應(yīng)用程序中的窗口狀態(tài)或大小發(fā)生改變時(shí),系統(tǒng)均會(huì)調(diào)用此函數(shù)重新繪制文檔窗口的客戶區(qū)。 例如,下面的代碼: void CEx_SDIHelloView::OnDraw(CDC* pDC) { CEx_SDIHelloDoc* pDoc = GetDocument()。 pDCTextOut(100,100,Hello,World!)。 ? 消息映射機(jī)制:它是實(shí)現(xiàn)對(duì)各種不同消息的處理。 ? 運(yùn)行時(shí)類型檢查機(jī)制:它通過(guò) GetRuntimeClass、 IsKindOf、宏DECLARE_DYNAMIC和宏 IMPLEMENT_DYNAMIC來(lái)實(shí)現(xiàn)的。 ? 實(shí)現(xiàn)文檔 /視圖機(jī)制是通過(guò) MFC應(yīng)用程序向?qū)ё詣?dòng)完成的,而消息和數(shù)據(jù)映射則是通過(guò) MFC的 ClassWizard來(lái)自動(dòng)進(jìn)行的。 ? 在源代碼文件的文檔編輯窗口中,右擊鼠標(biāo),選擇 ClassWizard命令。 圖 MFC ClassWiard對(duì)話框 ClassWizard ? 消息分類 Windows應(yīng)用程序中的消息主要有三種類型。窗口消息往往帶有參數(shù),以標(biāo)志處理消息的方法。應(yīng)用程序框架處理控件消息的方法和窗口消息相同,但按鈕的BN_CLICKED通知消息除外,它的處理方法與命令消息相同。命令消息的處理方式與其他兩種消息不同,它能夠被多種對(duì)象接收、處理,這些對(duì)象包括文檔類、文檔模板類、應(yīng)用程序本身以及窗口和視類等;而窗口消息和控件的通知消息是由窗口對(duì)象接收并處理的,這里的窗口對(duì)象是指從 CWnd中派生的類的對(duì)象,它包括CFrameWnd、 CMDIFrameWnd、 CMDIChildWnd、 CView、 CDialog以及從這些類派生的對(duì)象等。 (2)在 Class name組合框中,將類名選定為 CEx_SDIHelloView。 (4)雙擊 Messages列表中的 WM_LBUTTOMDOWN消息或單擊 [Add Function]按鈕,都會(huì)在 CEx_SDIHelloView類中添加該消息的映射函數(shù)OnLButtonDown,同時(shí)在 Member funcions列表中顯示這一消息映射函數(shù)和被映射的消息,如圖。 (6)添加下列代碼: void CEx_SDIHelloView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default MessageBox (你好,我的 Visual C++世界! , 問(wèn)候 , 0) 。 } (7)程序運(yùn)行后,在窗口客戶區(qū)左擊,彈出一個(gè)消息對(duì)話框。 //}}AFX_MSG DECLARE_MESSAGE_MAP() ClassWizard 在 ,添加映射宏: BEGIN_MESSAGE_MAP(CEx_SDIHelloView, CView) // 消息映射開始 //{{AFX_MSG_MAP(CEx_SDIHelloView) ON_WM_LBUTTONDOWN() //}}AFX_MSG_MAP … END_MESSAGE_MAP() // 消息映射結(jié)束 在 ,框架: void CEx_SDIHelloView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CView::OnLButtonDown(nFlags, point)。 ? 鼠標(biāo)和鍵盤消息各自都有相應(yīng)的消息處理宏和預(yù)定義消息處理函數(shù),因此消息映射函數(shù)名稱不再需要用戶重新定義。 ? 若指定的消息映射函數(shù)需要?jiǎng)h除,則需要先在 ClassWizard對(duì)話框的Messages列表中選定要?jiǎng)h除的消息映射函數(shù),然后單擊 [Delete Function]按鈕,最后關(guān)閉 ClassWizard對(duì)話框,并在該消息映射函數(shù)所在的類實(shí)現(xiàn)文件(.cpp)中將映射函數(shù)定義的代碼全部刪除。鍵被釋放時(shí),把 WM_KEYUP或WM_SYSKEYUP消息放入消息隊(duì)列中。 ? ClassWizard能自動(dòng)添加了當(dāng)前類的 WM_KEYDOWN和 WM_KEYUP擊鍵消息處理函數(shù)的調(diào)用,它們具有下列函數(shù)原型: afx_msg void OnKeyDown( UINT nChar, UINT nRepCnt, UINT nFlags )。 afx_msg是 MFC用于定義消息函數(shù)的標(biāo)志,參數(shù) nChar表示虛擬鍵代碼,nRepCnt表示當(dāng)用戶按住一個(gè)鍵時(shí)的重復(fù)計(jì)數(shù), nFlags表示擊鍵消息標(biāo)志。最常用的虛擬鍵代碼已被定義在。 nChar表示鍵的 ASCII碼, nRepCnt表示當(dāng)用戶按住一個(gè)鍵時(shí)的重復(fù)計(jì)數(shù),nFlags表示字符消息標(biāo)志。通常,只將鍵盤消息發(fā)送給具有輸入焦點(diǎn)的窗口,但鼠標(biāo)消息不受這種限制。 ClassWizard 這里的客戶區(qū)是指窗口中用于輸出文檔的區(qū)域。 ClassWizard會(huì)將映射成類似 afx_msg void OnXXXX的消息處理函數(shù),原型: afx_msg void OnXXXX( UINT nFlags, CPoint point )。)運(yùn)算,所得結(jié)果若為 TRUE(非 0)時(shí),則表示該鍵被按下。由于它能實(shí)現(xiàn) “ 實(shí)時(shí)更新 ” 以及 “ 后臺(tái)運(yùn)行 ”等功能,因而在應(yīng)用程序中計(jì)時(shí)器是一個(gè)難得的程序方法。 ? nIDEvent指定該計(jì)時(shí)器的標(biāo)識(shí)值 (不能為 0),應(yīng)用程序需要多個(gè)計(jì)時(shí)器時(shí)可多次調(diào)用該函數(shù),但每一個(gè)計(jì)時(shí)器的標(biāo)識(shí)值應(yīng)是唯一的,各不相同 ? nElapse表示計(jì)時(shí)器的時(shí)間間隔 (單位為毫秒 ), lpfnTimer是一個(gè)回調(diào)函數(shù)的指針,該函數(shù)由應(yīng)用程序來(lái)定義,用來(lái)處理計(jì)時(shí)器 WM_TIMER消息。 ? SetTimer函數(shù)成功調(diào)用后返回新計(jì)時(shí)器的標(biāo)識(shí)值。 nIDEvent和用戶調(diào)用 SetTimer函數(shù)設(shè)置的計(jì)時(shí)器標(biāo)識(shí)值是一致的。 ClassWizard ? 其他窗口消息的映射 系統(tǒng)中,除了用戶輸入產(chǎn)生的消息外,還有許多系統(tǒng)根據(jù)應(yīng)用程序的狀態(tài)和運(yùn)行過(guò)程產(chǎn)生的消息,有時(shí)也需要用戶進(jìn)行處理。由于 WM_CREATE消息發(fā)送時(shí),窗口對(duì)象還未完成,窗口還不可見(jiàn),因此在該消息處理函數(shù)OnCreate內(nèi),不能調(diào)用那些依賴于窗口處于完成激活狀態(tài)的函數(shù)。 (3)WM_PAINT消息 當(dāng)窗口的大小發(fā)生變化、窗口內(nèi)容發(fā)生變化、窗口間的層疊關(guān)系發(fā)生變化或調(diào)用函數(shù) UpdateWindow或 RedrawWindow時(shí),系統(tǒng)都將產(chǎn)生 WM_PAINT消息,表示要重新繪制窗口的內(nèi)容。 用 ClassWizard映射該消息的目的是執(zhí)行自己的圖形繪制代碼。單擊 [Add Class],選擇New命令,如圖所示的 New Class對(duì)話框。最下面的 Automation是用來(lái)設(shè)置對(duì)自動(dòng)化的支持。 而當(dāng)添加的類需要?jiǎng)h除時(shí),則需要按下列步驟進(jìn)行: (1)將 Visual C++ 。 (3)選擇 “ File”?“Close Workspace”菜單命令,關(guān)閉項(xiàng)目。 需要注意的是,當(dāng)下一次打開 MFC ClassWizard對(duì)話框時(shí),就會(huì)彈出 Select Source Files對(duì)話框,這時(shí)只要單擊右下的 [Add All]按鈕即
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1