Добавление Контекстной СправкиАвтор: Thomas Kokholm.
Компилятор: Visual C++ 5 & 6 Добавляя контекстную помощь к Вашему приложению, Вы, тем самым улучшаете интерфейс приложения и добавляете удобства пользователю. Обычно это выглядит как всплывающее окно с текстом справки, который Вы заранее определяете как ресурс в Вашем проекте. Добавление контекстной помощи используя всплывающий HTML можно описать следующими четырьмя шагами:
BEGIN_MESSAGE_MAP(CDlg, CDialog) ON_WM_HELPINFO() END_MESSAGE_MAP() Важно, чтобы id, используемый в Вашей String Table был назван так же как и элемент управления, используя выпадающее меню в диалоге 'String Properties'. Обработчик для сообщения WM_HELPINFO выглядит примерно так: afx_msg BOOL OnHelpInfo(HELPINFO* pHelpInfo);
BOOL CDlg::OnHelpInfo(HELPINFO* pHelpInfo)
{
// Именно этот метод и делает то, что нам нужно
ShowContextHelp(CWnd::FromHandle((HWND)pHelpInfo->hItemHandle),
pHelpInfo->MousePos, pHelpInfo->iCtrlId);
// Мы будем обрабатывать сообщение, пропуская базовый класс
// возвращаем CDialog::OnHelpInfo(pHelpInfo);
return TRUE;
}
Как упомянуто в комментариях, ShowContextHelp(...) это метод который выполняет основную работу по отображению контекстной справки. На вход метода подаются два параметра: указатель на окно, и структура типа POINT, в которой происходит запрос на справку. void CDlg::ShowContextHelp(CWnd* pWnd, POINT pt, int iCtrlID)
{
CString s;
// Загружаем текст помощи из String Table
if(s.LoadString(iCtrlID))
{
HH_POPUP hPop; // структура всплывающей HTML справки
// Инициализируем структуру знаками NULL (нулями)
memset(&hPop, 0, sizeof(hPop));
// Устанавливаем размер структуры
hPop.cbStruct = sizeof(hPop);
// Цвет фона - жёлтый
hPop.clrBackground = RGB(255, 255, 208);
hPop.clrForeground = -1; // Font color
hPop.rcMargins.left = -1;
hPop.rcMargins.bottom = -1;
hPop.rcMargins.right = -1;
hPop.pt = pt;
hPop.pszText = s; // Текст из String Table
hPop.pszFont = NULL; // Шрифт
HtmlHelp(pWnd->GetSafeHwnd(), NULL,
HH_DISPLAY_TEXT_POPUP, (DWORD)&hPop);
} // Если строка справки для данного запроса найдена, то завершаем
} // конец ShowContextHelp(...)
Структура HH_POPUP используется для отображения контекстной справки во всплывающем окне. Структура имеет члены для установки цветов foreground/background, для положения вплывающего окна, и для выбора шрифта. Второй параметр для метода HtmlHelp(...), это указатель на объект-файл где так же может находиться строка справки. Надеюсь данный пример Вам очень пригодится.
|