【发布时间】:2020-06-13 12:06:54
【问题描述】:
彩色背景上的标准 MFC CButton 复选框如下所示:
我想摆脱灰色边缘,但无法让它消失。无论我如何设置控件的大小,它仍然会出现。
将其更改为 CMFCButton 会得到以下结果:
这很好,它消除了边距,除了现在没有复选标记。我需要那个复选标记。
有没有什么方法可以用打勾来获得干净的外观?我曾想过将标准图像集传递给CMFCControl::SetImage(),但我不知道如何获取它们。我知道我可以自己画所有东西,但我试图避免重新发明轮子。
我知道这里有很多关于 SO 的类似问题,但我找到的答案似乎都不适用。我找到的最接近的是:Once and for all: how do I get a fully transparent checkbox, button, radio button, etc. in Windows API, and not with a black background?;但是第一个答案非常神秘,第二个是一大段代码,看起来有点矫枉过正。
【问题讨论】:
-
不清楚,您要解决什么问题。也不清楚,为什么——尽管你知道解决方案——先发制人地选择拒绝它。
-
我想消除框周围的灰色边距,而不必增加应用程序的显着复杂性。我什至不确定我引用的例子是否相关。
-
什么是“margin”?它在窗口 API 中没有明确定义的含义。对您而言,“显着复杂性” 是什么?或者您为什么认为实现自定义控件会增加应用程序的复杂性?排除了所有这些问题,您为什么不问,为什么您的解决方案(对您来说似乎很好)无法显示复选框?这不是您要解决的真正问题吗?
-
该问题提到了“灰色边距”,并在白色缩进复选框的三个侧面显示了不对称的灰色区域。至于复杂性,我引用的代码(可能有效也可能无效)使用 35 行代码来解决概念上微不足道的问题;类似的问题通常通过改变一两个参数来解决。确实,我不明白为什么 SDK 首先给出了图示的结果,而且我从 2.0 版开始就一直在编写 Windows
-
我实际上根本没有找到“神秘”的第一个答案,因为所有这些功能都有充分的记录。第二个答案确实是矫枉过正。无论如何,你解决了这个问题,还是你还需要一个答案?
标签: mfc custom-controls cbutton