Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.

 

Добавление Контекстной Справки


Автор: Thomas Kokholm.

Компилятор: Visual C++ 5 & 6

Добавляя контекстную помощь к Вашему приложению, Вы, тем самым улучшаете интерфейс приложения и добавляете удобства пользователю. Обычно это выглядит как всплывающее окно с текстом справки, который Вы заранее определяете как ресурс в Вашем проекте.

Добавление контекстной помощи используя всплывающий HTML можно описать следующими четырьмя шагами:

  1. Разрешить context help для диалога в страничке 'Dialog Properties' -> 'Extended Styles'.
  2. Прописать текст справки для элемента в Вашей 'String Table'.
  3. Перехватить сообщение WM_HELPINFO в диалоговом классе.
  4. Скопировать и поместить нижеприведённый код в Ваш класс.
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(...), это указатель на объект-файл где так же может находиться строка справки.

Надеюсь данный пример Вам очень пригодится.



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS