Re[4]: Есть Timer без окна?
От: Constructor  
Дата: 16.10.02 14:19
Оценка:
Здравствуйте Joker3D, Вы писали:

JD>Здравствуйте Constructor, Вы писали:


C>>Здравствуйте Flea, Вы писали:


F>>>Здравствуйте Constructor, Вы писали:


C>>>>Здравствуйте!

C>>>>Функция SetTimer требует указать хэндл окна, сообщения OnTimer шлются тоже окну.
C>>>>А как быть, если у класса окна нет, а хожется получать собщения через заданные промежутки времени?

F>>>Пиши 0 вместо указателя на окно


C>>Вообще-то, я использую CWnd::SetTimer. Мой класс наследован от CWnd. Окно создавать (т.е., вызвать Create как обычно делается) для него я не могу. Вываливается на ASSERT, что мой класс не окно.

C>>Следуя Вашему совету, решил написать ::SetTimer(0, 1, 100, ). А что писать в 4-й параметр? NULL теперь туда писать нельзя, а то будет посылаться сообщение WM_TIMER, окна ведь нет. Пишу ::SetTimer(0, 1, 100, TimerProc1), где TIMERPROC TimerProc1(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime); Так не хочет компилироваться.( Как вызывать ::SetTimer?

JD>напиши попобробнее... почему это ты не можешь создать окно? что за ассерт, где???



class COutControlCtrl : public COleControl
{
// ...
}


Окно не могу из-за специфического использования этого класса. Теоретически я могу вызвать Create (она объявлена еще в CWnd), но мне это не нужно. А вылетало на ASSERT( IsWindow() ); (примерно так, точный текст не помню), потому что я окно не создавал. Этот ASSERT где-то в исходниках CWnd. Экземпляр класса оператормо new создавал, а окно для этого класса не создавал, поэтому-то и возник данный вопрос.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.