Метод другого класса! Фоновый режим
От: Аноним  
Дата: 10.02.04 19:09
Оценка:
Привет все!
Сразу предупреждаю — в С++ новичек!
Вобщем столкнулся со следующей проблемой:
необходимо сделать анимацию в OpenGl, т.е. обрабатывать в окне например функцию display() в фоновом режиме.
Т.е. в классе главного окна CMainWnd : public CFrameWnd описанна функция display(), которая все отрисовывает!
Так вот, обнуружил — есть OnIdle(LONG lCount) — обрабатывает сообщения фонового режима, если я, конечно, правильно выражаюсь. Так вот, мое мнение, сюда то и надо воткнут вызов display(), но OnIdle описан в главном классе приложения

class CMyApp : public CWinApp
{
public:
CMyApp(); //конструктор по умолчанию
virtual BOOL InitInstance(); //стандартная инициализация
virtual BOOL OnIdle(LONG lCount); //Работает когда система стоит
};

Отсюда следует вопрос: как из одного класса вызвать функцию друго класса вообще и в данном примере в частноси!
Т.е. что писать в
BOOL CMyApp::OnIdle(LONG lCount)
{
//display();
}

Всем благодарен!
Re: Метод другого класса! Фоновый режим
От: dims12 http://www.relativity.ru
Дата: 10.02.04 19:39
Оценка:
В ответ на письмо от Tue, 10 Feb 2004 19:09:10 GMT.
Приветствую, !

> Т.е. в классе главного окна CMainWnd

> : public CFrameWnd описанна функция display(), которая все отрисовывает!
> Так вот, обнуружил — есть OnIdle(LONG lCount) — обрабатывает сообщения
> фонового режима, если я, конечно, правильно выражаюсь. Так вот, мое
> мнение, сюда то и надо воткнут вызов display(), но OnIdle описан в
> главном классе приложения

> Отсюда следует вопрос: как из одного класса вызвать функцию друго класса

> вообще и в данном примере в частноси! Т.е. что писать в

На деле функция будет вызываться не "из класса", а "из объекта класса". Поскольку Вы хотите из объекта типа "МоеПриложение" вызвать функцию объекта типа "ГлавноеОкно", то из этого следует, что приложение должно знать свое главное окно.

Я бы сперва поискал во Framework-е, предусмотрено ли там это? Поскольку главное окно всегда одно, то, возможно, в приложении есть какой-то метод или член, который на это окно указывает.

А если нет, то я бы сам предусмотрел нужные члены и методы. Допустим, у Вас там есть где-то инициализирующая часть, которая создает и объект приложения и объект окна, вот в ней-то можно все это и заложить.

Кстати, мне кажется, что событие OnIdle не подходит. Idle значит "свободен", "простаивает". Следовательно, это событие будет вызываться, когда программа простаивает. И наверняка не будет вызываться, когда вы даже мышку будете проносить над окном прграммы. Получится, что графика будет двигаться только когда от программы отвлекаются.

Наверное, лучше использовать thread-ы.

Димс.
Posted via RSDN NNTP Server 1.8 beta
Re: Метод другого класса! Фоновый режим
От: VNG Беларусь https://organicmaps.app/
Дата: 10.02.04 19:47
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет все!

А>Сразу предупреждаю — в С++ новичек!
А>Вобщем столкнулся со следующей проблемой:
А>необходимо сделать анимацию в OpenGl, т.е. обрабатывать в окне например функцию display() в фоновом режиме.
А>Т.е. в классе главного окна CMainWnd : public CFrameWnd описанна функция display(), которая все отрисовывает!
А>Так вот, обнуружил — есть OnIdle(LONG lCount) — обрабатывает сообщения фонового режима, если я, конечно, правильно выражаюсь. Так вот, мое мнение, сюда то и надо воткнут вызов display(), но OnIdle описан в главном классе приложения

А>class CMyApp : public CWinApp

А>{
А>public:
А>CMyApp(); //конструктор по умолчанию
А>virtual BOOL InitInstance(); //стандартная инициализация
А>virtual BOOL OnIdle(LONG lCount); //Работает когда система стоит
А>};

BOOL CMyApp::OnIdle(LONG lCount)
{
CMainWnd* pMF = DYNAMIC_DOWNCAST(CMainWnd, ::AfxGetMainWnd());
pMF->display();
}

Такие сообщения лучше постить в форум MFC.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.