|
3 / 3 / 0
Регистрация: 02.01.2011
Сообщений: 149
|
|
Automation Error при сворачивании окна с DirectDraw11.09.2011, 14:50. Показов 1680. Ответов 8
Метки нет (Все метки)
Люди, помогите избавится от ошибки. Использую DirectDraw, все работает, но только лишь я сворачиваю окно, так сразу выскакивает Automation Error. Пытаюсь не прорисовывать, когда WindowState=Minimized, но ошибка появляется в любом случае, когда я разворачиваю окно обратно.
0
|
|
| 11.09.2011, 14:50 | |
|
Ответы с готовыми решениями:
8
При создании дистрибутива приложения (написанного на VB) возникает ошибка: - Unexpected error number 80010108 has occurred : Automation error. Runtime Error 5 при вызове BltFast (DirectDraw) [WPF] Зависает при сворачивании окна |
|
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
|
|
| 12.09.2011, 19:23 | |
|
Я не уверен, но мне кажется, что после разворачивания окна надо перегрузить Primary Surface, т.е. создать его заново.
Может и не прав, давно дело было. И еще, сколько потоков у тебя в программе ? Если их несколько, которые параллельно готовят картинку к прорисовке, то скорее всего проблема в синхронизации. Т.е. основной поток может определить или окно свернуто/развернуто, а вот побочные об этом ничего не знают и продолжают работу (у меня такое было), в этом случае 100% будет ошибка.
0
|
|
|
3 / 3 / 0
Регистрация: 02.01.2011
Сообщений: 149
|
||||||
| 14.09.2011, 20:51 [ТС] | ||||||
|
Незнаю. Дописал такой код:
0
|
||||||
|
3 / 3 / 0
Регистрация: 02.01.2011
Сообщений: 149
|
|
| 17.09.2011, 11:17 [ТС] | |
|
Вроде немного разобрался. Когда окно разворачивается, я пересоздаю объект DirectDraw, Primary и Back поверхности. Да. Ошибку уже не выдает, но у меня теперь черный экран.
0
|
|
|
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
|
|
| 17.09.2011, 11:50 | |
|
А каким образом ты рисуешь на back поверхности и сколько их у тебя?
Поскольку ты создаешь back заново, то тебе надо подготовить его заново (перерисовать заново).
0
|
|
|
3 / 3 / 0
Регистрация: 02.01.2011
Сообщений: 149
|
|
| 17.09.2011, 12:16 [ТС] | |
|
У меня есть специальная процедура, которая рисует на заднюю поверхность, с поверхностей, на которых хранятся изображения.
DDS1 as DirectDrawSurface7 А с нее уже в процедуре рисования, перерисовывается на задний буффе, а снего уже делается Flip на передний.
0
|
|
|
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
|
|
| 17.09.2011, 12:27 | |
|
Проверь, что у тебя с этими поверхностями, на которых ты хранишь изображения, очень может быть, что после создания новых передней и задней поверхности на них не остается изображений.
(Я не спец по DirectDraw, поэтому мои советы только предположения.) Проверь каким образом ты создаешь эти дополнительные поверхности и каким образом они связаны с передними, может надо делать Detach(Attach) пред удалением primary и созданием его заново ?
0
|
|
|
3 / 3 / 0
Регистрация: 02.01.2011
Сообщений: 149
|
||||||||||||||||
| 17.09.2011, 12:59 [ТС] | ||||||||||||||||
|
Поверхности на которых я храню изображения объявляю так:
А прорисовываю я из них методом BltFast (0,0,DDS1,RECT,DDBLTFAST_SRCCOLORKEY Or DDBLTFAST_WAIT) Вроде все как должно быть. Оно все прекрасно работает до тех пор, пока я не сверну окно. У меня такие подозрения что он очищает эти поверхности при пересоздании DX. Но как этого избежать, т.к. подгружать все заново при каждом разворачивании окна - очень долго. Да самое что удивительное, что эти поверхности никак не связаны с Primary и Back. Деактивацию DX, я провожу тоже по учениям Antiloop
0
|
||||||||||||||||
|
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
|
|
| 17.09.2011, 13:59 | |
|
Цитата из Antiloop:
Потеря поверхностей По многим причинам память, отведенная объектам DirectDrawSurface может быть освобождена без участия программы. Это может происходить, если изменился режим экрана, или другое приложение получило эксклюзивный доступ к видеокарте и очистило всю память, выделенную предыдущим приложениям. Такая непредусмотренная очистка памяти называется потерей поверхности. Когда происходит потеря поверхности, многие методы заместо работы выдают код ошибки DDERR_SURFACELOST. Метод IDirectDrawSurface7::Restore (DirectDrawSurface7.Restore) может пересоздать эти потерянные поверхности повторно соединяет их с объектом DirectDraw. При восстановлении поверхности не происходит перезагрузка графических изображений, так что, если вы потеряли поверхность, а затем восстановили ее, вы должны перезагрузить всю графику, которая была в памяти. Освобождение поверхностей После того, как вы больше не нуждаетесь в поверхности, например при завершении программы, вы должны освободить память, занимаемую поверхностью с помощью метода Release. Если вы создавали комплексную поверхность одним вызовом метода CreateSurface, например flipping chain, вы можете освободить только переднюю поверхность. После этого, вы не можете больше использовать другие компоненты цепи флиппинга - задний буфер и т. д. (Для инфо о flipping chain см. Создание поверхностей)
0
|
|
| 17.09.2011, 13:59 | |
|
Помогаю со студенческими работами здесь
9
Исчезание символа при сворачивании/разворачивании окна При сворачивании окна программа перестает работать Текст на PictureBox стирается при сворачивании-разворачивании окна
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|