我在 Windows XP 平台上使用 Visual Studio 6.0(带有 MFC 的 VC++)。我正在尝试创建一个以组框标题作为复选框的组框。我的意图是:如果启用了复选框,则应该启用组框内的控件;否则禁用。
这有可能实现吗?如果是,请给我一些指示。
谢谢。
我在 Windows XP 平台上使用 Visual Studio 6.0(带有 MFC 的 VC++)。我正在尝试创建一个以组框标题作为复选框的组框。我的意图是:如果启用了复选框,则应该启用组框内的控件;否则禁用。
这有可能实现吗?如果是,请给我一些指示。
谢谢。
您可以尝试一些事情,这取决于您想坚持自己的想法的真实程度以及您准备投入多少工作:
使用普通的分组框,然后在其中使第一项成为复选框。这很容易实现,但是您失去了将复选框作为标题的目标。
使用普通的分组框,然后在您知道标题所在的空间中,放置您的复选框。您将不得不执行一些棘手的计算以使其很好地适应并很好地绘制而不会闪烁。
在组框上使用某种形式的超类或子类/子类。您可以覆盖 WM_PAINT 处理程序以仅在组框的框架中绘制。在您知道标题的位置放置一个普通复选框。这应该会更好,因为您将对绘图有更多的控制权,但要正确可能会很棘手。根据我的经验,子类化的实施风险低于超类化。
你在使用对话框编辑器吗?如果是这样,放下组合框。接下来,在它的顶部,将一个复选框放在组框的行上。编辑资源以设置 Z 顺序,或在代码中进行。您希望复选框位于组框的顶部。为复选框添加处理程序并根据复选框状态启用/禁用控件。
几年前我写了一个名为 CGroupCheck 的代码,它可以从 CodeProject 获得:http: //www.codeproject.com/KB/buttons/groupcheck123.aspx