Возникли проблемы с функцией LoadToolBarEx класса CMFCToolBar и установленным идентификатором для класса COpenGLControl

Я создал новый пустой диалог для проверки кода. Некоторые заметки о CMFCToolBar - закрепление больших кнопок и использование MDIClientArea, но я вижу, что эта строка производит false:

bool b = m_FirstToolbar.LoadToolBarEx(IDR_MAINFRAME, tbi, TRUE);  

и это ресурсы моего проекта:

в чем проблема и что я должен добавить к ресурсам?
Помогите мне, пожалуйста. это третий вопрос, который я задаю сегодня о панелях инструментов в приложении, основанном на диалогах MFC.
Моя панель инструментов в диалоговом приложении mfc не отображается
после написания кода для добавления панели инструментов в основанную на диалоге MFC диалог не запускается
и я прочитал много вопросов на этом сайте, а также изучил много страниц в Интернете. наконец-то я пришел к тому, чтобы использовать CMFCToolBar класс вместо CToolbar для поддержки 32-битных 24x24 иконок для панели инструментов, но ни одна из страниц не помогла на самом деле, и я до сих пор не видел панель инструментов в верхней части моего диалога.
Не могли бы вы помочь мне представить ссылку, видеоурок и т. Д., Который научил добавлять панели инструментов, поддерживающие значки 32-битных изображений в Visual Studio 2010, в диалоговое приложение mfc **
** Я бы предпочел учебник, который начался с нуля и полезен как для начинающих, так и для aguru.

Спасибо. Я был бы рад здесь ваши ответы.

Отредактированный раздел моего вопроса на основе полезных руководств @Edward Clements
это файл Resource.h моего проекта

//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by InitialJobProject2.rc
//
#define IDM_ABOUTBOX                    0x0010
#define IDD_ABOUTBOX                    100
#define IDS_ABOUTBOX                    101
#define IDD_INITIALJOBPROJECT2_DIALOG   102
#define IDR_MAINFRAME                   128
#define IDB_BITMAP1                     130
#define IDR_TOOLBAR1                    132
#define IDI_ICON1                       135
#define IDC_NewBtnTbr                   135
#define IDC_ZoomInBtnTbr                136
#define IDC_ZoomOutBtnTbr               137
#define IDI_ICON2                       138
#define IDC_PanBtnTbr                   138
#define IDC_TXTDataFile                 1001
#define IDC_EDTDataPath                 1002
#define IDC_BTNBrowse                   1003
#define IDC_RICHEDTHeader               1005
#define IDC_OPENGL                      1009

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        139
#define _APS_NEXT_COMMAND_VALUE         32776
#define _APS_NEXT_CONTROL_VALUE         1010
#define _APS_NEXT_SYMED_VALUE           104
#endif
#endif  

Я не знаю, как установлены цифры? и как мне рассчитать номер, чтобы присвоить новый идентификатор?
В чем разница между _APS_NEXT_RESOURCE_VALUE, _APS_NEXT_COMMAND_VALUE, _APS_NEXT_CONTROL_VALUE а также _APS_NEXT_SYMED_VALUE?
и если я назначу номер 1010 новому идентификатору, то что я должен написать перед _APS_NEXT_CONTROL_VALUE?
и еще один вопрос, который возник, вот этот:

Я использовал вспомогательный класс MFC/C++ для изменения размера окна из кода проекта, чтобы привязать к нему элементы управления диалога. Этот класс использует ID элементов управления. и я добавил COpenGLControl из codeguru для настройки OpenGL в элементе управления MFC, который не требует идентификатора в своем конструкторе, но, поскольку он является производным от класса CWnd, он имеет функцию setHelpID Могу ли я добавить этот способ IDM,IDB,IDD,IDR,IDS,IDI or IDC (Я не знаю, какой из них, пожалуйста, помогите мне, как выбрать между ними and then assign this ID through function setHelpID to the instance of the class COpenglControl ? and then use this ID to hook the openGL window to the main window through class CWndResizer`?

Задача решена
способ, который я предложил для установки идентификатора для окна opengl, работает, за исключением того, что вы должны использовать функцию-член SetDlgCtrlID вместо SetHelpID

1 ответ

Решение

Я не знаком с загрузкой панелей инструментов в диалоге, но вам нужно создать ресурс панели инструментов с идентификатором (я бы не стал использовать IDR_MAINFRAME себя, так как это сбивает с толку, и вам может понадобиться несколько панелей инструментов) и использовать этот идентификатор в LoadToolBarEx; панель инструментов будет содержать кнопки с собственными изображениями и идентификаторами. Вам понадобится ON_COMMAND а также ON_UPDATE_COMMAND_UI в вашей карте сообщений, чтобы включить / отключить кнопки и реагировать на нажатия кнопок.

В этом сообщении на форуме MSDN упоминается, что ваш диалог должен быть получен из CDialogEx вместо CDialog,

Существует очень мало четкой документации по элементам управления MFC Featurepack (например, CMFCToolbar), эта статья CodeProject может помочь (несмотря на то, что речь идет о переносе унаследованного приложения, в нем все еще есть много полезных функций и недостатков).

Еще немного информации в этой статье, посвященной динамическому созданию панелей инструментов (без ресурса панели инструментов).

Другие вопросы по тегам