[高分求助]Radio Button与对话框中的通信

yu549867265 2010-07-28 09:34:34
用MFC拖得界面如下:对话框A、B 。
在A对话框两个button,分别是下一步、取消
在B对话框上有如下控件:三个radio button分别代表安装、修复、卸载.
两个button,分别是下一步、取消。
在A对话框两个button,分别是下一步、取消。
点击A中下一步->B下一步-〉C/D/E(根据radiobutton 值去跳转)。
A对话框在B之前,操作如下:查询注册表的信息,判断当前安装的方式。如果当前为为安装状态,点击A上的下一步按钮,会出现B对话框,默认选中代表“安装”的radio button,禁用修复、卸载这两个radio button.
如果注册表信息反应当前已经安装过,此时点击A上的下一步按钮,会出现B对话框,默认选中代表“修复”的radio button,禁用“安装”的radio button。

我的做法是把三个radio button 设置成一组,用int型变量绑定,然后通过设置这个值来设置当前哪个为默认值。默认值处理部分放在B对话框的构造器中,我没能做到禁用radio button,使用的是((CButton *)GetDlgItem(IDC_RADIO2))->ShowWindow(false);我把这部分代码放到B对话框的OnInitDialog()中。在B 对话框的下一步按钮的click 事件中,添加条件语句,如果满足当前对应的radio button 被选中,且注册表信息正确,则跳到相应的对话框去。

问题:1.请问禁用掉radio button如何实现?我目前是用的((CButton *)GetDlgItem(IDC_RADIO2))->ShowWindow(false);这部分放在对话框OnInitDialog 中。这样功能实现了,可是相当难看,特别是当未安装时,上面只有一个radio button,太空荡了。
2.B对话框中的下一步按钮的click 事件,对radio button 的选择好像并不起作用,是不是我的思路有问题,肯请大侠们指点!

多谢!
...全文
175 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
siennaxu 2010-07-28
  • 打赏
  • 举报
回复
按钮灰掉用这个:((CButton*)GetDlgItem(IDC_RADIO2))->EnableWindow(FALSE);
Eleven 2010-07-28
  • 打赏
  • 举报
回复
:1.请问禁用掉radio button如何实现?我目前是用的((CButton *)GetDlgItem(IDC_RADIO2))->ShowWindow(false);这部分放在对话框OnInitDialog 中。这样功能实现了,可是相当难看,特别是当未安装时,上面只有一个radio button,太空荡了。
------------------------------------------
GetDlgItem(IDC_RADIO2)->EnableWindow(FALSE);

2.B对话框中的下一步按钮的click 事件,对radio button 的选择好像并不起作用,是不是我的思路有问题,肯请大侠们指点!
--------------------------------------------------
CheckDlgButton(IDC_RADIO2, 1);
yu549867265 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 m_tornado 的回复:]
禁用如楼上所说,这样应该就没什么问题了吧,至于你说不好看,这个问题~可以去网上找些好看的用~
[/Quote]
在Radio Button 的属性中有个disable,我就是想实现这样的效果,不可用,但是它还是能够显示在对话框中,难道没的吗?
lovetow 2010-07-28
  • 打赏
  • 举报
回复
EnableWindow
m_tornado 2010-07-28
  • 打赏
  • 举报
回复
EnableWindow(false)禁用~
m_tornado 2010-07-28
  • 打赏
  • 举报
回复
禁用如楼上所说,这样应该就没什么问题了吧,至于你说不好看,这个问题~可以去网上找些好看的用~
yu549867265 2010-07-28
  • 打赏
  • 举报
回复
这个不是禁用,只是把这个控件给隐藏起来了,在B对话框中看不见而已,这样的话,B对话框很空荡,看着很怪异。我想把它禁用,是指灰掉,不可选。请问有没有这样的方法,我找了一下,,CButton是没有的~~
Simao 2010-07-28
  • 打赏
  • 举报
回复
请问禁用掉radio button如何实现?用((CButton *)GetDlgItem(IDC_RADIO2))->EnableWindow(false)就可以了
yu549867265 2010-07-28
  • 打赏
  • 举报
回复
如若我的问题没说清楚,请经管提,我会第一时间回复各位!
yu549867265 2010-07-28
  • 打赏
  • 举报
回复
感谢各位好心大侠的帮助,问题落地。特别感谢Eleven。第二个问题,要使用GetCheckedRadioButton(int nIDFirstButton, int nIDLastButton)来实现,是我没说清楚,要获取当前哪个radio button被选中。
结贴了。
ls2141 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yu549867265 的回复:]
引用 4 楼 m_tornado 的回复:
禁用如楼上所说,这样应该就没什么问题了吧,至于你说不好看,这个问题~可以去网上找些好看的用~

在Radio Button 的属性中有个disable,我就是想实现这样的效果,不可用,但是它还是能够显示在对话框中,难道没的吗?
[/Quote]
EnableWindow 是让整个按钮灰掉不能点击, 他在对话框里面还显示啊
在Windows 10或Windows 11操作系统,用户经常会遇到共享打印机时出现的一系列错误代码,这些错误代码可能会阻碍打印机共享功能的正常使用。常见的错误代码包括0x00000057、0x00000709和0x0000011b,这些代码通常指出了不同的问题,比如权限不足、服务未运行或配置错误等。除此之外,还有一些故障提示如“连接失败”或“内存不足”,这些都可能影响到打印机共享的稳定性。 要解决这些故障,首先要确保打印机已经正确地连接到网络,并且在需要共享的电脑上进行了设置。确保打印机驱动程序是最新的,并且在共享设置没有错误配置。对于权限问题,需要检查网络上的用户账户是否具有足够的权限来访问共享打印机。同时,也要确保打印机服务正在运行,特别是“Print Spooler”服务,因为这是打印机共享服务的核心组件。 在某些情况下,问题可能与操作系统的更新有关,如升级到最新版的Windows 10或Windows 11后可能出现的兼容性问题。这时,可能需要查看微软的官方支持文档来获取特定的解决方案或更新。 对于错误代码0x00000057,这通常是由于没有足够的权限来访问网络打印机或其共享资源,解决方法是确保网络打印机的权限设置正确,包括在组策略设置相应的访问权限。而0x00000709错误可能是由于打印机驱动问题或打印机端口配置错误,可以尝试重新安装或更新打印机驱动来解决。至于0x0000011b错误,这往往是因为打印机队列服务的问题,检查并重启“Print Spooler”服务通常是解决这类问题的常见手段。 至于“连接失败”或“内存不足”这类故障,通常与客户端和打印机之间的网络连接以及打印机本地资源的使用情况有关。检查网络连接,确保打印机所在的网络段没有故障或断。同时,如果打印机的打印队列长时间得不到处理,可能会导致内存不足的情况,这时可能需要清理打印队列或增加打印机的内存配置。 为了帮助用户更快速地解决这些问题,市面上出现了各种打印机共享错误修复工具。这些工具往往通过预设的修复程序来自动检测和修正打印机共享常见的问题。它们可以快速检查打印机驱动、网络连接以及共享设置,并且能够提供一键修复功能,大幅减少了用户自行排查和解决问题的难度。 然而,在使用这些修复工具之前,用户应确保这些工具的来源是安全可靠的,避免因使用不当的修复工具而引发其他系统安全或隐私问题。用户可以到官方平台或者信誉良好的软件提供商处下载这些工具。通过细心检查打印机的共享设置,及时更新驱动程序和服务,以及合理使用修复工具,大多数共享打印机的问题都可以得到有效的解决。

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧