Чтобы добавить панель инструментов в мой диалоговый класс MFC, я испробовал все способы добавления resources>toolbars
, но они не сработали. Наконец я дошел до того, что динамически создавал панель инструментов. Это код, который я использовал:
Ресурс.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
Проблема возникает при запуске программы:
Ясно, что в качестве кнопки панели инструментов есть только одна кнопка, но я динамически вставил четыре кнопки, как вы видите в коде. .
и изображение не отображается даже для этой известной кнопки.
В моем коде нет ошибок компиляции или времени выполнения, поэтому я не понимаю, что происходит и в чем проблема? strong>
и поскольку я новичок в MFC (это моя первая программа MFC), я не знал, что добавление панели инструментов в ди приложение на основе alog - такая сложная задача!!!! **
** Итак, я создал диалоговый проект в начале, и теперь, когда моя программа была разработана, мне нужна панель инструментов
пожалуйста, помогите мне. это четвертый вопрос, который я опубликовал о добавлении панели инструментов в диалоговое приложение MFC.
после написания кода для добавления панели инструментов в диалоговое окно MFC не запускается< br> Моя панель инструментов в диалоговом приложении mfc не отображается
проблемы с функцией LoadToolBarEx класса CMFCToolBar и набором идентификаторов для класса COpenGLControl
Но проблема еще не решена полностью?
**Пожалуйста, дайте мне хороший справочник, который учил добавлять панели инструментов в диалоги 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));