标题为复选框的组框
我在Windows XP平台上使用Visual Studio 6.0(VC++与MFC)。 我正在尝试创建一个组框,并将组框的标题作为复选框。 我的意图是这样的:如果启用该复选框,则应启用组框内的控件; 否则禁用。
这有可能实现吗? 如果是,请给我一些指示。
谢谢。
I am using Visual Studio 6.0 (VC++ with MFC) in Windows XP platform. I am trying to create a group box with the title of the group box as a check box. My intention is this: If the check box is enabled, the controls inside the group box should be enabled; or else disabled.
Is this possible to accomplish? If yes, please give me some directions.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以尝试以下几种方法,具体取决于您想要坚持自己的想法的真实程度以及您准备投入多少工作:
简单方法
使用普通的组框,然后在其中将第一项设为复选框。 这很容易完成,但是您失去了将复选框作为标题的目标。
时髦的绘图方法 1
使用普通的组框,然后在您知道标题所在的空间中放置复选框。 您将必须执行一些棘手的计算才能使其很好地适应并绘制得很好而不闪烁。
时髦的绘图方法 2
使用某种形式的 超类 或 子类/子类 在组框中。 您可以重写 WM_PAINT 处理程序以仅绘制组框的框架。 在您知道标题所在的位置放置一个普通复选框。 这应该效果更好,因为您可以更好地控制绘图,但正确执行可能会很困难。 根据我的经验,子类化的实施风险比超类化要低。
There are a few things you can try, depending on how true you want to stay to your idea and how much work you are prepared to put into the effort:
Simple method
Use a normal group box, and then inside this make the first item be the checkbox. This is simple to accomplish, but you lose the goal of having the checkbox as the title.
Funky drawing method 1
Use a normal group box, then in the space over where you know the title is to go, place your checkbox. You will have to perform some tricky calculation to get it to fit in nicely and draw well without flicker.
Funky drawing method 2
Use some form of superclass or subclass/subclass on the group box. You can override the WM_PAINT handler to draw in only the frame for the group box. Place a normal checkbox in the place where you know the title is to go. This should work better because you will have more control over the drawing, but it is likely to be tricky to get right. In my experience, subclassing is lower risk to implement than superclassing.
您使用的是对话框编辑器吗? 如果是这样,请放下组框。 接下来,在其顶部,在组框线上放置一个复选框。 编辑资源以设置 Z 顺序,或在代码中执行此操作。 您希望该复选框位于组框的顶部。 为复选框添加处理程序,并根据复选框状态启用/禁用控件。
Are you using the Dialog editor? If so, put down the group box. Next, on top of it, put a check box over the line of the group box. Edit the resource to set the Z order, or do it in code. You want the checkbox to be on top of the group box. Add a handler for the checkbox and enable / disable controls depending on the check box state.
几年前我写了一个名为 CGroupCheck 的程序,可以从 CodeProject 获取它: http://www .codeproject.com/KB/buttons/groupcheck123.aspx
I wrote one called CGroupCheck a few years back and it's available from CodeProject: http://www.codeproject.com/KB/buttons/groupcheck123.aspx