سؤال

ولدي فئة مشتقة CMFCToolBar وinsance غير ذلك، قام عضو من فئة مشتقة CDockablePane.

ونظرت إلى عينة VisualStudioDemo لمعرفة كيف يتم ذلك ويكون هذا حتى الآن:

int CMyPane::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    // Removed all "return -1 on error" code for better readability

    CDockablePane::OnCreate(lpCreateStruct);

    if(m_toolBar.Create(this, AFX_DEFAULT_TOOLBAR_STYLE, IDR_MY_TOOLBAR) &&
       m_toolBar.LoadToolBar(IDR_MY_TOOLBAR, 0, 0, TRUE /* Is locked */))
    {

        if(theApp.m_bHiColorIcons) // Is true, i.e. following code is executed
        {
            m_toolBar.CleanUpLockedImages();
            m_toolBar.LoadBitmap(IDB_MY_TOOLBAR_24, 0, 0, TRUE /*Locked*/);
        }

        m_toolBar.SetPaneStyle(m_toolBar.GetPaneStyle() | CBRS_TOOLTIPS | CBRS_FLYBY);
        m_toolBar.SetPaneStyle(m_toolBar.GetPaneStyle() & ~(CBRS_GRIPPER | CBRS_SIZE_DYNAMIC | CBRS_BORDER_TOP | CBRS_BORDER_BOTTOM | CBRS_BORDER_LEFT | CBRS_BORDER_RIGHT));

        m_toolBar.SetOwner(this);

        // All commands will be routed via this control , not via the parent frame:
        m_toolBar.SetRouteCommandsViaFrame(FALSE);
    }

    return 0;
}

ويتم تحميل صورة عالية اللون (24bit)، ولكن قناع أرجواني (R255 G0 B255) مرئيا. أنا لا أرى كيف استطيع ان اقول شريط الأدوات الاعتراف القناع.
هل هذا ممكن حتى؟

هل كانت مفيدة؟

المحلول

وأنا لا أعرف إذا كان هذا يعمل في كل مرة ولكن يمكنني استخدام RGB(192, 192, 192) كلون قناع ولا تحصل على الاعتراف.

و(يبدو على استعداد لسيطرة CMFCToolBar استخدام ::GetSysColor(COLOR_BTNFACE) كلون شفاف ...)

نصائح أخرى

ولقد وجدت أن الحل هو استخدام الصور 32BIT وجنبا إلى جنب مع قناة ألفا الخاصة بهم. حاولت استخدام صورة 32BIT وفي وقت سابق ولكن لم تحصل على العمل لسبب آخر ثم أحسب أن الصور 32BIT لا تعمل.

إذا كنت تريد استخدام 32 بت الصور لا تستخدم CBitmap بدلا من استخدام ATL::CImage أو CPNGImage object وتحميل resource ID المقابلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top