WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Странности с WM_TIMER в ATLпрограммме (ATLMovie)

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Странности с WM_TIMER в ATLпрограммме (ATLMovie)
vovs опубликован 24-05-2001 16:15 MSK   Click Here to See the Profile for vovs   Click Here to Email vovs  
День добрый, постепенно разбираясь всё в том же примере столкнулся с ещё одной странным явлением. А именно, добавляю я в Events метод(напомню что это я в старую прогу руками добавил поскольку повторить пример не получилось), например Position(double a, double b, double c, double d) (То есть в Proxy будет Fire_Position(..)). В процедуре CreateFilterGraph(LPCOLESTR strFile)(в которой я при настройке окна добавил к WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS ещё и WS_VSCROLL после чего окно в рамках стало
), где создаётся видео-окно и есть hWnd (или m_hWnd) :
// Now initialize the video window
HWND hWnd;
RECT rc = m_rcPos;
if (m_bWndLess)
{
// Obtain the HWND of the client's window
HDC hDC;
m_spInPlaceSite->GetDC(NULL, OLEDC_NODRAW, &hDC);
hWnd = WindowFromDC(hDC);
}
else
{
hWnd = m_hWnd;
OffsetRect(&rc, -rc.left, -rc.top);
//////////////////// добавяю API-таймер (то есть ::SetTimer(hWnd,ID_T1,500,NULL)) где ID_T1 добавил в ресурсах в VS-окружении /View. А в WN_TIMER то етсь в OnTimer(...) добавляю для тест целей MessageBeep ну и собсвенно Fire_Position(11,441,447,5). Компилируем,,,стартуем Spy++ ну и VB-пример, добавляем туды перехват Events и выводим его в textbox ..запусскаем и смотрим....Писков нет, Events не шлються, НО в Spy++ тикает WN_TIMER .....((
Ладно , ставим вместо API-Timer такой таймер;) ...SetTimer(ID_T1,500,NULL))..проверяем..всё тихо как в гробу ((( нет WN_TIMER вообще в Spy++ ....Тогда так ...с тест-целями создаём
VOID CALLBACK TimerProc( HWND,UINT,UINT,DWORD)
{MessageBeep(65555) и пишем в
::SetTimer(hWnd,ID_T1,500,(TIMERPROC)TimerProc)
Ура beeps есть как толкько я в vb-прогамме стартую видео (если убрать в settimer hWnd и записать NULL то стартует сразу пр окрытии окна VB-программы) НО ТЕПЕРЬ Я НЕ МОГУ ДОБАВИТЬ (не умею в глобальном пространстве заявить Fire_ ....) Fire_Position(11,441,447,5). ((( Что мне собсвенно и надо было...Кстати меня удивляет, что прекращение beeps происходит НЕ при закрывании видеокна а при закрытии программы..
Вот и вопрос КАК вызывать в callback Fire_ почему без callback ничего не выходит,,как реализовать таймер с Threads..мне уже посоветовали ,,делай в VB но его не знаю...а времени мне ,,недели полторы...
Благодарю за советы:)

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.