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按键点击添加程序,实现文本框中实现加法操作
如何在单文档文件中显示一个 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"的声明
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 }