Шаг 51.
Microsoft Visual C++ 2010. Начала.
Базовые компоненты. Компонент HelpProvider

    На этом шаге мы рассмотрим назначение, свойства и особенности использования этого компонента.

    Компонент HelpProvider (рисунок 1) предназначен для организации связи между приложением и файлом справки (чаще всего CHM-файла).


Рис.1. Компонент HelpProvider

    Наиболее популярным свойством этого компонента является HelpNamespace, которое используется для определения имени файла справки.

    Приведем общий алгоритм использования этого компонента, использованный в приложении из 48 шага.

    Сначала в контсрукторе формы свяжем этот компонент с требуемым файлом справки (в нашем случае это файл с именем spyxx.chm):

.   .   .   .
Form1(void)
{
	.   .   .   .
	// назначаем файл справки
	helpProvider1->HelpNamespace = Application::StartupPath + 
				"\\spyxx.chm";
	.   .   .   .
	}
.   .   .   .

    Здесь конструкция Application::StartupPath задает путь к папке, в которой находится исполняемый файл.

    Далее приведем текст обработчика события выбора пункта меню Справка | Справочная информация приложения из 48 шага:

// выбор в меню Справка команды Справочная информация
private: System::Void toolStripMenuItem8_Click(System::Object^  sender, 
		System::EventArgs^  e) {
			 // отображение chm-файла
			 Help::ShowHelp(this, helpProvider1->HelpNamespace);
 }

    Здесь, используя метод ShowHelp класса Help, вызываем указанный CHM-файл, используя свойство HelpNamespace компонента helpProvider1 (рисунок 2).


Рис.2. Вызов справки

    Отметим также, что справку можно вызвать, нажав клавишу F1.

    Данный компонент может использоваться также для отображения контекстной справки.

    Изменим конструктор следующим образом:

.   .   .   .
Form1(void)
{
	.   .   .   .
	// назначаем файл справки
	helpProvider1->HelpNamespace = Application::StartupPath 
			+ "\\spyxx.chm";

	// уберем кнопки Свернуть и Развернуть
	// добавим кнопку Помощь
	this -> MaximizeBox = false;
	this -> MinimizeBox = false;
	this -> HelpButton = true;

	// разрешим использовать подсказку в компоненте
	helpProvider1->SetShowHelp(textBox1, true);

	// назначим компоненту подсказку
	helpProvider1->SetHelpString(textBox1, "Здесь располагается текст.");
	.   .   .   .
	}
.   .   .   .

    Прокомментируем приведенный фрагмент.

    Чтобы строка заголовка формы содержала только кнопку Справка (вопросительный знак), нужно убрать кнопки Развернуть и Свернуть. Затем для каждого компонента разрешаем использовать подсказку (значение по умолчанию), используя для этого метод SetShowHelp, после чего назначаем для компонента подсказку, используя метод SetHelpString.

    Нужно отметить, что существенным недостатком является некорректный вывод подсказки на русском языкке (рисунок 3).


Рис.3. Вывод подсказки на русском языке

    На момент написания этого шага проблему корректного вывода подсказки на русском языке решить не удалось (запуск приложения осуществлялся из-под Windows 7 и Windows 8). Но вот что интересно: при запуске этого же проекта из-под Windows XP все отображается корректно (рисунок 4):


Рис.4. Вывод подсказки на русском языке (проект запущен из-под Windows XP)

    Отсюда можно сделать вывод, что проблема, похоже кроется в операционной системе. Но вот в чем она заключается и, самое главное, как ее корректно решить - предмет последующего исследования.

    Со следующего шага мы начнем рассматривать графику.




Предыдущий шаг Содержание Следующий шаг