Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчеты по Курсовой Работе / всплывающие подсказки Саляхутдинов 8-78-1.doc
Скачиваний:
37
Добавлен:
12.03.2015
Размер:
190.98 Кб
Скачать

Министерство образования и науки РФ

Государственное образовательное учреждение

Высшего профессионального образования

«Ижевский государственный технический университет имени М.Т. Калашникова»

Кафедра «Вычислительная техника»

Пояснительная записка к курсовой работе

по дисциплине «Операционные системы»

Всплывающие подсказки

Выполнил: студент гр. 8-78-1

Саляхутдинов К.О.

Проверил:

преподаватель, к.т.н. Вахрушева Е.А.

Ижевск, 2014

Содержание

Введение 3

Описание API-функций 4

Принцип работы 13

Листинг программы 14

Файл hint.inc 14

Файл hint.asm 15

Файл hint.rc 20

Демонстрация работы программы 22

Вывод 22

Список литературы 23

Введение

В компьютерных интерфейсах подсказка (с англ. tooltip, hint) служит дополнительным средством обучения интерфейсу.

Типы подсказок:

  • Всплывающая подсказка — появляется при подведении курсора к интересующему объекту или в случае недопустимого действия (например, ввода текста вместо числа). В случае редакторов с автодополнением всплывающие подсказки могут появляться при вводе названий функций и переменных, указывая их характеристики (тип, прототип, количество и тип аргументов и т. д.).

  • Подсказка при запуске — появляющееся после запуска программы окно, демонстрирующее краткий текст по необычным/нестандартным возможностям программы. Обычно при каждом запуске текст меняется, позволяя пользователю изучать возможности программы «походя». В ряде случаев появление окна с текстом, требующим особых действий для закрытия, может расцениваться пользователями как раздражающее.

  • Контекстная — в некоторых типах интерфейсов командной строки (например, в IOS) — появляющаяся при вводе команды и вопросительного знака. При этом введённый текст не исчезает, а подсказка появляется над введенным текстом, позволяя понять, что можно/следует вводить дальше.

В данной курсовой работе в качестве цели использовалось создание именно всплывающих подсказок, которые можно установить на любые объекты окна.

Описание api-функций

CreateDialogParam

Создает немодальное диалоговое окно из шаблона ресурса блока диалога. Перед показом диалогового окна на экране, функция отправляет в процедуру блока диалога определяемое программой значение сообщения WM_INITDIALOG, как параметр lParam. Прикладная программа может использовать это значение, чтобы инициализировать элементы управления диалогового окна.

Синтаксис:

HWND CreateDialogParam(

HINSTANCE hInstance, // дескриптор экземпляра программы

LPCTSTR lpTemplateName, // идентификация шаблона блока диалога

HWND hWndParent, // дескриптор окна владельца

DLGPROC lpDialogFunc, // указатель на процедуру диалогового окна

LPARAM dwInitParam // инициализационное значение

);

Параметры:

  • hInstance — идентифицирует экземпляр модуля, исполняемый файл которого содержит шаблон диалогового окна.

  • lpTemplateName — идентифицирует шаблон диалогового окна. Этот параметр - или указатель на строку символов с нуль-терминатором в конце, которая определяет имя шаблона диалогового окна, или целочисленное значение, которое определяет идентификатор ресурса шаблона блока диалога. Если параметр определяет идентификатор ресурса, его старшее слово должно быть нулевым, а младшее слово должно содержать идентификатор. Вы можете использовать макрокоманду MAKEINTRESOURCE, чтобы создать это значение.

  • hWndParent — идентифицирует окно, которое владеет блоком диалога.

  • lpDialogFunc — указывает на процедуру диалогового окна.

  • dwInitParam — устанавливает значение, передаваемое процедуре диалогового окна в параметре lParam сообщения WM_INITDIALOG.

Возвращаемые значения:если функция завершилась успешно, возвращается значение дескриптор окна блока диалога. Если функция потерпела неудачу, возвращается значение ПУСТО (NULL).

SetFocus

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

Синтаксис:

HWND WINAPI SetFocus(

_In_opt_  HWND hWnd //дескриптор окна

);

Параметры:

  • hWnd — идентифицирует окно, которое примет ввод информации с клавиатуры. Если этот параметр - ПУСТО (NULL), нажатия клавиши игнорируются.

Возвращаемые значения:если функция завершается успешно, величина возвращаемого значения - дескриптор окна, которое до этого имело фокус клавиатуры. Если параметр hWnd недопустимый или окно не связано с очередью сообщений вызывающего потока, величина возвращаемого значения - ПУСТО (NULL).

Lstrcpy

Копирует строку в буфер.

Синтаксис:

LPTSTR WINAPI lstrcpy(

_Out_  LPTSTR lpString1,

_In_   LPTSTR lpString2

);

Параметры:

  • lpString1 [out] — указатель на буфер, который получает содержимое строки, указанное при помощи параметра lpString2. Буфер должен быть достаточно большим, чтобы принять строку, включая символ завершающего нуля.

  • lpString2 [in] — указатель на строку с завершающим нулем, которая копируется.

Возвращаемые значения:если функция завершается успешно, возвращаемое значение - указатель на буфер. Если функция завершается ошибкой, возвращаемое значение NULL.

DestroyWindow

Уничтожает определенное окно. Функция посылает сообщения WM_DESTROY и WM_NCDESTROY окну, чтобы дезактивировать его и удалить фокус клавиатуры из него. Функция также уничтожает меню окна, очищает очередь потоков сообщений, уничтожает таймеры, удаляет монопольное использование буфера обмена и разрывает цепочку просмотра окон буфера обмена (если окно имеет наверху цепочку просмотров).

Если окно — родитель или владелец окон, то DestroyWindow автоматически уничтожает связанные дочерние или находящиеся в собственности окна, когда она уничтожает окно владельца или родителя. Функция сначала уничтожает дочерние или находящиеся в собственности окна, и затем она уничтожает окно владельца или родителя. DestroyWindow также уничтожает немодальные диалоговые окна, созданные функцией CreateDialog.

Синтаксис:

BOOL WINAPI DestroyWindow(

_In_  HWND hWnd //дескриптор окна

);

Параметры:

  • hWnd — идентификатор окна, которое будет разрушено.

Возвращаемые значения:если функция завершается успешно, возвращаемое значение отлично от нуля. Если функция не выполняет задачу, возвращаемое значение нулевое.

Lstrlen

Возвращает длину указанной строки в байтах, не включая символ завершающего нуля.

Синтаксис:

int WINAPI lstrlen(

_In_  LPCTSTR lpString

);

Параметры:

  • lpString [in] — указатель на строку с завершающим нулем.

Возвращаемые значения:возвращаемое значение указывает длину строки, в значениях TCHAR.

GetDlgItem

Извлекает дескриптор органа управления в заданном диалоговом окне.

Синтаксис:

HWND WINAPI GetDlgItem(

_In_opt_  HWND hDlg,

_In_      int nIDDlgItem

);

Параметры:

  • hDlg [in] — дескриптор диалогового окна, которое содержит орган управления.

  • nIDDlgItem [in] — устанавливает идентификатор извлекаемого органа управления.

Возвращаемые значения:если функция завершается успешно, возвращаемое значение - дескриптор окна указанного органа управления. Если функция завершается ошибкой, возвращаемое значение - ПУСТО (NULL), которое указывает на недопустимый дескриптор диалогового окна или несуществующий орган управления.

GetCursorPos

Извлекает позицию курсора, в экранных координатах.

Синтаксис:

BOOL WINAPI GetCursorPos(

_Out_  LPPOINT lpPoint

);

Параметры:

  • lpPoint [out] — указатель на структуру POINT, которая получает экранные координаты курсора.

Возвращаемые значения:если функция завершается успешно, возвращаемое значение не нуль. Если функция завершается ошибкой, возвращаемое значение равняется нулю.

TextOut

Записывает строку символов в заданном месте, используя текущий выбранный шрифт, цвет фона и цвет текста.

Синтаксис:

BOOL TextOut(

_In_  HDC hdc,

_In_  int nXStart,

_In_  int nYStart,

_In_  LPCTSTR lpString,

_In_  int cchString

);

Параметры:

  • Hdc [in] — дескриптор контекста устройства.

  • nXStart [in] — устанавливает x-координату, в логических координатах, контрольной точки, которую система использует для выравнивания строки.

  • nYStart [in] — устанавливает y-координату, в логических координатах, контрольной точки, которую система использует для выравнивания строки.

  • lpString [in] — указатель на строку, которую нужно написать. Строка не должна завершаться нуль-терминатором, так как параметр cbString задает длину строки.

  • cbString [in] — устанавливает длину строки. Для функции ANSI, это количество BYTE (байтов), а для функции Unicode, это является количеством WORD (слов).

Возвращаемые значения:если функция завершается успешно, величина возвращаемого значения - не ноль. Если функция завершается с ошибкой, величина возвращаемого значения - ноль.

SetBkColor

Устанавливает текущий цвет фона в заданном коде цвета или в самом близком физическом цвете, если устройство не может предоставить указанный код цвета.

Синтаксис:

COLORREF SetBkColor(

_In_  HDC hdc,

_In_  COLORREF crColor

);

Параметры:

  • Hdc [in] — дескриптор контекста устройства.

  • crColor [in] — определяет новый цвет фона. Чтобы создать значение COLORREF, используйте макрокоманду RGB.

Возвращаемые значения:если функция завершается успешно, возвращаемое значение определяет предыдущий цвет фона как значение COLORREF.

SetTextColor

Устанавливает цвет текста для заданного устройства в заданный цвет.

Синтаксис:

COLORREF SetTextColor(

_In_  HDC hdc,

_In_  COLORREF crColor

);

Параметры:

  • Hdc [in] — дескриптор контекста устройства.

  • crColor [in] — устанавливает цвет текста.

Возвращаемые значения:если функция завершается успешно, возвращаемое значение - ссылка на цвет предыдущего цвета текста как значение COLORREF.

BeginPaint

Готовит заданное окно к окрашиванию и заполняет структуру PAINT-STRUCT информацией об окрашивании.

Синтаксис:

HDC BeginPaint(

_In_   HWND hwnd,

_Out_  LPPAINTSTRUCT lpPaint

);

Параметры:

  • hwnd [in] — дескриптор окна, которое будет перекрашено.

  • lpPaint [out] — указатель на структуру PAINTSTRUCT, которая получит информацию об окрашивании.

Возвращаемые значения:если функция завершается успешно, возвращаемое значение - дескриптор контекста устройства отображения для заданного окна. Если функция завершается ошибкой, возвращаемое значение - NULL, которое указывает, что никакой контекст устройства (DC) отображения не доступен.

EndPaint

Отмечает конец окрашивания в заданном окне. Эта функция требуется для каждого вызова в функции BeginPaint, но только после того, как окрашивание завершается полностью.

Синтаксис:

BOOL EndPaint(

_In_  HWND hWnd,

_In_  const PAINTSTRUCT *lpPaint

);

Параметры:

  • hWnd [in] — дескриптор окна, которое было перекрашено.

  • lpPaint [in] — указатель на структуру PAINTSTRUCT, которая содержит информацию об окрашивании, извлекаемую при помощи функции BeginPaint.

Возвращаемые значения:возвращаемое значение всегда не нуль.

GetTextExtentPoint32

Вычисляет ширину и высоту заданной строки текста.

Синтаксис:

BOOL GetTextExtentPoint32(

_In_   HDC hdc,

_In_   LPCTSTR lpString,

_In_   int cbString,

_Out_  LPSIZE lpSize

);

Параметры:

  • Hdc [in] — дескриптор контекста устройства.

  • lpString [in] — указатель на буфер, который задает текстовую строку. Строка не должна быть закончена нулем, потому что параметр cbString  устанавливает длину строки.

  • cbString [in] — устанавливает длину буфера lpString.

  • lpSize [out] — указатель на структуру SIZE, которая принимает размеры строки, в логических единицах измерения.

Возвращаемые значения:если функция завершается успешно, возвращаемое значение не нуль. Если функция завершается с ошибкой, величина возвращаемого значения - ноль.

MoveWindow

Изменяет позицию и габариты определяемого окна. Для окна верхнего уровня, позиция и габариты отсчитываются относительно левого верхнего угла экрана. Для дочернего окна - относительно левого верхнего угла рабочей области родительского окна.

Синтаксис:

BOOL WINAPI MoveWindow(

_In_  HWND hWnd,

_In_  int X,

_In_  int Y,

_In_  int nWidth,

_In_  int nHeight,

_In_  BOOL bRepaint

);

Параметры:

  • hWnd [in] — дескриптор окна.

  • X [in] — устанавливает новую позицию левой стороны окна.

  • Y [in] — устанавливает новую позицию верхней части окна.

  • nWidth [in] — устанавливает новую ширину окна.

  • nHeight [in] — устанавливает новую высоту окна.

  • bRepaint [in] — определяет, должно ли окно быть перерисовано. Если этот параметр - ИСТИНА (TRUE), окно принимает сообщение WM_PAINT. Если параметр – ЛОЖЬ (FALSE), никакого перекрашивания какого-либо сорта не происходит. Это применяется к рабочей области, нерабочей области (включая область заголовка и линейки прокрутки) и любой части родительского окна, раскрытого в результате перемещения дочернего окна.

Возвращаемые значения:если функция завершилась успешно, возвращается значение не нуль. Если функция потерпела неудачу, возвращаемое значение - ноль.

GetWindowRect

Извлекает размеры рамки ограничивающей прямоугольник заданного окна. Размеры даются в экранных координатах, которые отсчитываются относительно левого верхнего угла экрана.

Синтаксис:

BOOL WINAPI GetWindowRect(

_In_   HWND hWnd,

_Out_  LPRECT lpRect

);

Параметры:

  • hWnd [in] — дескриптор окна.

  • lpRect [out] — указатель на структуру, которая принимает экранные координаты левого верхнего и нижнего правого углов окна.

Возвращаемые значения:если функция завершилась успешно, возвращается значение - не нуль. Если функция потерпела неудачу, возвращаемое значение - ноль.

ReleaseDC

Освобождает контекст устройства  (DC)  для использования другими приложениями. Действие функции ReleaseDC зависит от типа контекста устройства (DC). Она освобождает только общий и контекст устройства (DC) окна. Не имеет никакого действия на контексты устройства класса или частный DC.

Синтаксис:

int ReleaseDC(

_In_  HWND hWnd,

_In_  HDC hDC

);

Параметры:

  • hWnd [in] — дескриптор окна, контекст устройства (DC) которого должен быть освобожден.

  • hDC [in] — дескриптор контекста устройства (DC), который будет освобожден.

Возвращаемые значения:возвращаемое значение указывает, был ли контекст устройства (DC) освобожден. Если контекст устройства был освобожден, возвращаемое значение равно  1. Если контекст устройства (DC) не был освобожден, величина возвращаемого значения - ноль.

GetDC

Извлекает дескриптор дисплейного контекста устройства (DC) для рабочей области заданного окна или для всего экрана. Вы можете использовать возвращенный дескриптор в последующих функциях GDI, чтобы рисовать в контексте устройства.

Синтаксис:

HDC GetDC(

_In_  HWND hWnd

);

Параметры:

  • hWnd [in] — дескриптор окна, контекст устройства (DC) которого должен извлечься.

Возвращаемые значения:если функция завершается успешно, возвращаемое значение - дескриптор контекста устройства (DC) для рабочей области заданного окна. Если функция завершается ошибкой, возвращаемое значение -  ПУСТО (NULL).

SendDlgItemMessage

Отправляет сообщение указанному органу управления в диалоговом окне.

Синтаксис:

LRESULT WINAPI SendDlgItemMessage(

_In_  HWND hDlg,

_In_  int nIDDlgItem,

_In_  UINT Msg,

_In_  WPARAM wParam,

_In_  LPARAM lParam

);

Параметры:

  • hDlg [in] — дескриптор диалогового окна, которое содержит орган управления.

  • nIDDlgItem [in] — устанавливает идентификатор органа управления, который получает сообщение.

  • Msg [in] — задает отправляемое сообщение.

  • wParam [in] — устанавливает дополнительную специальную для сообщения информацию.

  • lParam [in] — устанавливает дополнительную специальную для сообщения информацию.

Возвращаемые значения:возвращаемое значение определяет результат обработки сообщения и зависит от отправленного сообщения.

ExitProcess

Заканчивает работу процесса и всех его потоков.

Синтаксис:

VOID WINAPI ExitProcess(

_In_  UINT uExitCode

);

Параметры:

  • uExitCode [in] — определяет код выхода для процесса, и для всех потоков, которые завершают работу в результате вызова этой функции. Используйте функцию GetExitCodeProcess, чтобы получить значение выхода из процесса. Используйте функцию GetExitCodeThread, чтобы получить значение выхода из потока.

Возвращаемые значения:у этой функции нет возвращаемого значения.

GetModuleHandle

Извлекает дескриптор указанного модуля, если файл был отображен в адресном пространстве вызывающего процесса.

Синтаксис:

HMODULE WINAPI GetModuleHandle(

_In_opt_  LPCTSTR lpModuleName

);

Параметры:

  • lpModuleName [in] — указатель на символьную строку с нулем в конце, которая содержит имя модуля (или .dll, или .exe файл). Если расширение имени файла опускается, в конец добавляется заданное по умолчанию библиотечное расширение .dll. Символьная строка имени файла может включать в себя конечный символ точки (.), который указывает, что имя модуля не имеет расширения. Строка не должна определять путь. Когда определяется путь, убедитесь, что используются обратные слэши (\), а не прямые слэши (/).

Возвращаемые значения:если функция завершается успешно, возвращаемое значение - дескриптор указанного модули. Если функция завершается ошибкой, возвращаемое значение - NULL.

DialogBoxParam

Создает модальное диалоговое окно из шаблона ресурса блока диалога. Перед показом диалогового окна на экране, функция передает в процедуру блока диалога определяемое программой значение, такое как параметр lParam сообщения WM_INITDIALOG. Прикладная программа может использовать это значение, чтобы инициализировать органы управления диалогового окна.

Синтаксис:

INT_PTR WINAPI DialogBoxParam(

_In_opt_  HINSTANCE hInstance,

_In_      LPCTSTR lpTemplateName,

_In_opt_  HWND hWndParent,

_In_opt_  DLGPROC lpDialogFunc,

_In_      LPARAM dwInitParam

);

Параметры:

  • hInstance [in] — дескриптор модуля, исполняемый файл которого содержит шаблон диалогового окна.

  • lpTemplateName [in] — определяет шаблон диалогового окна. Этот параметр - или указатель на строку символов с нуль-терминатором в конце, которая определяет имя шаблона диалогового окна, или целочисленное значение, которое определяет идентификатор ресурса шаблона блока диалога. Если параметр определяет идентификатор ресурса, его старшее слово должно быть нуль, а младшее слово должно содержать этот идентификатор. Вы можете использовать макрокоманду MAKEINTRESOURCE, чтобы создать это значение.

  • hWndParent [in] — дескриптор окна, которое владеет диалоговым окном.

  • lpDialogFunc [in] — указатель на процедуру диалогового окна.

  • dwInitParam [in] — устанавливает значение, передаваемое процедуре диалогового окна в параметре lParam сообщения WM_INITDIALOG.

Возвращаемые значения:если функция завершается успешно, возвращаемое значение - значение параметра nResult, заданного при вызове к функции EndDialog, используемой, чтобы завершить работу диалогового окна. Если функция завершается ошибкой, потому что параметр hWndParent недопустим, возвращаемое значение равняется нулю.

EndDialog

Уничтожает модальное диалоговое окно, заставляя систему закончить любую обработку информации диалогового окна.

Синтаксис:

BOOL WINAPI EndDialog(

_In_  HWND hDlg,

_In_  INT_PTR nResult

);

Параметры:

  • hDlg [in] — дескриптор уничтожаемого диалогового окна.

  • nResult [in] — устанавливает значение,  возвращаемое прикладной программе из функции, которая создала диалоговое окно.

Возвращаемые значения:если функция завершается успешно, возвращаемое значение не нуль. Если функция завершается ошибкой, возвращаемое значение равняется нулю.

SetTimer

Создает таймер с указанным значением времени простоя.

Синтаксис:

UINT_PTR WINAPI SetTimer(

_In_opt_  HWND hWnd,

_In_      UINT_PTR nIDEvent,

_In_      UINT uElapse,

_In_opt_  TIMERPROC lpTimerFunc

);

Параметры:

  • hWnd [in] — дескриптор окна, которое связано с таймером. Это окно должно быть собственностью вызывающего потока. Если этот параметр NULL, никакое окно не связано с таймером, а параметр nIDEIvent игнорируется.

  • nIDEvent [in] — указывает идентификатор таймера отличный от нуля. Если параметр hWnd - NULL, этот параметр игнорируется. Если параметр hWnd - не NULL, и у окна указанного hWnd уже есть таймер со значением nIDEvent, то существующий таймер заменяется новым таймером.

  • uElapse [in] — указывает значение времени простоя, в миллисекундах.

  • lpTimerFunc [in] — указатель на функцию, которая уведомляет, когда значение времени простоя истекает. Если параметр lpTimerFunc - NULL, система помещает уведомление WM_TIMER в очередь прикладной программы.

Возвращаемое значение:если функция завершается успешно, а параметр hWnd - NULL, возвращаемое значение - целое число, идентифицирующее новый таймер. Приложение может передать это значение в функцию KillTimer, чтобы уничтожить таймер. Если функция завершается успешно, а hWnd параметр - не NULL, тогда возвращаемое значение - целое число отличное от нуля. Приложение может передать значение параметра nIDEvent в функцию KillTimer, чтобы уничтожить таймер. Если при создании таймера функция завершается ошибкой, возвращаемое значение - нуль.

KillTimer

Ликвидирует указанный таймер.

Синтаксис:

BOOL WINAPI KillTimer(

_In_opt_  HWND hWnd,

_In_      UINT_PTR uIDEvent

);

Параметры:

  • hWnd [in] — дескриптор окна, связанного с указанным таймером. Это значение должно быть таким же, как и значение hWnd, переданное в функцию SetTimer, которая создала таймер.

  • uIDEvent [in] — указывает таймер, который будет ликвидирован. Если дескриптор окна, который передают в функцию SetTimer - правильный, то этот параметр должен быть таким же, как и значение nIDEvent переданное в SetTimer. Если приложение вызывает SetTimer с hWnd установленным в NULL, то этот параметр должен быть идентификатором таймера, значение которого возвращает функция SetTimer.

Возвращаемые значения:если функция завершается успешно, возвращаемое значение - не нуль. Если функция завершается ошибкой, возвращаемое значение - нуль.