MFC_對話框

1.建立對話框的窗口,分爲模態對話框和非模態對話框,如下是其操做代碼和其原理函數

 1 void CMyboleView::OnDialog() //1建立菜單消息響應
 2 {
 3     // TODO: Add your command handler code here
 4      CtestDlg dlg;  //建立對話框對象,需包含類所在的頭文件
 5      dlg.DoModal();//模態對話框,只能點擊對話框,其餘不能點擊,停在這一行,其餘不執行,自己自帶顯示
 6 
 7 /*    //CtestDlg dlg;//這個要是成員變量!由於非模態對話框程序會繼續進行,對象生命週期在這個函數就要結束兩種方式解決1.成員變量
 8                    //定義指針解決,可解決生命週期的問題,點擊OK窗口不是銷燬,而是隱藏,會進入虛函數Onok來響應,來銷燬窗口,因此要覆蓋Onok虛函數
 9     CtestDlg *pDlg= new CtestDlg();
10     pDlg->Create(IDD_DIALOG1,this);
11     pDlg->ShowWindow(SW_SHOW);//顯示對話框*/
   
17 }

2按鍵點擊添加程序,實現文本框中實現加法操做this

   

  如何在單文檔文件中顯示一個 CButton 的對象?
在 CMainFrame::OnCreate()中定義一個 CButton 的對象 btn;而後調用 btn.Create("維新
",WS_DISABLED |WS_CHILD | WS_VISIBLE | BS_AUTO3STATE,
CRect(0,0,300,100),/*GetParen
注意點:
(1).此處 btn 不能是局部變量,不然它的生命週期過短,將不能顯示。
(2).在 create 函數的第二個參數中加入 WS_VISIBLE 參數才行。不然必須調用
ShowWindow
也能夠在 view 的 OnCreate 消息響應函數中加入
(3).CButton 類的定義頭文件在 afxwin.h 中,而 stdafx.h 包含了 afxwin.h,因此能夠直接
使用。由於 MFC 中的每個類中都有#include "stdafx.h"的聲明spa

 1 void CtestDlg::OnBtnadd() //2按鍵點擊添加程序
 2 {
 3     // 點擊按鈕控件生成按鈕
 4 /*    static BOOL m_bIsCreate=FALSE; //靜態變量,直接分配內存空間
 5 //    if(m_blsCreate==FALSE)
 6     if(m_blsCreate==FALSE)
 7     { 
 8     m_btm.Create("帥哥",BS_DEFPUSHBUTTON|WS_VISIBLE|WS_CHILD,CRect(0,0,100,100),this,123);//WS_VISIBLE若是不用,那就函數show
 9 //     m_blsCreate=TRUE;
10     m_blsCreate=TRUE;
11     }
12     else
13     {
14     m_btm.DestroyWindow();
15 //    m_blsCreate=FALSE;
16     m_blsCreate=FALSE;
17     }*/
18 
19  /* if(!m_btm.m_hWnd)//判斷句柄是否爲空,跟窗口有關聯就有值,無關聯爲空,最簡單
20   {
21     m_btm.Create("帥哥",BS_DEFPUSHBUTTON|WS_VISIBLE|WS_CHILD,CRect(0,0,100,100),this,123);//WS_VISIBLE若是不用,那就函數show
22   }
23   else
24   {
25   m_btm.DestroyWindow();//銷燬串口,句柄就爲空啦
26   }*/
27 
28 
29 
30     /*實現加法運算1*/
31 /*    int num1,num2,num3;
32     char ch1[10],ch2[10],ch3[10];
33     GetDlgItem(IDC_EDIT1)->GetWindowText(ch1,10);
34     GetDlgItem(IDC_EDIT2)->GetWindowText(ch2,10);
35     num1=atoi(ch1);
36     num2=atoi(ch2);//字符串變整形
37     num3=num1+num2;
38     itoa(num3,ch3,10);//整形變字符串
39 
40     GetDlgItem(IDC_EDIT3)->SetWindowText(ch3);*/
41 
42 
43 /*/*實現加法運算2*/
44 /*    int num1,num2,num3;
45     char ch1[10],ch2[10],ch3[10];
46     GetDlgItemText(IDC_EDIT1,ch1,10);//提取文本
47     GetDlgItemText(IDC_EDIT2,ch2,10);
48     num1=atoi(ch1);
49     num2=atoi(ch2);//字符串變整形
50     num3=num1+num2;
51     itoa(num3,ch3,10);//整形變字符串
52     SetDlgItemText(IDC_EDIT3,ch3);//設置文本*/
53 
54 /*/*實現加法運算3*/
55 /*    int num1,num2,num3;
56     num1=GetDlgItemInt(IDC_EDIT1);
57     num2=GetDlgItemInt(IDC_EDIT2);
58     num3=num1+num2;
59     SetDlgItemInt(IDC_EDIT3,num3,TRUE);*/
60 
61 
62     /*/*實現加法運算4 最簡單:操做原理:經過添加控件實現控件和成員變量之間的綁定,經過直接操做成員變量的數據類型,和直接進行操做,即便對書籍進行更新,實現加法操做*/
63     UpdateData();
64     m_num3=m_num1+m_num2;//這句話無法獲取數據的,詳情瞭解DoDateChange,須要更新數據
65     UpdateData(FALSE); //告訴對話框控件初始化,把值放進去
66
 1 /*    //方法7,控件調用法
 2     m_edit1.GetWindowText(ch1,10);
 3     m_edit2.GetWindowText(ch2,10);
 4     num1=atoi(ch1);
 5     num2=atoi(ch2);//字符串變整形
 6     num3=num1+num2;
 7     itoa(num3,ch3,10);//整形變字符串
 8     m_edit3.SetWindowText(ch3);*/
 9 
10 
11 /*/方法8,
12     int num1,num2,num3;
13     char ch1[10],ch2[10],ch3[10];
14     //::SendMessage(GetDlgItem()->m_hWnd,WM_GETTEXT,10,(LPARM)ch1)//消息 
15     //::SendMessage(m_edit3.m_hWnd,WM_GETTEXT,10,(LPARM)ch1)
16     //GetDlgItem(IDC_EDIT1)->SendMessage(WM_GETTEXT,10,(LPARAM)ch1);
17     m_edit1.SendMessage(WM_GETTEXT,10,(LPARAM)ch1);
18     m_edit2.SendMessage(WM_GETTEXT,10,(LPARAM)ch2);
19     num1=atoi(ch1);
20     num2=atoi(ch2);//字符串變整形
21     num3=num1+num2;
22     itoa(num3,ch3,10);//整形變字符串
23     m_edit3.SendMessage(WM_SETTEXT,0,(LPARAM)ch3);*/
24 
25 //
26 /*/方法9
27     SendDlgItemMessage(IDC_EDIT1,WM_GETTEXT,10,(LPARAM)ch1);
28     SendDlgItemMessage(IDC_EDIT2,WM_GETTEXT,10,(LPARAM)ch2);
29     num1=atoi(ch1);
30     num2=atoi(ch2);//字符串變整形
31     num3=num1+num2;
32     itoa(num3,ch3,10);//整形變字符串
33     SendDlgItemMessage(IDC_EDIT3,WM_SETTEXT,10,(LPARAM)ch3);*/

 

67 }

3.靜態文本點擊程序,須要特別注意的是靜態文本須要編輯,須要勾選上Notify,單擊纔會有做用指針

 1 void CtestDlg::OnNumber1() //3靜態文本按鍵點擊添加程序
 2 {
 3     // TODO: Add your control notification handler code here
 4     CString str;
 5     if(GetDlgItem(IDC_NUMBER1)->GetWindowText(str),str=="Number1")//GetDlgItem()對話框指針函數,得到控件內容,, 必定要改變   Notify  才能點擊有做用
 6     {
 7        GetDlgItem(IDC_NUMBER1)->SetWindowText("數值1");
 8     }
 9     else
10     {
11     
12     }
13 }
相關文章
相關標籤/搜索