Создать панель инструментов с событием в MFC

Привет, у меня проблема с приложением 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
}

Панель инструментов показывает сейчас. УРА!

Но я не знаю, как добавить обработчик событий.

Кто-нибудь, кто может сказать, на правильном ли я пути? И если так, кто может сказать, как добавить это событие?

0

Решение

Да, вы на правильном пути. Ваш 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.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]