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