初学总结 与静态文本、单复选框

之前的几个零零散散的控件组成的一个小小程序 包含几个常用函数,下面来总结一下从最开始到现在的学习内容。

以上分为 类视图 资源视图 文件视图

类视图:包含了这个类的所有成员函数与成员变量 双击该类进入到与这个类同行的头文件中

资源视图:对话框类包含 Dialog(对话框) Icon(图标) 。。。  其他的还没用到

文件视图就是 函数的头文件与源文件

 

MFC编程 并不像WIN32编程那样把要干的事情写在一个swich循环中。而是把WIN32编程大多数内容封装成各种类,称为MFC程序框架。

起初建立的工程都是  MFC AppWizard(exe)  在训练中都建立对话框程序

其他都为默认。

在MFC中采用消息映射机制 , 即将消息与消息处理函数一一对应起来。

以后的编程都采用 类向导 来辅助完成 方便快捷。  Ctrl+W 打开类向导

上面的Message Maps 与 Member Variables 是最常用的两个  下面来解说一下

 

一、Message Maps

 

 首先选定在哪个类里 然后

Object IDS 为该类中 用户可以使用的ID号

Messages 为该控件可以有什么消息产生

Member functions 为成员函数

Object IDS与Messages 选好后 点击右侧Add Function 会产生以下几个变化

1.Member functions 与源文件中 自动添加了一个函数 以On开头

 

2.灰色部分为 一个作为消息映射

 

其中名字为ON开头的消息 第一个参数是ID号 第二个参数是函数名 这样就把每个消息与其函数一一对应

3.在源文件中自动创建函数定义 并且点击Edit Code 自动转到该函数的定义处  就可以开始写了。

 

二、Merber Variables

 

选定好 类 类型和成员的名字 以m_开头  

 

 

 下面记录一下这几个小控件与函数组成的小玩意

void CEx_ResearchDlg::OnOK() 
{
	// TODO: Add extra validation here

	//获取第一个问题的用户选择
	CString strCtrl,str;
	str = "你的年龄";
	UINT nID = GetCheckedRadioButton(IDC_AGE_L18,IDC_AGE_M38);
	GetDlgItemText(nID,strCtrl);		//获取指定控件的标题文本
	str = str + strCtrl;
	
	//获取第二个问题的用户选择;
	str = str + "\n你使用的接入方式:";
	nID = GetCheckedRadioButton(IDC_CM_FTTL, IDC_CM_OTHER);
	GetDlgItemText(nID, strCtrl);
	str = str + strCtrl;

	//获取第三个问题的用户选择
	str = str + "\n你上网主要是:";
	UINT nCheckIDS[4] = {IDC_DO_POP, IDC_DO_READ, IDC_DO_GAME, IDC_DO_OTHER};
	CButton* pBtn;
	for(int i = 0; i < 4; i ++){
		pBtn = (CButton*)GetDlgItem(nCheckIDS[i]);
		if(pBtn){
			pBtn->GetWindowText(strCtrl);
			str = str + strCtrl;
			str = str + " "; 
		}
	}
	MessageBox(str);
	CDialog::OnOK();
}

宏和声明就不黏贴了  只看定义 

 OnOK 是对话框 自带的 "确定" 按钮的ID   

CString 是MFC中字符串类型

 

GetCheckedRadioButton

因为我的对话框中 第一个问题的单选按钮已经被按下  所以这个函数返回区间内被选中的按钮的ID号

 

GetDlgItemText

这里将选中那个按钮的 文本 传递到strCtrl中

 

在复选按钮中  需要用循环和类指针判断哪个被选中

GetDlgItem

将ID号传入 返回一个指向该控件或窗口的指针  注意 一定要强制类型转换

这里用该控件类的成员函数 来传递 该控件的文本给strCtrl 变量

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值