zoukankan      html  css  js  c++  java
  • 大四中软实习笔记20130304

    1 模式对话框
    使用步骤:
    1 画界面----对话框
    2 将界面关联为类
    3 实现该对话框的功能------关联成员变量、成员函数
    4 在主界面的OnInitDialog函数里使用新建的类
      建立了局部变量(对象)----不显示
      调用DoModal成员函数,来显示新的界面

    注意点:
    1 DoModal相当于阻塞函数-----与scanf类似,即如果不按确定或取消按钮,该函数不返回。
    2 利用DoModal的返回值(IDOK  IDCANCEL)来决定,是否退出主界面
    3 关闭窗口的方法:OnOk  OnCancel,区别只是返回值不一样
    3 不要用exit(1)来退出整个程序,因为内存泄露
    代码:按确定按钮,进行密码验证
    void CLogin::OnButtonOk()
    {
        // TODO: Add your control notification handler code here
        UpdateData();
        if(m_edit_name=="zhangsan" && m_edit_passwd=="123456")
        {
           
            OnOK();
        }
        else
        {
            AfxMessageBox("密码错误,请重新输入!");
        }   
    }

    void CLogin::OnButtonCancel()
    {
        // TODO: Add your control notification handler code here
        OnCancel();
       
    }


    在OnInitDialog函数里,增加代码,弹出登陆界面。
        CLogin login;
        //=login.DoModal();
        int nResponse = login.DoModal();
        if (nResponse == IDOK)
        {
            // TODO: Place code here to handle when the dialog is
            //  dismissed with OK
        }
        else if (nResponse == IDCANCEL)
        {
            // TODO: Place code here to handle when the dialog is
            //  dismissed with Cancel
            OnOK();
        }
     


    2 窗口间的消息发送
    2.1 子窗口---->父窗口
    如何得到父窗口的地址?
    利用GetParent函数。注意强制类型转换----恢复真实面目。
    不要忘了操作父窗口的UpdateData
    void CLogin::OnButtonOk()
    {
        // TODO: Add your control notification handler code here
        UpdateData();
        if(m_edit_name=="zhangsan" && m_edit_passwd=="123456")
        {
           
            CMfc3Dlg *p=(CMfc3Dlg *)GetParent();
            p->m_edit_name=m_edit_passwd;
            p->UpdateData(FALSE);
            OnOK();
        }
        else
        {
            AfxMessageBox("密码错误,请重新输入!");
        }   
    }
     
    2.2 父窗口---->子窗口
    方法:
    父窗口有子窗口的对象(变量),所以可以直接操作。
    举例:
    父窗口修改子窗口的 编辑框内的值

    void CMfc3Dlg::OnButtonChaxun()
    {
        // TODO: Add your control notification handler code here
        CChaxunDlg chaxun;
        //chaxun.m_list_stu.InsertColumn(0,"学号",LVCFMT_CENTER,80);  //注意:因为m_list_stu在CChaxunDlg类的构造函数中没有初始化,所以不能操作。
        //chaxun.m_list_stu.InsertColumn(1,"姓名",LVCFMT_CENTER,80);
        //chaxun.m_list_stu.InsertItem(0,"");
        //chaxun.m_list_stu.SetItemText(0,0,"4001");
        //chaxun.m_list_stu.SetItemText(0,1,"wangwu");
        chaxun.m_edit_name_chaxun="测试";    //注意:m_edit_name_chaxun在CChaxunDlg类的构造函数中已经初始化了,所以可以操作。
        chaxun.DoModal();   
    }
    注意:
    控件类的成员变量,在构造函数中没有初始化,所以不能操作。如CListCtrl、CComboBox等类型
    值类的成员变量,在构造函数中初始化过了,所以可以操作。如CString、int等类型

    解决办法:
    使用 子窗口---->父窗口的方法来解决。

  • 相关阅读:
    jmeter(十八)属性和变量
    jmeter(十七)逻辑控制器
    jmeter(九)分布式测试
    jmeter(八)HTTP属性管理器HTTP Cookie Manager、HTTP Request Defaults
    jmeter(七)函数
    jmeter(六)关联
    jmeter(五)集合点
    jmeter(四)检查点
    jmeter(三)参数传递
    jmeter(二)元件的作用域与执行顺序
  • 原文地址:https://www.cnblogs.com/blueswitkey/p/2943793.html
Copyright © 2011-2022 走看看