在 MFC 中,CBitmapButton 类确实包含一个名为 LoadBitmaps 的公共方法,该方法用于加载按钮的位图资源。以下是 CBitmapButton::LoadBitmaps 方法的基本形式:
BOOL CBitmapButton::LoadBitmaps(LPCTSTR lpszBitmapResource,
                                 UINT nIDBitmapResourceSel /*= 0*/,
                                 UINT nIDBitmapResourceFocus /*= 0*/,
                                 UINT nIDBitmapResourceDisabled /*= 0*/)
{
    // 加载正常状态的位图
    if (!m_bitmap.Attach(::LoadImage(AfxGetResourceHandle(),
                                     lpszBitmapResource,
                                     IMAGE_BITMAP,
                                     0,
                                     0,
                                     LR_DEFAULTSIZE | LR_LOADMAP3DCOLORS)))
    {
        return FALSE;
    }

    SetBitmap(m_bitmap);

    // 如果提供了选定状态的位图资源,则加载并设置
    if (nIDBitmapResourceSel != 0)
    {
        if (!m_bitmapSel.LoadBitmap(nIDBitmapResourceSel))
        {
            return FALSE;
        }
        SetBitmap(m_bitmapSel, BS_PRESSED);
    }

    // 如果提供了焦点状态的位图资源,则加载并设置
    if (nIDBitmapResourceFocus != 0)
    {
        if (!m_bitmapFocus.LoadBitmap(nIDBitmapResourceFocus))
        {
            return FALSE;
        }
        SetBitmap(m_bitmapFocus, BS_HOT);
    }

    // 如果提供了禁用状态的位图资源,则加载并设置
    if (nIDBitmapResourceDisabled != 0)
    {
        if (!m_bitmapDisabled.LoadBitmap(nIDBitmapResourceDisabled))
        {
            return FALSE;
        }
        SetBitmap(m_bitmapDisabled, BS_DISABLED);
    }

    return TRUE;
}

这个方法允许你为按钮的不同状态(正常、选定、焦点、禁用)加载不同的位图资源。你可以在你的派生类中调用这个方法,例如:
CMyBitmapButton::CMyBitmapButton()
{
    LoadBitmaps(IDB_NORMAL, IDB_SELECTED, IDB_FOCUSED, IDB_DISABLED);
    // 其他初始化工作...
}

这样,当创建 CMyBitmapButton 对象时,它将加载并显示相应状态的位图资源。请确保在调用 LoadBitmaps 方法之前,按钮控件已经创建并与父窗口关联。


转载请注明出处:http://www.zyzy.cn/article/detail/15752/MFC/CBitmapButton