Поскольку содержательные части двух последних
menu->CheckMenuItem(CM_SIN,MF_UNCHECKED);//Снять маркер
Invalidate();//Перерисовать окно (без этого графика)
} } /*Функции CmCos(), CmSinX() , CmCosX() имеют аналогичное содержимое*/
void MyWindow::Cm200(){//Устанавливаем 200 точек на 1 k=200; Invalidate();//Перерисовываем
void MyWindow::Cm100(){//Устанавливаем 100 точек на 1
k=100;
Invalidate();//Перерисовываем
] void MyWindow::Cm50(){//Устанавливаем 50 точек на 1
к=50;
Invalidate();//Перерисовываем
} void MyWindow::EvRButtonDown(UINT,TPoint& point){
TRect rect;
GetWindowRect(rect);//Получим текущие координаты главного окна
point+=rect.TopLeft();//Смещаем точку вывода меню
popupMenu.TrackPopupMenu(TPM_LEFTALIGN,point,0,HWindow);//Отобразим
//плавающее меню
}
/*3амещающая функция
InitMainWindow() */ void MyApp::InitMainWindow(){
MyWindow* myWin=new MyWindow(0,"Программа
27-3");
SetMainWindow(myWin);
EnableBWCC();//Разрешаем загрузку и использование BWCC.DLL
] '
void MyWindow: :Paint (TDC&dc,bool,TRect&) { ...//Аналогично примеру 27-2, но выводятся 4 графика
} /*Главная функция приложения OwlMain*/
int OwlMain(int,char*[]){
return MyApp().Run();
}
Поскольку содержательные части двух последних примеров совпадают, ниже будут описаны только принципиальные отличия приложения 27-3 от предыдущего.
В классе MyWindow объявляется указатель menu на объект класса TMenu для добавления в меню маркеров, а также объект popupMenu класса TPopupMenu для образования плавающего меню, активизируемого щелчком правой клавиши мыши. Объект класса TMenu еще предстоит создать; это удобно выполнить в замещенной функции SetupWindow() класса TFrameWindow. Функции с именем SetupWindow входят во многие классы, описывающие различные окна (TWindow, TFrameWindow, TButton, TDialog и -др.); все они замещают исходную виртуальную функцию SetupWindow() класса TWindow и служат для выполнения необходимых для данного класса инициализирующих действий. Замещение функции Set-upWindow() в прикладном классе позволяет добавить к системным инициализирующим действиям собственные. При этом, как правило, в замещающей функции необходимо сначала вызвать замещенную, и лишь затем выполнять прикладную инициализацию. Так и сделано в нашем примере (см. определение функции MyWindow::SetupWindow()).
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий