彩色背景上的标准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?;但是第一个答案是非常神秘的,第二个答案是一大堆似乎过于矫kill过正的代码。
答案 0 :(得分:0)
我发现了一些可行的简单方法:
将ON_WM_CTLCOLOR()
添加到对话框的MESSAGE_MAP
之后,我将其添加到对话框类中:
HBRUSH MyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
if (myCheckbox.m_hWnd == pWnd->m_hWnd) // myCheckbox is the problem control
{
pDC->SetBkMode(TRANSPARENT);
hbr = reinterpret_cast<HBRUSH>(::GetStockObject(NULL_BRUSH));
}
return hbr;
}