Привет, у меня проблема с приложением MFC для одного документа.
Я хочу добавить свою собственную панель инструментов в класс MainFrm (CFrameWnd).
Я абсолютный новичок в MFC. Так что я не уверен, что это даже место, чтобы добавить это.
До сих пор:
Ресурс панели инструментов с идентификатором IDR_TOOLBAR1 создан
Кнопка панели инструментов с идентификатором ID_SELECT_SHAPE
В MainFrm.h есть CToolBar m_wndMyToolBar;
объявленный
В MainFrm.cpp:
if (!m_wndMyToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndMyToolBar.LoadToolBar(IDR_TOOLBAR1))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
Панель инструментов показывает сейчас. УРА!
Но я не знаю, как добавить обработчик событий.
Кто-нибудь, кто может сказать, на правильном ли я пути? И если так, кто может сказать, как добавить это событие?
Да, вы на правильном пути. Ваш MainFrame.cpp должен иметь раздел, который начинается с
BEGIN_MESSAGE_MAP
и заканчивается
END_MESSAGE_MAP
Внутри этого раздела вам понадобится запись
ON_COMMAND (ID_SELECT_SHAPE, &CFrameWnd::OnSelectShape)
В вашем .h файле добавьте объявление
afx_msg void OnSelectShape();
и в файле .cpp реализуйте функцию OnSelectShape для обработки вашего события.
В зависимости от того, что должен делать ваш обработчик и какие данные он должен иметь, может быть проще добавить обработчик и реализовать его в классе CView … вместо класса CFrameWnd. Обработчики также могут быть реализованы в классе CDocument …. При нажатии кнопки на панели инструментов платформа MFC Doc-View сначала ищет обработчик в представлении. Если обработчик недоступен, он ищет его в документе, и, наконец, если там нет обработчика, он ищет его в главном окне Frame.
Других решений пока нет …