MFC 对话框编程 总结

孤街浪徒 提交于 2020-03-02 05:46:29

对话框创建方法:

      a. 先在Resource View 下 工程的Dialog文件夹中 右键  Insert Dialog 或Insert Resouce-> 选中 Dialog

      b. 然后在该对话框控件中,右键-》Add Class, 创建一个与之对应的类(如CTestDlg)。在MFC中,对资源的操作通常都是通过一个与资源相关的类来完成的。

使用对话框:

1.  在要使用的文件中添加 b中生成的对话框类的.h文件,根据对话框类型,

        a.  若使用 模态(Modal)对话框( 当对话框显示时,程序暂停,直到关闭这个对话框后,才能继续执行),则使用

CTestDlg dlg;
dlg.DoModal();

        b. 若使用 非模态对话框,则使用

// CTestDlg dlg;
//dlg.DoModal();

CTestDlg *pDlg = new CTestDlg;
pDlg->Create(IDD_DIALOG1,this);
pDlg->ShowWindow(SW_SHOW);

2. 编辑控件的访问:

    方法:添加完编辑控件后, 右键该控件->Add Variable ,添加与该控件相对应的成员变量(可以是值类型也可以是控件类型),来控制控件。

 使用值类型的变量时,若要更新对话框中的控件,则可通过:

        a. 使用UpdateData(true); 根据控件上的内容更新变量值;

        b. 使用UpdateData(false); 根据变量值更新控件。

如:

void CTest::OnBnClickedOk()
{
    // TODO: Add your control notification handler code here
   UpdateData(true);//先由控件中的值 更新 变量
   sum = n1 + n2;
   UpdateData(false); //再 根据变量值  更新 控件
}

3. 对话框标题栏中的 关闭 按钮 设置显示方法:右键对话框->Properties->System Menu 设为true.

4. 使用 Radio Button 控件。

     a. 先用一个Group-box 盛放这些 Radio Button . 然后对第一个Button的属性->Group 设为 true。表示这些Button 为一个组了,只能选中组中的一个。

     b. 为Radio button1 添加一个int 型 成员变量m_Radio,这个变量的值将代表整个Group.(0 -Radio1   1 -Radio2 ....)

     b. 要想使第一个Radio Button 默认被选中,可以再OnInitDialog()函数中 添加:

    CButton* radio=(CButton*)GetDlgItem(IDC_Income); //设置Radio Button1被选中
    radio->SetCheck(1);

       使得 Radio Button1 被选中。其他方法请看:http://paulfzm.iteye.com/blog/967691 

5. 设置 Text Control  显示的值:

GetDlgItem(IDC_Text1 )->SetWindowText("收入:");

 

6. 显示提示框:

      AfxMessageBox("XXXX !");

7. 有关 List Control 的用法,可参考 :http://blog.csdn.net/seven407/article/details/5391521

   要得到List Control中一行的值,可以

    a . 先在 OnInitDialog()中添加:m_listCtrl.SetExtendedStyle( m_listCtrl.GetExtendedStyle() | LVS_EX_FULLROWSELECT );

  使得默认的ListControl只能点击第一列来选中想选中的项,变为点击后直接自动选择一行的功能。

    b. 然后使用 

  POSITION  ps = m_listCtrl.GetFirstSelectedItemPosition();//先获得首行的位置
  nIndex = m_listCtrl.GetNextSelectedItem(ps);//再获得所选行的下标

8. Edit Control 换行:在字符串中使用 \r\n  而不是 \n.

   

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!