MSDN SetBitmap 不起作用,CButton 显示为空白

MSDN SetBitmap doesn't work, CButton shows up blank

我正在尝试使用 CButton::SetBitmap() 从资源中获取的 bmp 图像创建一个按钮。使用此代码:

BOOL MyDialog::OnInitDialog()
{
    __super::OnInitDialog();

    m_myBitmap=::LoadBitmap(AfxGetResourceHandle(),MAKEINTRESOURCE(IDC_MY_BITMAP ));
    m_myButton.SetBitmap( m_myBitmap );

    return TRUE;
}

但是按钮显示为灰色,上面没有图像。我验证了我的位图是否使用 GDIPlus 正确加载,将其保存到 jpeg 中,一切看起来都很好。为什么图像没有显示在按钮上?

我找到了。您需要在 CButton 上设置 BS_BITMAP 标志,否则什么也不会发生。此外,似乎有 2 个函数可以让您修改按钮样式:

CButton::ModifyStyle();
CButton::SetButtonStyle();

并且由于某些不明原因 CButton::SetButtonStyle(); 没有为我正确设置标志,因此造成了混乱。

正确加载的资源有效:

BOOL MyDialog::OnInitDialog()
{
    __super::OnInitDialog();

    m_myBitmap=::LoadBitmap(AfxGetResourceHandle(),MAKEINTRESOURCE(IDC_MY_BITMAP ));
    m_myButton.ModifyStyle( 0, BS_BITMAP );
    m_myButton.SetBitmap( m_myBitmap );

    return TRUE;
}