Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как вернуться из потока к методу OnInitDialog()? 
:(
    Опции темы
BBulat
Дата 25.2.2010, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 5.12.2006

Репутация: нет
Всего: нет



В моем приложении метод OnInitDialog()  открывает драйвер для чтения и записи. Чтение и запись в драйвер происходят в двух разных потоках асинхронным способом. Мне необходимо возвращаться в метод OnInitDialog() при не выполнении функций writefile или readfile.
Код

BOOL CTestAPIDlg::OnInitDialog() {...}
UINT TransmitThread( LPVOID pParam )
{
   Success = WriteFile(PipeOut, &buf_w, 60, &nBytes, &gOverLapped_Write);                
   DWORD flag = WaitForSingleObject(hEvent_Write,100);    
   if(flag==WAIT_OBJECT_0)    GetOverlappedResult(PipeOut,&gOverLapped_Write,&nBytes,TRUE);            
   if(flag==WAIT_TIMEOUT)    ??.OnInitDialog();
}

Как правильно вызвать метод OnInitDialog()  из потока?
Зранее благодарен!
PM MAIL   Вверх
Andrey44
Дата 25.2.2010, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 12
Всего: 26



Не знаю правильно ли это, но попробуй послать PostMessage(hwnd, WM_INITDIALOG, 0, 0)


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
SenkraD
Дата 25.2.2010, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 4
Всего: 23



Цитата(BBulat @  25.2.2010,  08:09 Найти цитируемый пост)
Мне необходимо возвращаться в метод OnInitDialog() при не выполнении функций writefile или readfile.
Что означает вернутся? Если вызвать, то так, как посоветовал Andrey44, а иначе опишите задачу более полно
 


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
Earnest
Дата 1.3.2010, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Надо полагать, "вернуться" - значит получить управление и знать при этом, что чтение запись накрылись...
Вопрос такой: все ли чтение-запись должно произойти, пока не завершился OnInitDialog?  Если да, то просто дождись завершения вызванного  потока, а код завершения передай через возвращаемое функцией потока значение. Если нужно вернуть управление только в случае неудачи, а если чтение-запись начались успешно и будут продолжаться некоторое время, а диалог в это время должен чего-то делать, то тебе понадобятся два события - "хорошо" и "плохо". В OnInitDialog жди WaitForMultipleObjects, а в функции потока возбуди соответствующее событие в зависимости от результата.
И еще вопрос: так ли необходимо делать это именно в OnInitDialog? Если все дело в том, чтобы показать соответствующее сообщение (или что-то в этом роде) и закрыть диалог, то просто заведи User Message и пошли его диалогу (PostMessage). 


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0424 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.