0

MFC ダイアログ ベースのクラスにツールバーを追加するために、あらゆる方法で追加しようとしましresources>toolbarsたが、うまくいきませんでした。最後に、ツールバーを動的に作成するところまで来ました。これは私が使用したコードです:

Resource.h

#define IDB_PanTbrBtn                   139
#define IDB_NewTbrBtn                   140
#define IDB_ZoomInTbrBtn                141
#define IDB_ZoomOutTbrBtn               142
#define IDC_FirstToolBar                1011
#define IDC_NEWTBRBTN                   1012
#define IDC_ZOOMINTBRBTN                1013
#define IDC_ZOOMOUTTBRBTN               1014
#define IDC_PANTBRBTN                   1015

InitialJobProject2Dlg.h : ダイアログ ベースのプロジェクトのヘッダー ファイル

#pragma once
#include "WndResizer.h"
#include "afxdlgs.h"
#include "FilesWorkFlow.h"
#include "OpenGLControl.h"  
CWndResizer m_resizer;
CMFCToolBar m_FirstToolBar;
FilesWorkFlow *m_files;
COpenGLControl *m_oglWindow;  

InitialJobProject2Dlg.cpp : 関数内のツールバーに関連するコードOnInitDialog()

    bool bAnchored = false;
    bAnchored = m_resizer.Hook(this);
    assert(bAnchored);

bool ToolbarCreated = m_FirstToolBar.CreateEx(this, AFX_DEFAULT_TOOLBAR_STYLE, 100 );

if(ToolbarCreated)
{
    m_FirstToolBar.SetDlgCtrlID(IDC_FirstToolBar);
    bAnchored = m_resizer.SetAnchor(IDC_FirstToolBar,ANCHOR_LEFT | ANCHOR_TOP);
    assert(bAnchored);

    m_FirstToolBar.SetPaneStyle(m_FirstToolBar.GetPaneStyle() & ~(CBRS_GRIPPER|CBRS_SIZE_DYNAMIC|CBRS_BORDER_ANY));

    VERIFY(m_FirstToolBar.LoadBitmapW(IDB_NewTbrBtn));
    VERIFY(m_FirstToolBar.GetImages()->Load(IDB_NewTbrBtn,nullptr,TRUE));
    int imageIndex = m_FirstToolBar.GetImages()->GetCount();
    m_FirstToolBar.InsertButton(CMFCToolBarButton(IDC_NEWTBRBTN,imageIndex));

    VERIFY(m_FirstToolBar.LoadBitmapW(IDB_PanTbrBtn));
    VERIFY(m_FirstToolBar.GetImages()->Load(IDB_PanTbrBtn,nullptr,TRUE));
    imageIndex = m_FirstToolBar.GetImages()->GetCount();
    m_FirstToolBar.InsertButton( CMFCToolBarButton( IDC_PANTBRBTN,imageIndex));

    VERIFY(m_FirstToolBar.LoadBitmapW(IDB_ZoomInTbrBtn));
    VERIFY(m_FirstToolBar.GetImages()->Load(IDB_ZoomInTbrBtn,nullptr,TRUE));
    imageIndex = m_FirstToolBar.GetImages()->GetCount();
    m_FirstToolBar.InsertButton( CMFCToolBarButton( IDC_ZOOMINTBRBTN,imageIndex));

    VERIFY(m_FirstToolBar.LoadBitmapW(IDB_ZoomOutTbrBtn));
    VERIFY(m_FirstToolBar.GetImages()->Load(IDB_ZoomOutTbrBtn,nullptr,TRUE));
    imageIndex = m_FirstToolBar.GetImages()->GetCount();
    m_FirstToolBar.InsertButton(CMFCToolBarButton(IDC_ZOOMOUTTBRBTN,imageIndex));

    CSize size = m_FirstToolBar.CalcFixedLayout( FALSE, TRUE );
    m_FirstToolBar.SetWindowPos( NULL, 0, 0, size.cx + 10, size.cy + 10 , SWP_NOACTIVATE | SWP_NOZORDER );
}

これは私のプロジェクトのリソース ビューです。
ここに画像の説明を入力
これは私のプログラムの res フォルダーです。
ここに画像の説明を入力
ツールバー ボタンのアイコンとして表示したい画像は 48x48、32 ビット深度のビットマップ画像ですが、24x24 のものでも同じ問題がありました
。プログラムを実行したときです。
ここに画像の説明を入力
ツールバー ボタンとしてボタンが 1 つしかないことは明らかですが、コードでわかるように、4 つのボタンを動的に挿入しました。
この既知のボタンでも画像は表示されません。
私のコードにはコンパイラ エラーや実行時エラーがないので、何が起こっているのか、何が問題なのかわかりません。
そして、私は MFC を初めて使用するので (これが MFC の最初のプログラムです)、ダイアログ ベースのアプリケーションにツールバーを追加するのがそれほど難しい作業であることを知りませんでした!!!! **
**最初にダイアログベースのプロジェクトを作成しましたが、プログラムが開発されたので、ツールバーが必要

です。助けてください。これは、ダイアログ ベースの MFC アプリケーションにツールバーを追加すること




について投稿した 4 番目の質問です。ダイアログ ベースの mfc にツールバーを追加するコードを記述した後、ダイアログが実行されないダイアログ ベースの mfc アプリケーションでツールバーが表示されないCMFCToolBar クラスの LoadToolBarEx 関数と COpenGLControl クラスの ID の設定 に問題がある しかし、問題まだ完全に解決されていませんか?
** MFC ダイアログにツールバーを最初から追加する方法を教えて くれた良いリファレンスを紹介してください。ここからダウンロード可能


@Edward Clementsが提案したように、コードをこれに変更しましたが、何も変わりませんでした。

    VERIFY(m_FirstToolBar.LoadBitmap(IDB_NewTbrBtn));
    m_FirstToolBar.InsertButton(CMFCToolBarButton(IDC_NEWTBRBTN,1));

    VERIFY(m_FirstToolBar.LoadBitmap(IDB_PanTbrBtn));
    m_FirstToolBar.InsertButton( CMFCToolBarButton( IDC_PANTBRBTN,2));

    VERIFY(m_FirstToolBar.LoadBitmap(IDB_ZoomInTbrBtn));
    m_FirstToolBar.InsertButton( CMFCToolBarButton( IDC_ZOOMINTBRBTN,3));

    VERIFY(m_FirstToolBar.LoadBitmap(IDB_ZoomOutTbrBtn));
    m_FirstToolBar.InsertButton(CMFCToolBarButton(IDC_ZOOMOUTTBRBTN,4));
4

1 に答える 1