zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    MYSQL数据库基础
    MSYQL操数据DML
    MYSQL外键约束
    MYSQL多表查询
    MYSQL结果排序、分页查询、聚合函数
    未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项”的解决方法
    由于扩展配置问题而无法提供您请求的页面。
    JS中的prototype(转载)
    mvc表单如何绑定bool类型的属性或变量
    使用c#正则验证关键字并找出匹配项
  • 原文地址:https://www.cnblogs.com/Alimonky/p/5951012.html
Copyright © 2011-2022 走看看