Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы по теории.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
140.8 Кб
Скачать

30. О чем уведомляет приложение сообщение wm_paint?

Сообщение уведомляет программу, что часть клиентской области окна стала недействительной (invalid) и ее следует перерисовать.

31. Когда посылается сообщение WM_PAINT?

Когда клиентская область становится недействительной.

32. В каких ситуациях клиентская область окна становится недействительной?

  • При создании окна недействительна вся клиентская область, поскольку в ней еще ничего не нарисовано

  • Если изменяются размеры окна, клиентская область объявляется недействительной, что обусловлено комбинацией стилей CS_HREDRAW | CS_VREDRAW в поле style структуры окна.

  • Когда сворачиваем окно на панель задач, а затем снова разворачиваем.

  • Если перемещаются окна так, что они перекрываются, а затем закрытая часть окна вновь открывается, Windows помечает требующую восстановления клиентскую область как недействительную

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

33. Назовите функцию, которая посылает сообщение WM_PAINT и перерисовывает клиентскую/ область окна с дескриптором hWnd?

Функция InvalidateRect.

34. Какие различают типы пунктов меню?

Различают два типа пункта меню:

  • пункт – команда;

  • пункт – подменю.

35. Что такое пункт-команда?

Пункт – команда - это терминальный (конечный пункт) на иерархическом дереве меню.

Пункт меню-команда имеет свой идентификатор.

36. Какие действия следуют за выбором пункта-команды меню?

Выбор его должен изменить внутреннее состояние приложения, либо привести к некоторому действию. Реакция Windows на выбор этого пункта меню – посыл сообщения WM_COMMAND, содержащего идентификатор этой команды.

37. Что такое пункт-подменю?

Пункт – подменю – это заголовок вызываемого меню следующего, более низкого уровня.

38. Какие действия следуют за выбором пункта-подменю?

Реакция Windows на выбор этого пункта меню – вывод на экран прямоугольной полосы следующего пункта меню.

39. Какими могут быть пункты меню по уровню доступности?

Пункты меню могут быть разрешенными (enabled), запрещенными (disabled), недоступными (grayed). Запрещенный и недоступный пункты с точки зрения поведения одинаковы. Их можно выделить, но нельзя выбрать ( ничего не происходит при их выделении). Отличаются запрещенный пункт и недоступный только внешним видом – недоступный отображается серым цветом, что очень наглядно.

40. Какой уровень доступности пунктов меню назначается по умолчанию?

По умолчанию пункт меню является разрешенным. Когда пользователь выбирает его, система посылает сообщение WM_COMMAND или отображает соответствующий пункт подменю.

41. Что нужно сделать, чтобы пользователь знал, что пункт «отменен»?

Если необходимо, чтобы пользователь знал, что пункт «отменен», нужно сделать его недоступным.

41. Какая функция изменяет уровень доступности пунктов меню?

Функция EnableMenuItem.

43. С помощью какой функции можно получить дескриптор подменю?

С помощью функции GetSubMenu.

44. Какой функцией можно задать группы переключателей?

Функцией CheckMenuRadioItem.

45. Дайте понятие модального диалогового окна.

Модальное диалоговое окно ожидает выполнения некоторого действия со стороны пользователя, прежде чем приложение сможет продолжить свое выполнение. Пользователь не может переключиться между диалоговым окном и другими окнами приложения. Он должен явно закрыть модальное диалоговое окно кнопками OK или Cancel. Однако пользователь может переключаться на другие приложения.

46. Какие окна называются немодальные?

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

47. С помощью какой функции можно получить дескриптор элемента управления?

С помощью функции GetDlgItem.

48. Перечислите последовательность действий программиста по созданию диалога в приложении?

  • Определение шаблона окна в редакторе диалоговых окон.

  • Определение диалоговой процедуры.

  • Вызов функции создания диалогового окна из окна, в котором этот диалог создается ( вызов из родительского окна )

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

49. При вызове какой функции устанавливается соответствие между диалоговым окном и его диалоговой процедурой? Перечислите параметры этой функции.

При вызове функции создания окна диалога DialogBox.

INT_PTR DialogBox(       HINSTANCE hInstance, // дескриптор экземпляра приложения

LPCTSTR lpTemplate, // идентификатор шаблона диалога, преобразованный с // помощью макроса MAKEINTRESOURCE к типу LPCTSTR

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

DLGPROC lpDialogFunc // имя диалоговой процедуры

);

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

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

51. Какими функциями можно прочитать и записать текстовую информацию в элемент управления диалогового окна?

Функциями GetDlgItemText и SetDlgItemText.

52. Какими функциями можно прочитать и записать целую числовую информацию в элемент управления диалогового окна?

Функциями GetDlgItemInt , SetDlgItemInt.

53. Какими функциями можно прочитать и записать действительную числовую информацию в элемент управления диалогового окна?

Функциями Функциями GetDlgItemText , преобразовав строку к действительному числу, и SetDlgItemText, предварительно преобразовав число к строке.

54. Как определяются статические объекты?

Такие объекты определяются ключевым словом static.

55. Какова область видимости статического объекта и его время жизни?

Объекты, определенные как static, имеют область видимости как локальные объекты,

т. е. они видны только в блоке, их ограничивающем, но живут, как и глобальные

объекты – все время работы приложения.

56. Как и когда происходит инициализация статических объектов?

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

57. Какие объекты следует определять как статические?

Статические объекты «помнят» свои значения при входе и выходе из блока, в которой они определены. Поэтому в процедурах обратного вызова необходимо объявлять статическими те объекты, которые должны сохранять свои значения при каждом очередном вызове этих процедур.