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 }