MFC关于Radio Button控件的问题 高分悬赏!!敬请指点

各位高手好~问题如图所示,创建一个对话框,在"TYPE"里面有TYPEA和TYPEB两个按钮,如何实现“在初始画面时,已经自动点选了TYPEA,并已显示TYPEA分栏TY... 各位高手好~
问题如图所示,创建一个对话框,在"TYPE"里面有TYPEA和TYPEB两个按钮,如何实现
“在初始画面时,已经自动点选了TYPEA,并已显示TYPEA分栏 TYPEB分栏隐藏
在点选上面的TYPEB时,TYPEA分栏隐藏 TYPEB分栏出现”

由于不才刚刚接触MFC...几乎什么也不熟悉 请您一步一步的详细告诉我怎么做,回答的详细再追加高分!

PS:一定要详细步骤啊 小弟拜托了T_T
展开
 我来答
保晏然2Q
2009-10-06 · TA获得超过1053个赞
知道小有建树答主
回答量:422
采纳率:0%
帮助的人:522万
展开全部
这里以一种情况作假设,初始化时,TypeA被选择,TypeA分栏显示,TypeB分栏被隐藏; 之后,根据点选的按钮来隐藏和显示各自的分栏。
首先每一个控件都必须有特定的ID号,所有控件都是,包括静态文本控件,所有ID号都不能一样
在对话框类的OnInitDialog函数中添加如下代码:
CButton* pButton=(CButton*)GetDlgItem(IDC_RADIO1); //假设按钮TypeA的ID为IDC_RADIO1
pButton->SetCheck(1);
以上两句是得到单选按钮TypeA的句柄,然后用SetCheck函数设定它的状态为选定

另外,隐藏静态文本控件和GroupBox控件的代码是:
CStatic* pStatic=(CStatic*)GetDlgItem(IDC_ID);//IDC_ID为要隐藏的控件的ID号
pStatic->ShowWindow(false);

隐藏编辑框控件的代码是:
CEdit* pStatic=(CEdit*)GetDlgItem(IDC_ID);//IDC_ID为要隐藏的控件的ID号
pEdit->ShowWindow(false);

从上面这些应该能看出规律吧,其实都是先得到控件的句柄,然后用相应的函数操作它。仿照这些就能完成你的要求。

要使单选按钮处于未选定状态,只需要将SetCheck函数的参数设为0即可。
要显示某控件,只需要将ShowWindow函数的参数设为true即可。

你的另一个要求:选择TypeA单选按钮时,显示A分栏,隐藏B分栏
大概实现如下:
先为TypeA单选按钮添加BN_CLICKED消息响应函数,在VC6.0的添加类向导中的选择对话框类,然后在左边的列表中点击TypeA按钮的ID号,右边会列出它的所有消息函数,选择BN_CLICKED,然后点击添加函数按钮即可
在添加好的消息函数中,也是用上面提到的代码来实现隐藏和显示控件
对于TypeB按钮也用同样的方法

详细的步骤很麻烦,就不写了。主要的东西都说了,具体怎么安排,就看你自己去布置了,只有自己摸索了,才能记得住,以后想用时才能随手拈来
fanchangyong08
2009-10-06 · TA获得超过660个赞
知道小有建树答主
回答量:1096
采纳率:0%
帮助的人:0
展开全部
很简单.
在初始化,也就是处理OnInitDialog函数中,用GetDlgItem得到TYPEA单选钮的句柄.用CheckDlgButton函数设定它的选择状态.

至于第二个问题,也非常简单.你把芬兰的ID改掉,叫什么都行,不要叫IDC_STATIC了就行了.然后还是用GetDlgItem得到HWND句柄,用ShowWindow(hwnd,SW_HIDE);来隐藏这个分割线.
如果你想显示另一个,原理一样,只不过把SW_HIDE改成SW_SHOW就行了.

还有不懂,欢迎交流!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1d8e8b9
2009-10-06 · TA获得超过913个赞
知道小有建树答主
回答量:589
采纳率:60%
帮助的人:323万
展开全部
很简单:
假设TYPEA的ID是IDC_RDTYPE1,TYPEB的ID是IDC_RDTYPE2。
以及那几个EDIT、静态框的ID形如:IDC_TYPEA_EDIT1.....IDC_TYPEB_EDIT1.....

OnInitDialog中添加:(初始化)

// 选择TYPEA
((CButton * )GetDlgItem( IDC_RDTYPE1 ))->SetCheck( TRUE );

// 不选择TYPEB
((CButton * )GetDlgItem( IDC_RDTYPE2 ))->SetCheck( FALSE );

// 隐藏TYPEB所属的控件组
GetDlgItem( IDC_TYPEB_TXT1 )->ShowWindow( SW_HIDE );
GetDlgItem( IDC_TYPEB_TXT2 )->ShowWindow( SW_HIDE );
GetDlgItem( IDC_TYPEB_TXT3 )->ShowWindow( SW_HIDE );
GetDlgItem( IDC_TYPEB_TXT4 )->ShowWindow( SW_HIDE );
GetDlgItem( IDC_TYPEB_EDIT1 )->ShowWindow( SW_HIDE );
GetDlgItem( IDC_TYPEB_EDIT2 )->ShowWindow( SW_HIDE );
GetDlgItem( IDC_TYPEB_EDIT3 )->ShowWindow( SW_HIDE );
GetDlgItem( IDC_TYPEB_EDIT4 )->ShowWindow( SW_HIDE );

------------------------------------------------------

对TYPEA和TYPEB分别进行单击消息映射:

OnTypeA() // 当单击TYPEA时
{
// 选中A,不选择B
((CButton * )GetDlgItem( IDC_RDTYPE1 ))->SetCheck( TRUE );
((CButton * )GetDlgItem( IDC_RDTYPE2 ))->SetCheck( FALSE );

// 显示TYPEA控件并隐藏TYPEB控件:
GetDlgItem( IDC_TYPEB_TXT1 )->ShowWindow( SW_HIDE );
GetDlgItem( IDC_TYPEB_TXT2 )->ShowWindow( SW_HIDE );
GetDlgItem( IDC_TYPEB_TXT3 )->ShowWindow( SW_HIDE );
GetDlgItem( IDC_TYPEB_TXT4 )->ShowWindow( SW_HIDE );
GetDlgItem( IDC_TYPEB_EDIT1 )->ShowWindow( SW_HIDE );
GetDlgItem( IDC_TYPEB_EDIT2 )->ShowWindow( SW_HIDE );
GetDlgItem( IDC_TYPEB_EDIT3 )->ShowWindow( SW_HIDE );
GetDlgItem( IDC_TYPEB_EDIT4 )->ShowWindow( SW_HIDE );

GetDlgItem( IDC_TYPEA_TXT1 )->ShowWindow( SW_SHOW );
GetDlgItem( IDC_TYPEA_TXT2 )->ShowWindow( SW_SHOW );
GetDlgItem( IDC_TYPEA_EDIT1 )->ShowWindow( SW_SHOW );
GetDlgItem( IDC_TYPEA_EDIT2 )->ShowWindow( SW_SHOW );
}

OnTypeB() // 当单击TYPEB时
{
// 选中B,不选择A
((CButton * )GetDlgItem( IDC_RDTYPE1 ))->SetCheck( FALSE );
((CButton * )GetDlgItem( IDC_RDTYPE2 ))->SetCheck( TRUE );

// 显示TYPEB控件并隐藏TYPEA控件:
GetDlgItem( IDC_TYPEA_TXT1 )->ShowWindow( SW_HIDE );
GetDlgItem( IDC_TYPEA_TXT2 )->ShowWindow( SW_HIDE );
GetDlgItem( IDC_TYPEA_EDIT1 )->ShowWindow( SW_HIDE );
GetDlgItem( IDC_TYPEA_EDIT2 )->ShowWindow( SW_HIDE );

GetDlgItem( IDC_TYPEB_TXT1 )->ShowWindow( SW_SHOW );
GetDlgItem( IDC_TYPEB_TXT2 )->ShowWindow( SW_SHOW );
GetDlgItem( IDC_TYPEB_TXT3 )->ShowWindow( SW_SHOW );
GetDlgItem( IDC_TYPEB_TXT4 )->ShowWindow( SW_SHOW );
GetDlgItem( IDC_TYPEB_EDIT1 )->ShowWindow( SW_SHOW );
GetDlgItem( IDC_TYPEB_EDIT2 )->ShowWindow( SW_SHOW );
GetDlgItem( IDC_TYPEB_EDIT3 )->ShowWindow( SW_SHOW );
GetDlgItem( IDC_TYPEB_EDIT4 )->ShowWindow( SW_SHOW );
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xxj050
2009-10-06 · TA获得超过244个赞
知道小有建树答主
回答量:112
采纳率:0%
帮助的人:0
展开全部
1.首先每一个控件都必须有特定的ID号,所有控件都是,包括静态文本控件,所有ID号都不能一样,并且尽量使在同一组(同在typeA或同在typeB)的控件ID在resouce.h中的真实数值也是相连着的,以便使用循环来控制控件的显示或隐藏。
2.在radio的属性中可以设置默认为选中的。
3.为typeA单选按钮添加消息响应,在此之前必须选中radio属性中group属性。在消息响应函数中使用循环来控制控件的显示或隐藏。(这是常用方法)。不明白的可以给我留言。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ecba46aab
2009-10-06 · TA获得超过2303个赞
知道大有可为答主
回答量:2477
采纳率:100%
帮助的人:1980万
展开全部
好的,这个过程比较复杂,你匿名了,我无法给你发URL啊

你给我发一个消息,我给你现做,到时我把源码给你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式