![]() |
|
|
![]()
|
|
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
A! Забросил я это дело... Не призодит сообщения Это сообщение отредактировал(а) Coocky - 1.2.2006, 13:57 -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
Cтвойдиалог* pDlg = (Cтвойдиалог*)AfxGetMainWnd();
он же Cтвояаппликация* papp = (Cтвояаппликация*)AfxGetApp()->m_pMainWnd; Думаю, что диалоги ты объявляешь либо в "Cтвояаппликация" либо в "Cтвойдиалог" - вот тебе и доступ до всего Добавлено @ 14:11 а я все таки думаю, что не стоит так широко использовать OnIddle, в крайнем случае в ней какой-нибудь евент взвести... так как пока мы находимся в OnIddle, то ничего другого не сможем наверное сделать (я опять про ядреную войну с отображением кнопки -------------------- я не гольфист - я хоккеист |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
а не вызывается она у меня
-------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
значит грузишь прогу... А может и не вызывается, вот как проверить?
-------------------- я не гольфист - я хоккеист |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Coocky
Про WM_KICKIDLE в MSDN действитеьльно мало (где-то в technical notes). Ничего сложного. 1) Подключи файл <afxpriv.h> 2) В главном диалоге создай обработчик afx_msg LRESULT OnKickIdle(WPARAM,LPARAM); (имя произвольное) 3) В карту сообщений добавь ON_MESSAGE(WM_KICKIDLE,OnKickIdle) 4) В самом обработчике делай, что хотел на Idle, возвращай 0. Добавлено @ 14:33 OnIdle приложению не приходит потому, что это диалоговое приложение - там не вызывается CWinApp::Run, а работает просто CDialog::RunModalLoop. Там все чуть-чуть по другому. А WM_KICKIDLE должен приходить. Добавлено @ 14:35 Как раз очень удобно использовать Idle-обработку. Но конечно, с умом - ничего тяжелого там делать не следует. На случай ядерной войны. Но прорисовка к тяжелым функциям не относится. -------------------- ... |
|||
|
||||
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
Earnest
Добавлено @ 14:43
Кстати, писал я в молодости визуализацию результатов газодинамических расчетов(заливка разными цветами каждой точки- расчетной ячейки) - очень надо сказать тяжеленькая операция, если ещё и вектора - никогда момент начала войны не словить... -------------------- я не гольфист - я хоккеист |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Кто же спорит, все что угодно можно тяжелым сделать... умеючи-то
Я про приложение Cooky говорила. -------------------- ... |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Earnest
Ну что... Еще раз доказала-что лучшая -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Я вот осмелюсь вместо OnIdle воспользоваться...только не кидайтесь тухлыми помидорами преждевременно...WM_TIMER в самом окне, чтоб не надо было до него достукиваться!
Ведь это сообщение не синхронное, и если таймер его посылать чаще, чем допускает система, оно просто будет выкидываться из очереди. То есть в те моменты, когда окно ничем не занято, мы это сообщение будем ловить нормально. Как только приложение "дало газу ;)", оконная очередь сообщений нагружается и сообщения WM_TIMER не игнорируются. Думаю, стоит попробовать, во всяком случае, это точно способ хорошо самоизвратиться ;) -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Интересен еще интервал, что б выкидывалось. Что б даже на движение мыши реагировало, т.е. уже выкидывалось. Такое возможно? С каким интервалом? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
WM_TIMER можно, но действительно не очень понятно какой интервал установить. Кстати он не может быть меньше 10 mc.
Однако в данном случае OnIdle лучше, т.к. это сообщение гарантированно приходит каждый раз как очередь сообщений опустошается - т.е. как раз тогда, когда приложение освободилось. -------------------- ... |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Попробывал. Кнопки как в фантастике-плавно асинхроно перерисовываются в виде пробегающей строчки. Прикольный эффект, но для другого раза
А толком не спасает. все равно заметно, если резко дергать -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Вот такой интервал как раз и установить. Чтоб сообщения проходили только когда система подразгрузилась. Но! Можно ведь еще добавить в класс переменную. И с помощью нее отслеживать каждые сто таких сообщений. По переполнению этого значения ее обнулять, и вызывать прорисовку. Тогда мы как раз и получим при сильной загруженности нечастые перерисовки (сотня событий через занятую очередь будет "пропихиваться" достаточно долго.) А при слабой загруженности будем переполнять эту переменную гораздо чаще. Добавлено @ 19:47
Покажи начальству, может, оценит и попросит оставить -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |