мы прежде всего должны вызвать
Очевидно, что в нашей функции GetWindowClass() мы прежде всего должны вызвать исходную функцию с тем же именем класса TWindow, чтобы она заполнила все поля структуры WNDCLASS требуемыми по умолчанию значениями. Лишь после этого можно изменить значения отдельных полей нужным нам образом. Следует подчеркнуть, что необходимость вызова исходной, замещенной функции в общем случае совсем не очевидна. Так, например, заместив функцию InitMainWindow(), мы не вызывали исходный вариант, а фактически заново написали ее текст в своей программе с удобными для нас изменениями. Надо ли вызывать замещенные функции из замещающих (и, кстати, когда их вызывать - в начале замещающей функции или, возможно, в конце), а также какие строки допустимо включать в замещающие функции, можно определить, лишь детально рассматривая исходные тексты соответствующих классов OWL.
Наша программа выглядит несколько неуклюже из-за наличия в ней глобальных данных частного характера. Текст программы можно сделать заметно компактнее, если перенести операции загрузки ресурсов с получением их дескрипторов в функцию GetWindowClass(). В этом случае отпадет необходимость объявлять переменные hIcon и hCursor глобальными: их можно переместить в класс MyWindow. Однако функции LoadIcon() и LoadCursor() принадлежат классу TModule, и просто вызвать их из функ-
240 Глава 26
ции класса MyWindow нельзя, необходимо указать объект, для которого они вызываются. В нашей программе указатель на объект производного от TModule класса MyApplication носит название mуАрр, однако в функции GetWindowClass() это конкретное имя, разумеется, не может быть известно. Поэтому придется в процессе выполнения функции GetWindowClass() динамически определить указатель на объект приложения. Это можно сделать с помощью функции класса TWindow GetApplication(), которая возвращает указатель на объект класса TApplication, с которым связано наше окно. Измененный текст функции GetWindowClass() выглядит следующим образом:
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий