你好,请教,MFC,主窗口有两个radio,一次只能选而必须选一个,然后子窗口如何判断是不是选择了radio控件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你好,请教,MFC,主窗口有两个radio,一次只能选而必须选一个,然后子窗口如何判断是不是选择了radio控件?相关的知识,希望对你有一定的参考价值。

两个必须选择一个,那么就要在第一个(按Tab Order顺序)Radio的属性中钩选(Group)群组,这样,使用Classwizard添加关联变量时,才能看到那个Radio的ID。
添加关联变量时,关联成整型的。如m_radio
那么,给这个m_radio值-1表示什么都没选,0,选择 第一个,1选择第二个。。。。
注意,给完值之后,使用UpdateData(FALSE);来更新界面,在界面选择后,也要用UpdateData(TRUE);将选择后的值更新给这成员变量m_radio.追问

我更关心的是,子窗口如何判断radio按钮是否被选上了,因为radio按钮是在主窗口的

追答

int radio=((CXXXDlg *)GetParent())->m_radio;//这里假如CXXXDlg是父窗口的类。
CString str;
str.Format("选择了第%d个radio",m_radio+1);
if(m_radio>-1) AfxMessageBox(str);
else AfxMessageBox("没有选择radio");

来自:求助得到的回答
参考技术A 用classwizard给radio建一个关联变量m_radio1
AfxGetMainWnd()->m_radio1取值
另外,如果必须选一个,最好上来给m_radio1一个默认值追问

关联变量m_radio1,是属于主窗口的变量吧?然后我用AfxGetMainWnd()->m_radio1这个的话,显示m_radio1未定义也。。。。

追答

强制转换成具体的类名就认识了

如何使用 MFC 分别创建两个窗口?

【中文标题】如何使用 MFC 分别创建两个窗口?【英文标题】:How to create two windows separately using MFC? 【发布时间】:2014-07-31 09:26:33 【问题描述】:

现在我开发了一个应用程序来说明 MFC 主框架上的两个窗口。我在 MFC 中使用 SDI 开发,但没有使用 MDI,因为我需要隐藏菜单栏。当程序启动时,我只有一个窗口。如何通过代码再添加一个窗口?以及如何使用不同的数据更新每个屏幕?

【问题讨论】:

没有什么能阻止您在 MDI 应用程序中隐藏菜单栏。 @CodyGray 你是什么意思?如何添加新窗口只使用后面的代码。 【参考方案1】:

您可以在一个窗口中使用 2 个视图。可以使用CSplitterWnd 分隔两个视图。您可以在这里查看different kinds of views you can have 的内容。

更新:

根据您在下面的评论,由于您想要具有不同数据的单独窗口,因此您必须使用 MDI。这就是它的设计目的。

【讨论】:

提前致谢。但是我需要两个分开的窗口,这并不意味着将一个窗口分成两部分。我知道 CSplitterWnd。 您希望多个窗口位于大型机窗口(即经典 MDI)内吗?或者您想要多个大型机窗口(在 codeproject.com 上搜索“Multiple Top Level Windows”)? 你能告诉我如何使用代码在 MDI 中创建两个窗口,因为我已经删除了菜单栏。 使用 MFC 向导创建 MDI 应用程序。您将在您的应用程序中定义 2 组不同的文档/子框架/视图。在 CWinApp 中创建这些文档模板,并在 CMainFrm 中创建具有所需数据的每种类型的文档。 我的意思是同一个主框架上的两个窗口。我害怕你的方式显示两个分开的窗口。

以上是关于你好,请教,MFC,主窗口有两个radio,一次只能选而必须选一个,然后子窗口如何判断是不是选择了radio控件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 mfc 中限制一次只运行一个应用程序实例

MFC 多文档和单文档一些问题请教。

MFC radio button如何默认选中

请教MFC中如何循环处理相同类型的控件,如编辑框之类的?

1创建MFC应用程序——单个文档

如何使用 MFC 分别创建两个窗口?