Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите добить программу, или окно-контейнер и работа с ним.. 
:(
    Опции темы
Coocky
Дата 1.2.2006, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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




A!
Забросил я это дело... smile
Не призодит сообщения smile Молчит моя OnIdle smile

Это сообщение отредактировал(а) Coocky - 1.2.2006, 13:57


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
takedo
Дата 1.2.2006, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Cтвойдиалог* pDlg = (Cтвойдиалог*)AfxGetMainWnd();
он же Cтвояаппликация* papp = (Cтвояаппликация*)AfxGetApp()->m_pMainWnd;

Думаю, что диалоги ты объявляешь либо в "Cтвояаппликация" либо в "Cтвойдиалог" - вот тебе и доступ до всего smile
Добавлено @ 14:11
а я все таки думаю, что не стоит так широко использовать OnIddle, в крайнем случае в ней какой-нибудь евент взвести... так как пока мы находимся в OnIddle, то ничего другого не сможем наверное сделать (я опять про ядреную войну с отображением кнопки smile smile ) - война вот уже как полчаса, а оператор - кнопкодав не видит ничего, сидит кино зырит, а в OnIddle вообще пошла выполняться дефрагментация дисков на соседнем компе smile


--------------------
я не гольфист - я хоккеист
PM MAIL   Вверх
Coocky
Дата 1.2.2006, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



а не вызывается она у меня smile ,OnIdle smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
takedo
Дата 1.2.2006, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



значит грузишь прогу... А может и не вызывается, вот как проверить? smile - так возьми супер комп smile и ежели не вызовется, тогда просто не заходит туды. Хороший способ, правда? smile


--------------------
я не гольфист - я хоккеист
PM MAIL   Вверх
Earnest
Дата 1.2.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 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
Цитата(takedo @ 1.2.2006, 14:07 Найти цитируемый пост)

не стоит так широко использовать OnIddle

Как раз очень удобно использовать Idle-обработку. Но конечно, с умом - ничего тяжелого там делать не следует. На случай ядерной войны. smile
Но прорисовка к тяжелым функциям не относится.



--------------------
...
PM   Вверх
takedo
Дата 1.2.2006, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Earnest smile
Добавлено @ 14:43
Цитата

Но прорисовка к тяжелым функциям не относится.

Кстати, писал я в молодости визуализацию результатов газодинамических расчетов(заливка разными цветами каждой точки- расчетной ячейки) - очень надо сказать тяжеленькая операция, если ещё и вектора - никогда момент начала войны не словить... smile


--------------------
я не гольфист - я хоккеист
PM MAIL   Вверх
Earnest
Дата 1.2.2006, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Кто же спорит, все что угодно можно тяжелым сделать... умеючи-то smile
Я про приложение Cooky говорила.


--------------------
...
PM   Вверх
Coocky
Дата 1.2.2006, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Earnest
Ну что... Еще раз доказала-что лучшая smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Dreamer_0x01
Дата 1.2.2006, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


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

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



Я вот осмелюсь вместо OnIdle воспользоваться...только не кидайтесь тухлыми помидорами преждевременно...WM_TIMER в самом окне, чтоб не надо было до него достукиваться!
Ведь это сообщение не синхронное, и если таймер его посылать чаще, чем допускает система, оно просто будет выкидываться из очереди. То есть в те моменты, когда окно ничем не занято, мы это сообщение будем ловить нормально. Как только приложение "дало газу ;)", оконная очередь сообщений нагружается и сообщения WM_TIMER не игнорируются. Думаю, стоит попробовать, во всяком случае, это точно способ хорошо самоизвратиться ;)


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
Coocky
Дата 1.2.2006, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Цитата(Dreamer_0x01 @ 1.2.2006, 18:14 Найти цитируемый пост)

Как только приложение "дало газу ;)", оконная очередь сообщений нагружается и сообщения WM_TIMER не

Интересен еще интервал, что б выкидывалось. Что б даже на движение мыши реагировало, т.е. уже выкидывалось. Такое возможно? С каким интервалом?


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Earnest
Дата 1.2.2006, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



WM_TIMER можно, но действительно не очень понятно какой интервал установить. Кстати он не может быть меньше 10 mc.
Однако в данном случае OnIdle лучше, т.к. это сообщение гарантированно приходит каждый раз как очередь сообщений опустошается - т.е. как раз тогда, когда приложение освободилось.


--------------------
...
PM   Вверх
Coocky
Дата 1.2.2006, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Попробывал. Кнопки как в фантастике-плавно асинхроно перерисовываются в виде пробегающей строчки. Прикольный эффект, но для другого раза smile
А толком не спасает. все равно заметно, если резко дергать smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Dreamer_0x01
Дата 1.2.2006, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


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

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



Цитата(Earnest @ 1.2.2006, 18:47 Найти цитируемый пост)

Кстати он не может быть меньше 10 mc.


Вот такой интервал как раз и установить. Чтоб сообщения проходили только когда система подразгрузилась. Но! Можно ведь еще добавить в класс переменную. И с помощью нее отслеживать каждые сто таких сообщений. По переполнению этого значения ее обнулять, и вызывать прорисовку. Тогда мы как раз и получим при сильной загруженности нечастые перерисовки (сотня событий через занятую очередь будет "пропихиваться" достаточно долго.) А при слабой загруженности будем переполнять эту переменную гораздо чаще.
Добавлено @ 19:47
Цитата(Coocky @ 1.2.2006, 18:51 Найти цитируемый пост)

Попробывал. Кнопки как в фантастике-плавно асинхроно перерисовываются в виде пробегающей строчки. Прикольный эффект, но для другого раза

Покажи начальству, может, оценит и попросит оставить smile



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


 




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


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

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