Окна сообщений. Назначение окон сообщений презентация

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

Слайд 1Окна сообщений



Слайд 2Назначение окон сообщений
Окна сообщений являются важнейшим средством диалога системы и прикладной

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






Окно сообщения, выведенное системой при обнаружении сбоя приложения

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

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

char szText[80];
wsprintf(szText,"CS=%X, DS=%X, SS=%X\nWinMain=%X\nszClassName=%X", _CS,_DS,_SS,WinMain,szClassName);
MessageBox(NULL,szText,"Из программы",MB_ICONINFORMATION);

Результатом выполнения этого фрагмента будет вывод на экран сообщения с таким содержимым.


Слайд 4Функция MessageBox()
Функция MessageBox() позволяет создать и вывести на экран в требуемой

точке программы служебное окно с заданным текстом,
в текст можно включить:
текстовые строки
числовые данные (значения переменных).
Прототип этой функции выглядит следующим образом:
int MessageBox(
HWND hWnd, //Дескриптор родительского окна
LPCTSTR lpText, //Выводимый текст
LPCTSTR lpCaption, //Заголовок окна сообщения
UINT uType //Стиль окна сообщения
) ;
Первый параметр идентифицирует окно, являющееся родительским для окна сообщения. В большинстве случаев вместо дескриптора родительского окна на месте этого параметра можно указать NULL.
Второй параметр представляет собой адрес строки с текстом, выводимым в окно, или саму эту строку, заключенную в кавычки.
Третий параметр - адрес строки или сама строка с текстом заголовка окна сообщения.
четвертый параметр в функцию передается константа, определяющая вид и поведение окна сообщения.

Слайд 5вид и поведение окна сообщения
С помощью этой константы задаются 3 элемента

окна сообщения:
вид пиктограммы, характеризующей тип сообщения, - информационное, предупреждающее и пр.;
набор управляющих кнопок в окне и надписи на них;
задание кнопки, выбранной по умолчанию (при наличии в окне нескольких кнопок).
Кроме внешнего вида окна, последний параметр позволяет задать степень блокирования остальных окон приложения и других задач при выводе на экран данного сообщения. Это важно в тех случаях, когда окно сообщения сигнализирует о серьезных неисправностях в приложении или всей системе в целом.
Константы, относящиеся к разным элементам окна, могут объединяться с помощью операции побитового ИЛИ (знак |).
в статье MessageBox интерактивного справочника можно также найти константы, задающие наборы управляющих кнопок.
Например,
при использовании константы МВ_ОК в окно сообщения выводится единственная кнопка с надписью ОК.;
константа MB_YESNO выводит две кнопки - "Да" и "Нет" и т. д.


Слайд 6Возможные пиктограммы окна сообщения
Символические константы Значок

MB ICONASTERISK (или MB_ICONINFORMATION)

MB_ICONHAND(или MB_ICONSTOP)

MB_ICONEXCLAMATION

MB_ICONQUESTION



!



?


Слайд 7
Если текст, выводимый в окно сообщения, известен заранее, его можно просто

включить в вызов функции MessageBox() в качестве параметра,
например:
MessageBox(NULL, "Вы забыли задать данные!", "Ошибка", MB_ICONSTOP);

Если, однако, требуется вывести значения каких-либо числовых переменных, сначала надо эти значения преобразовать в символьную форму, для чего удобно использовать функцию wsprintf():

wsprintf(szText, "CS=%X, DS=%X,SS=%X\nWinMain=%X\nszClassName=%X", CS, _DS, _SS, WinMain, szClassName);

первый параметр - адрес строки-приемника,
второй параметр - адрес строки-источника (или сама строка).
В строке-источнике, кроме текста, могут присутствовать спецификации формата, определяющие, по какому формату будут преобразовываться в символьные строки следующие далее переменные.
Число указанных переменных (в приведенным примере это обозначения регистров процессора _CS, _DS и _SS, а также имен функции WinMain и строки szClassName) должно быть равно числу спецификаций формата. Все спецификации формата начинаются со знака процента (%);


Слайд 8
Допустимые спецификации формата для функции wsprintf() и их назначение
Спецификации Переменная Представление при выводе

d

или i Целое Десятичное целое со знаком :
u Целое Десятичное целое без знака
х Целое Шестнадцатеричное целое строчными буквами
Х Целое Шестнадцатеричное целое прописными буквами
S Строка Строка
с Байт Символ

В действительности спецификаций формата гораздо больше, например
li - длинное целое со знаком в десятичном представлении,
lu — длинное целое без знака в десятичном представлении
lX - длинное целое в шестнадцатеричном представлении, однако для 32-разрядных программ целые числа имеют длину 32 бита, т.е. совпадают с длинными целыми, и эти спецификации не имеют смысла.

Слайд 9Рассмотрим некоторые особенности работы систем Windows
Для любых 32-разрядных приложений селектор сегмента

команд всегда равен 0х137,
Селектор совпадающих сегментов данных и стека — 0x13F.
32-разрядные приложения работают в модели плоской памяти, где базовые адреса всех сегментов равны нулю, в результате чего виртуальные смещения объектов программы совпадают с их линейными адресами.
Программа и данные расположены в 1-м гигабайте линейного адресного пространства, хотя и разнесены в нем на значительное расстояние;
Главная процедура WinMain() находится в 5-м мегабайте,
Строка с данными - в 7-м.


Слайд 10Заключение
Функция MessageBox() широко используется в прикладных программах для вывода всякого рода

служебных сообщений.
Можно ее использовать в другом качестве - как средство диагностики и отладки разрабатываемых программ.
С помощью функции MessageBox() можно выводить по ходу программы значения интересующих нас переменных, как это сделано в приведенном выше фрагменте, с целью их сравнения и проверки.















Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика