Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Непонятки с DoWaitCursor (MFC), или песочные часы 
:(
    Опции темы
REZiaMIX
Дата 22.2.2011, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Пишу под WinMobile 6.1(не суть). 
Есть такой кусок кода:
Код

void callToAnotherFunc()
{
     //  тут возникает необходимость - показать диалог
     //  следуя  здравому смыслу, хочу 
     //  убрать часики загрузки на время отображения диалога
     //  решаю юзать DoWaitCursor

     // ПРОБЛЕМНОЕ МЕСТО! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
     AfxGetApp()->DoWaitCursor(-1);     // по-идее убрали курсор загрузки
     someDlg.DoModal();
     AfxGetApp()->DoWaitCursor(1);      // возвратили курсор загрузки
   
}
void somefunction(someparams ....)
{
     // здесь мы чтото долго делаем, и просто обязаны сменить курсор на 'загрузка'
     // чтобы показать , что мы не зависли, а трудимся
     CWaitCursor aWait;
     if(некоеусловие)
          callToAnotherFunc();
}


Вся проблема в том, что на строке "// ПРОБЛЕМНОЕ МЕСТО"
одинарный вызов DoWaitCursor ни к чему не приводит!!! Т.е. курсор загрузки не пропадает!(пробовал аргумент -1 и 0)
но в тоже время, если сделать этот вызов 3 раза , все работает как надо - курсор исчезает. После этого, чтобы восстановить курсор загрузки, опять же, помогает только 3ной вызов DoWaitCursor. 

Меньшее кол-во вызовов не имеет никакого эффекта. В чем загвоздка?



--------------------
user posted image
PM MAIL   Вверх
Earnest
Дата 22.2.2011, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Как минимум, можно зайти внутрь функции DoWaitCursor и посмотреть, почему.
Но я бы твой код переписала более корректно с точки зрения блоков и времени жизни: т.е. первую часть, до if (некое условие) заключи в скобки, чтобы Wait-курсор сам разрушился. Если потом опять надо, никто не мешает еще раз включить.


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


 




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


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

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