Вопрос № 82279: Мужики!!!
Помогите!
Если кто помнит, то я пишу архиватор. Вопрос: при выполнении алгоритма заложеного в проге прога как бы на время подвисает, т.е. когда в процессе архивипрования пытаешься потаскать её по рабочему столу, то она тупит поку ал...Вопрос № 82356: Здравствуйте. Я хочу сделать маленькую игрушку, и у меня вопрос, как в С++ можно поставить картинку-фон?
Я пользуюсь Visual C++ 6.0.
Буду благодарен за любую помощь....Вопрос № 82452: Подскажите пожалуйста, как выгрузить dll из памяти? Если что можно и на Delphi....
Вопрос № 82.279
Мужики!!!
Помогите!
Если кто помнит, то я пишу архиватор. Вопрос: при выполнении алгоритма заложеного в проге прога как бы на время подвисает, т.е. когда в процессе архивипрования пытаешься потаскать её по рабочему столу, то она тупит поку алгоритм архивирования не закончит свое выполнение, как с этим бороться????
Отправлен: 12.04.2007, 20:26
Вопрос задал: Tatarin (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Lomer
Здравствуйте, Tatarin!
Архивацию нужно проводить в отдельном потоке.
Используйте для этого CreateThread();
Ответ отправил: Lomer (статус: 4-ый класс)
Ответ отправлен: 12.04.2007, 20:34 Оценка за ответ: 4 Комментарий оценки: Понятно но инфы мало
Отвечает: Dr.Alex
Здравствуйте, Tatarin!
А можно просто в цикле архивации производить обработку сообщений Windows. Тогда окно будет таскаться по экрану и кнопки нажиматься.
Ответ отправил: Dr.Alex (статус: 10-ый класс)
Ответ отправлен: 13.04.2007, 10:42 Оценка за ответ: 3 Комментарий оценки: а можно пример или ссылку!
Отвечает: V1s0r
Здравствуйте, Tatarin!
Это проблема известная. И у меня такая была (однажды я задавал даже похожий вопрос). Тормозится поток графического пользовательского интерфейса большими вычислительными расчётами (как твоя архивация).
По идее, надо сделать так, чтобы эти самые расчёты были в другом потоке и наладить взаимодействие между ними (потоками). Проще сказать, чем сделать. У меня есть примеры кода (из моих проектов), где это реализовано. Но я пишу на Qt.
Могу дать ссылку на пример, где реализовано то, о чём мы выше говорили:
http://doc.trolltech.com/4.2/threads-mandelbrot.html
Даже если ты не на Qt будешь писать, идею ты подхватишь, а это самое главное.
Удачи!
Ответ отправил: V1s0r (статус: 3-ий класс)
Ответ отправлен: 13.04.2007, 14:34 Оценка за ответ: 5 Комментарий оценки: Все понятно, попробуем разобраться
Отвечает: Ilkras
Здравствуйте, Tatarin!
Ваша програма "тормозит" из за того, что вычисления (архивация) производятся в том же потоке, что и обработка событий GUI. Чтоб избежать этого - запустите вычисления в отдельном потоке и дайте ему пониженный приоритет. Для этого надо вынести все вычисления в отдельную функцию. Результат работы и исходные данные можно, для простоты, передавать через глобальные переменные (файл тоже можно рассматривать как глобальное данное). Для создания потока в Windows пользуйтесь CreateThread.
Ответ отправил: Ilkras (статус: 7-ой класс)
Ответ отправлен: 14.04.2007, 09:19 Оценка за ответ: 5 Комментарий оценки: Спасибо, уже пытаюсь это делать.
Вопрос № 82.356
Здравствуйте. Я хочу сделать маленькую игрушку, и у меня вопрос, как в С++ можно поставить картинку-фон?
Я пользуюсь Visual C++ 6.0.
Буду благодарен за любую помощь.
Отправлен: 13.04.2007, 11:39
Вопрос задал: Kumold (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Базанов Иван Александрович
Здравствуйте, Kumold!
Предполагаю, что вся отрисовка будет выпольняться руками (обрабатывая WM_PAINT)
В таком случае нужно просто рисовать фон (возможно со сдвигом) перед отрисовкой всего остального...
--------- Disassemble your life and get the key
Ответ отправил: Ross (статус: 7-ой класс)
Ответ отправлен: 13.04.2007, 20:43 Оценка за ответ: 5 Комментарий оценки: Спасибо за помощь
Отвечает: Lomer
Здравствуйте, [C]RaSh!
Помимо получения хэндла модуля во время его создания, можно его узнать и во время исполнения, когда модуль находится в памяти.
HMODULE hDll=GetModuleHandle("DllName.dll");
...
FreeLibrary(hDll);
Ответ отправил: Lomer (статус: 4-ый класс)
Ответ отправлен: 13.04.2007, 21:10