MF C: расширение во время выполнения - PullRequest
3 голосов
/ 10 апреля 2020

У меня есть GUI проект на работе, который использует MF C.

Виджеты (элементы управления) имеют обработку сообщений в таблице карты сообщений времени компиляции.

Я хочу условно добавить элементы управления в форму во время выполнения, но я застрял на том, как добавить обработчики сообщений к карте сообщений во время выполнения.

Как добавить обработчики сообщений в форму MF C карта сообщений во время выполнения?

Есть ли альтернативный процесс, который мне следует использовать?

См. MF C Документация по картам сообщений для получения информации о картах сообщений.

Среда:
Windows 7 или Windows 10 (приложение работает в обеих ОС)
Visual Studio 2017

1 Ответ

2 голосов
/ 10 апреля 2020

Если вам известен диапазон значений «ID», которые вы присваиваете добавленным элементам управления (как следует), тогда вы можете использовать запись ON_CONTROL_RANGE на карте сообщений, а не ON_CONTROL (который обычно используется для указания c, одного элемента управления). Например, для нажатия кнопки на одном из ваших элементов управления (идентификатор которого находится в диапазоне от IDC_FIRST до IDC_LAST, вы можете добавить следующую запись карты сообщений:

    ON_CONTROL_RANGE(BN_CLICKED, IDC_FIRST, IDC_LAST, OnButtonClick)

Обработчик сообщений, OnButtonClick, имеет формат, очень похожий на формат для одного элемента управления, но с параметром UINT, который является идентификатором элемента управления, отправившего сообщение:

void MyDialog::OnButtonClick(UINT nID)
{
    int button_number = static_cast<int>(nID - IDC_FIRST);
    // .. do something
    return;
}

Не стесняйтесь просить о дальнейших действиях уточнение и / или объяснение.

...