Re[5]: Есть Timer без окна?
От: Joker3D Россия http://blog.trunin.com
Дата: 16.10.02 14:28
Оценка:
Здравствуйте Constructor, Вы писали:

C>Здравствуйте 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>>напиши попобробнее... почему это ты не можешь создать окно? что за ассерт, где???


C>

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


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


не понимаю, зачем наследоваться от окна если его (окно) не создавать??? (возможно, тут ошибка в дизайне)
ну да ладно,
1. можно создать внутри твоего класса экземпляр окна CMyWnd wnd; со ссылкой на себя,
потом создать само окно wnd.Create(..).
и у него в обработчике ON_TIMER дергать какой-нибудь свой метод...
2. статическую функцию : static TIMERPROC MyTimer(...) и в ней делать то что надо..
Konstantin Trunin
http://blog.trunin.com — эффективное управление людьми, проектами, собой
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.