Программирование под Win32


Программирование для Windows с помощью библиотеки объектов OWL - стр. 32


void MyWindow::GetWindowClass(WNDCLASS& wc){

TWindow::GetWindowClass(wc);//Вызываем исходную функцию базового класса wc.hIcon=GetApplication()->TModule::LoadIcon("myIcon"); wc.hCursor=GetApplication()->TModule::LoadCursor("myCursor"); }

Перед функциями LoadIcon() и LoadCursor() пришлось указать их принадлежность к классу TModule, так как мы вызываем их из другого класса. Между прочим, обсуждаемый вариант программы возможен лишь потому, что функции LoadIcon() и LoadCursor() объявлены в классе TModule открытыми. Если бы они были закрытыми или даже защищенными, из другого класса их вызывать было бы нельзя.

Запустив приложение 26-4, можно убедиться в том, что созданный нами значок появляется не только в строке заголовка, но и на панели задач Windows (рис. 26.9).

Рассмотренная процедура придания приложению значка и курсора не является единственной. При­дать приложению значок и курсор можно, например, с помощью функций класса TWindow SetIcon() и SetCursor(). Их можно вызывать в замещающей функции InitMainWindow() после образования объекта класса MyWindow. Функции SetIcon() и SetCursor() являются открытыми, однако, чтобы вызывать их из функции, принадлежащей другому классу, необходимо указать конкретный объект, для которого она вы­зываются, или, как в приведенном ниже фрагменте, указатель на объект:

void MyApp::InitMainWindow(void){

MyWindow* myWin=new MyWindow(0,"Программа  26-4"); SetMainWindow(myWin); myWin->SetIcon(this,"myIcon"); myWin->SetCursor(this,"myCursor"); }

В качестве первого аргумента и той, и другой функции необходимо использовать указатель на объект приложения (производный от класса TModule), для которого осуществляется операция назначения ре­сурсов. У нас этот указатель будет носить имя mуАрр, однако в функции-члене класса использовать имена конкретных объектов, разумеется, нельзя, а можно только вызывать функции Windows для дина­мического, в процессе выполнения программы, получения требуемых имен. Здесь, как и в предыдущем фрагменте, можно воспользоваться функцией GetApplication(), вызывав ее для только что созданного указателя myWin




Начало  Назад  Вперед