首页 > 代码库 > MFC_对话框

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     else13     {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如果不用,那就函数show22   }23   else24   {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 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     else10     {11     12     }13 }

 

MFC_对话框