1. 程式人生 > >MFC之對話方塊建立與銷燬總結

MFC之對話方塊建立與銷燬總結

主void CMoshiwindowDlg::OnButton1() 
{
    // TODO: Add your control notification handler code here
    CDialogproty dlg; 
    dlg.DoModal(); 
    m_text.SetWindowText(dlg.text);

}

子:

1.標頭檔案宣告變數

2.
void CDialogproty::OnButton1() 
{
    // TODO: Add your control notification handler code here
    m_text.GetWindowText(text);
    CDialog::EndDialog(0); 
}

1.顯示模式對話方塊:

CDialogDemo dlg;
dlg.DoModal();

2.顯示非模式對話方塊:

CDialogDemo *dlg=new CDialogDemo(this); 
dlg->Create(IDD_GENERAL_CONTROL); 
dlg->ShowWindow(SW_SHOW);

二、關閉對話方塊:

1.CDialog::OnOK();   //確定按鈕按下         CDialog::OnCancel(); //取消按鈕被按下

2.CDialog::DestoryWindow();  

3.CDialog::EndDialog(0);  

注:CDialog::CloseWindow();     僅僅是最小化對話方塊
   
PostMessage(WM_CLOSE)


相關函式詳解:

CloseWindow 
函式功能:該函式最小化指定的視窗,但並不銷燬該視窗。
  函式原型:BOOL CloseWindow(HWND hWnd);
  引數:
  hWnd:將要最小化的視窗的控制代碼。
  返回值:如果函式成功,返回值為非零;如果函式失敗,返回值為零。若想獲得更多錯誤資訊,請呼叫GetLastError函式。
  備註:視窗尺寸被最小化成一個圖示,並移動到螢幕的圖示區域。系統顯示視窗的圖示而不顯示視窗,並在圖示下顯示視窗標題。應用程式必須使用DestroyWindow函式銷燬視窗。

DestroyWindow  
函式功能:銷燬指定的視窗。這個函式通過傳送WM_DESTROY 訊息和 WM_NCDESTROY 訊息使視窗無效並移除其鍵盤焦點。這個函式還銷燬視窗的選單,清空執行緒的訊息佇列,銷燬與視窗過程相關的定時器,解除視窗對剪貼簿的擁有權,打斷剪貼簿器的檢視鏈。
  函式原型:BOOL DestroyWindow( HWND hWnd // handle to window to destroy);
  hWnd :將被銷燬的視窗的控制代碼。
  返回值:如果函式成功,返回值為非零:如果函式失敗,返回值為零。若想獲得更多錯誤資訊,請呼叫GetLastError函式。
  備註:一個執行緒不能使用本函式銷燬別的執行緒建立的視窗。如果這個視窗是一個不具有WS_EX_NOPARENTNOTIFY 樣式的子視窗,則銷燬視窗時將發WM_PARENTNOTIFY 訊息給其父視窗。
  Windows CE: 本函式將不傳送 WM_NCDESTROY 訊息.

EndDialog  
函式功能:該函式清除一個模態對話方塊,並使系統中止對對話方塊的任何處理。
  函式原型:BOOL EndDialog(HWND hDlg,int nResult);
  引數:
  hDlg:表示要被清除的對話方塊視窗。
  NResult:指定從建立對話方塊函式返回到應用程式的值。
  返回值:如果函式呼叫成功,則返回值為非零值;如果函式呼叫失敗則返回值為零。若想獲得錯誤資訊請呼叫GetLastError函式。
   備註:由DialogBox,DialogBoxParam、DialogBoxlndirect和DialogBoxlndirectParam函式 建立的對話方塊一定要用EndDialog函式來清除。應用程式從對話方塊應用程式內部呼叫EndDialog函式,該函式不能為其他目的而供使用。對話方塊應 用程式可以在任何時間呼叫EndDialog函式;甚至在WM_INITDIALOG訊息處理過程中。如果應用程式在WM_INTDIALOG訊息處理過 程中呼叫該函式,則對話方塊在顯示和輸入焦點被設定之前對話方塊被清除。EndDialog函式並不立即清除對話方塊。而是設定一個標誌,並且允許對話方塊應用程 序把控制權返回系統。系統在試圖從應用程式佇列檢索下一個訊息之前檢測標誌。如果已經設定了標誌則系統中止訊息迴圈,清除對話方塊,且用nResUlt中的 值作為從建立對話方塊的函式中返回的值。

文章出處:http://blog.csdn.net/bbrsher/article/details/6088108

相關推薦

MFC對話方塊建立銷燬總結

主void CMoshiwindowDlg::OnButton1()  {     // TODO: Add your control notification handler code here     CDialogproty dlg;      dlg.DoModa

十一、Qt新對話方塊建立銷燬

模態對話方塊就是指在子對話方塊彈出時,焦點被強行集中於該子對話方塊,子對話方塊不關閉,使用者將無法操作其他的視窗。非模態相反,使用者仍然可以操作其他的視窗,包括該子對話方塊的父對話方塊。 如果從執行緒角度來講,模態對話方塊實際上是執行緒阻塞的,也就是子對話方塊是一個執行

MFC(3):對話方塊建立基礎知識

  模態對話方塊:建立後不能對其他視窗進行操作 非模態對話方塊:建立後仍可以對其他視窗進行操作 新建專案-->MFC應用程式-->基於對話方塊、MFC標準-->完成 預設生成的類有:應用程式類、對話方塊類 誤操作關閉對話方塊的解決辦法:解決方案管理器-->點

MFC---對話方塊滾動條的使用

  (1)    SetScrollRange BOOL SetScrollRange(   __in  HWND hWnd,   __in  int nBar,   __in  int nMinPos,   __in  int nMaxPos,   __in  BOOL

VC非模態對話方塊建立銷燬

MFC應用程式中開啟模式對話方塊的函式呼叫順序 1.DoModal()             過載函式,過載DoModal()成員函式 2.PreSubclassWindow()   過載函式,允許首先子分類一個視窗 3.OnCreate()             訊息響應函式,響應WM_CREATE訊息

模態對話方塊和非模態對話方塊建立銷燬

首先宣告:在網上看了很多資料,很多內容也是從別人那裡學到的,只是結合自己的使用寫下來。 在VS中對話方塊分兩種:模態對話方塊和非模態對話方塊。 模態對話方塊就是一旦我被打開了,就得完全做我的事情,只有把我關了,你才能做其他的事情。 非模態對話方塊就是你把我打開了,可以去幹點

關於子對話方塊建立銷燬

1.顯示對話方塊 1.1顯示模式對話方塊: CDialogDemo dlg; dlg.DoModal(); 1.2 顯示非模式對話方塊: CDialogDemo *dlg=new CDialogDem

VC/MFC對話方塊建立檢視並在檢視區新增ListCtrl控制元件

自定義的view類用於顯示在對話方塊上 class CGroupMenuView : public CScrollView { protected:  CGroupMenuView(); ……………… ………… };   class CWorkView :

MFC學習 對話方塊設定背景顏色及控制元件透明的方法

對話方塊設定背景色之後控制元件不透明的問題。 1.對話方塊設定背景色: 方法1:(用OnPaint()) 在Dlg.h中:宣告 afx_msg void OnPaint();                                HICON m_hIcon; 在Dl

mfc 關閉對話方塊的各種訊息方法

//http://my.csdn.net/crystal521 以下是對話方塊關閉時傳送的不同訊息:    1)點選OK按鈕:OnOk-WM_DESTROY   2) 點選Cancel按鈕:OnCancel-WM_DESTROY   3) 點選×按鈕:WM_CLOSE-

Visual Studio 2010 VC++ 6.0 的操作差異(一)對話方塊中新增OnInitDialog()函式

Visual Studio 2010 與 VC++ 6.0 在個別操作上是存在差異的。 用MFC嚮導建立的對話方塊會自動生成OnInitDialog()函式。但是手動新增的對話方塊或者建立子對話方塊時就不會生成OnInitDialog()。 Visual Studio 2010 與 VC++ 6.0 的操作

VS2013 MFC基於對話方塊程式設計(建立工程)

一、新建MFC專案 選擇:基於對話方塊MFC的使用:  在共享DLL中使用MFC (程式執行需要dll)  在靜態庫中使用MFC (程式較大,執行時不需要dll) 設定MFC程式主框架樣式和標題  高階功能  若是用不上“ActiveX控制元件”可以去掉勾選,若要涉及

非模態對話方塊 建立 銷燬

非模態對話方塊 5.4.1 非模態對話方塊的特點 與模態對話方塊不同,非模態對話方塊不壟斷使用者的輸入,使用者開啟非模態對話方塊後,仍然可以與其它介面進行互動。 非模態對話方塊的設計與模態對話方塊基本類似,也包括設計對話方塊模板和設計CDialog類的派

MFC對話方塊建立點陣圖按鈕

1.可新建一個類ImageButton(繼承自CButton),並設定其風格為自繪: ModifyStyle(0,BS_OWNERDRAW);ImageButton.h:class ImageButton : public CButton{private: public: I

JavaFX對話方塊建立

  在JavaFX的官方API中,是沒有對話方塊相關的類。所以我們在需要使用對話方塊的時候,可以使用Swing的庫。但是由於風格相差較大,更多的時候我們需要用JavaFX來建立對話方塊。   下面我們來看看怎麼用JavaFX來建立一個對話方塊吧。   JavaFX用於

Android對話方塊的使用

一.對話方塊 對話方塊:就是在當前Activity之上顯示的小視窗,用於和使用者間進行資訊互動。對話方塊通常用來作為提示或直接與程式執行相關的短暫停留介面。 ** 二、AlertDialog可以實現大部分和使用者互動的對話方塊 ** 為了建立一個AlertDialog

MFC對話方塊呼叫主對話方塊的變數和函式

1、在子對話方塊中定義主對話方塊的物件指標: CSensorSysDlg *parent = (CSensorSysDlg*)GetParent();//CSensorSysDlg是主對話方塊對應的類 2、呼叫 //呼叫變數 parent->i;//i是主對話方塊內int型別的

程序執行緒(二)——程序的管理、建立銷燬

接上回: 我們介紹了程序的由來,程序的概念,程序的組成部分和它在執行過程中的狀態。我們說程序最重要的部分是程序控制塊PCB,作業系統通過PCB來管理各個程序有條不紊的在我們的機器中執行的。那麼作業系統是怎麼樣管理這麼多程序的呢?程序是怎麼樣建立、又是怎麼樣銷燬的呢?  

MFC修改對話方塊的標題以及圖示

一、對話方塊標題欄內容為靜態 直接在對話方塊屬性“General”的“Caption”中修改。 二、對話方塊標題欄內容為動態生成的 在對應對話方塊的初始化函式OnInitDialog()中新增以下程式碼: CString title; title.Format("%d",Id

MFC對話方塊新增圖片背景

在windows開發當中做介面的主要技術之一就是使用MFC,通常我們看到的QQ,360,暴風影音這些漂亮的介面都可以用MFC來實現。今天我們來說一下如何用MFC美化對話方塊,預設情況下,對話方塊的背景如下: 那麼,我們如何將它的背景變成如下介面呢,而且還要保留對話方塊的移動功能,漂亮背