1.2.3  关联成员变量

本节介绍了如何为控件关联成员变量。

1.实例说明

本示例是一转换程序,可以将汉字一到九转换成数字19,也可以将数字19转化成汉字一九,如图1-50所示。

1-50  Ex010203.exe界面

2.实现

具体步骤如下:

1)建立一个基于对话框的工程Ex010203

2)增加一个编辑框,IDIDC_NUM,关联一个整型变量m_iNum,最小值0,最大值9,如图1-51所示;在后面添加一个按钮,IDIDC_NTOC,标题为“数字到汉字”。增加一个编辑框,IDIDC_CHINESE,为其关联一个字符串型变量m_strChinese,并限制最大长度为2,如图1-52所示。增加一个按钮,IDIDC_CTON,标题为“汉字到数字”。

1-51 控件关联成员变量

1-52 控件关联成员变量

3)分别为两个按钮增加响应函数,代码如下:

void CEx010203Dlg::OnNtoc()

{

         CString strChinese[] = {"","","","","","","","","",""};

        

         UpdateData(true);//取得输入内容

         if(m_iNum < 0 || m_iNum > 9 )

         {

                   AfxMessageBox("请输入一个09的数字");

                   return ;//出错了

         }

         m_strChinese = strChinese[m_iNum];

         UpdateData(false);//更新输出

}

 

void CEx010203Dlg::OnCton()

{

         CString strChinese[] = {"","","","","","","","","",""};

        

         UpdateData(true);//取得输入内容

         int i = sizeof(strChinese)/sizeof(strChinese[0]) -1 ;

         for(; i >= 0 ; i-- )

         {

                   if(m_strChinese == strChinese[i] )

                            break ;//符合要求

         }  

         if(-1 == i)

         {//输入非法

                   AfxMessageBox("输入错误,请输入一到九的汉字");

                   return ;

         }

         m_iNum = i ;

         UpdateData(false);//更新输出

}

4)为了方便用户,在第一个编辑框之后,再添加一个数字滚选按钮,IDIDC_NUM_SPIN,把“Set buddy integer”属性选上,并为其关联一个控制型的变量CSpinButtonCtrl m_spinNum。在对话框的初始化函数中加上初始数字滚选按钮的代码。

BOOL CEx010203Dlg::OnInitDialog()

{

  //…    

         m_spinNum.SetBuddy(GetDlgItem(IDC_NUM));

         m_spinNum.SetRange(0,9);//设置范围为0-9 

         return TRUE;  // return TRUE  unless you set the focus to a control

}



回目录