1

派生クラスがCMFCToolBarあり、そのインスタンスは派生クラスのメンバーです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;
}

ハイカラー イメージ (24 ビット) が読み込まれますが、マゼンタ マスク (R255 G0 B255) が表示されます。ツールバーにマスクを認識させる方法がわかりません。
これは可能ですか?

4

3 に答える 3

3

これが毎回機能するかどうかはわかりませんがRGB(192, 192, 192)、マスクの色として使用すると認識されます。

(CMFCToolBar コントロールは::GetSysColor(COLOR_BTNFACE)透明色として使用する準備ができているようです...)

于 2009-05-14T18:05:52.253 に答える
0

32 ビット イメージを使用する場合は、使用しないで、CBitmap代わりにATL::CImageorCPNGImage objectを使用し、対応するresource ID.

于 2012-03-21T15:00:43.907 に答える
0

回避策として、32 ビット イメージとそのアルファ チャネルを一緒に使用することがわかりました。以前に 32 ビット イメージを使用してみましたが、何らかの理由で動作しませんでした。

于 2009-05-08T10:59:44.383 に答える