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

正文內(nèi)容

第五章基于對話框編程-資料下載頁

2025-09-30 16:00本頁面
  

【正文】 (2) 無模式對話框?qū)ο笫怯?new操作符在堆中動態(tài)創(chuàng)建的,而不是以成員變量的形式嵌入到別的對象中或以局部變量的形式構建在堆棧上。通常應在對話框的擁有者窗口類內(nèi)聲明一個指向?qū)υ捒蝾惖闹羔槼蓡T變量,通過該指針可訪問對話框?qū)ο蟆? 杭州電子科技大學通信工程學院 (3) 通過調(diào)用 CDialog::Create函數(shù)來啟動對話框,而不是 CDialog::DoModal,這是無模式對話框的關鍵所在。由于 Create函數(shù)不會啟動新的消息循環(huán),對話框與應用程序共用同一個消息循環(huán),這樣對話框就不會壟斷用戶的輸入。 Create在顯示了對話框后就立即返回,而 DoModal是在對話框被關閉后才返回的。在 MFC程序中,窗口對象的生存期應長于對應的窗口,也就是說,不能在未關閉屏幕上窗口的情況下先把對應的窗口對象刪除掉。由于在 Create返回后,不能確定對話框是否已關閉,這樣也就無法確定對話框?qū)ο蟮纳嫫?,因此只好在堆中構建對話框?qū)ο?,而不能以局部變量的形式來構建? 杭州電子科技大學通信工程學院 4) 必須調(diào)用 CWnd::DestroyWindow而不是CDialog::EndDialog來關閉無模式對話框。調(diào)用 CWnd::DestroyWindow是直接刪除窗口的一般方法。由于默認的 CDialog::OnOK和CDialog::OnCancel函數(shù)均調(diào)用 EndDialog,故程序員必須編寫自己的 OnOK和 OnCancel函數(shù)并且在函數(shù)中調(diào)用 DestroyWindow來關閉對話框。 杭州電子科技大學通信工程學院 因為是用 new操作符構建無模式對話框?qū)ο?,因此必須在對話框關閉后,用 delete操作符刪除對話框?qū)ο?。在屏幕上一個窗口被刪除后,框架會調(diào)用 CWnd::PostNcDestroy,這是一個虛擬函數(shù),程序可以在該函數(shù)中完成刪除窗口對象的工作,具體代碼如下 : void CModelessDialog::PostNcDestroy { delete this。 //刪除對象本身 } 杭州電子科技大學通信工程學院 [例 Modeless] 創(chuàng)建并使用無模式對話框 (1) 用 MFC AppWizard(exe)創(chuàng)建一個默認的基于對話框應用程序 Modeless。 (2) 在該項目中添加一個對話框資源,將其標識符設為 IDD_DIALOG_SECOND,標題設為“無模式對話框”, (3) 對話框字體和大小設為“宋體, 9號”。為 IDD_DIALOG_SECOND對話框資源創(chuàng)建一個 對話框類 CSecondDlg。 杭州電子科技大學通信工程學院 (4) 按 Ctrl+W快捷鍵打開 MFC ClassWizard,從“ Class name”列表中選擇 CSecondDlg,在 IDs列表中選擇 IDOK, 是對話框中 [OK] 按鈕的標識符,然后在 Messages框中 選擇 BN_CLICKED(單擊按鈕 )消息,單擊 [Add Function] 按鈕或雙擊 BN_CLICKED消息,出現(xiàn) “ Add Member Function”對話框以輸入成員函數(shù)的名稱,保留系統(tǒng)默 認的函數(shù)名為 OnOK,如圖所示。 杭州電子科技大學通信工程學院 (5) 修改 CSecondDlg::OnOK函數(shù)中的代碼。 void CSecondDlg::OnOK() { // 添加其他代碼使用戶輸入對話框的數(shù)據(jù)有效 DestroyWindow()。 // 終止對話框顯示 delete this。 // 刪除對話框,釋放內(nèi)存空間 } 代碼中 , DestroyWindow是對話框基類 CWnd的一個成員函數(shù), 用來終止窗口。 (6) 添加 [Cancel]按鈕 (標識符為 IDCANCEL)的 BN_CLICKED 消息映射,并修改其映射函數(shù) CSecondDlg::OnCancel的代碼。 void CSecondDlg::OnCancel() // 單擊 [Cancel](取消 )按鈕 { DestroyWindow()。 delete this。 } 杭州電子科技大學通信工程學院 (7)主對話框上加入一個 Button控件,打開 ClassWiard,添加其點擊事件出現(xiàn)“ Add Member Function”對話框,取系統(tǒng)默認的函數(shù)名 OnTestDlg,并在此成員函數(shù)中添加下列代碼: void CMainFrame::OnTestDlg() { CSecondDlg *pDlg = new CSecondDlg。 // 使用 new為對分配內(nèi)存空間 pDlgCreate( IDD_DIALOG_SECOND )。 // 創(chuàng)建對話框 pDlgShowWindow( SW_NORMAL )。 // 顯示對話框 } 代碼中, Create可用來以一個對話框資源來創(chuàng)建對話框, ShowWindow是一個 CWnd成員函數(shù),用來顯示對話框, SW_NORMAL是用來指定將窗口顯示成一般常用的狀態(tài)。 杭州電子科技大學通信工程學院 (8)在文件 CSecondDlg類的文件包含 include (9)編譯并運行。在應用程序上,多 單擊 Button,將會在同一個位置中出現(xiàn)多個對話框,拖動這些對話框到適當位置,如圖 : 這就是無模式對話框的效果,從上述示例可以看出:模式和無模式對話框在用 編輯器設計和使用 MFC ClassWizard創(chuàng)建用 戶對話框類的方法是一致 的,但在對話框的創(chuàng)建和 退出的方式是不同的。 杭州電子科技大學通信工程學院 第五章 結束
點擊復制文檔內(nèi)容
試題試卷相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1