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

MSDN SetBitmap doesn't work, CButton shows up blank

本文关键字:显示 空白 CButton SetBitmap 不起作用 MSDN      更新时间:2023-10-16

我试图创建一个按钮,使用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标志,否则什么都不会发生。此外,似乎有两个函数允许您修改按钮样式:

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;
}