MFC_对话框

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 
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 }

 

以上是关于MFC_对话框的主要内容,如果未能解决你的问题,请参考以下文章

MFC常见问题以及解决方法_Cstring和string互相转换

006.MFC_对话框_复选框_单选钮

Windows MFC 对话框程序

[ MFC ] 对话框动态控件的创建 在Picture Control控件上显示图片 [大三TJB_708]

非 MFC 应用程序中的 MFC 对话框

MFC (如何通过点击botton打开一个文件夹/文件)