|
3 / 3 / 0
Регистрация: 02.01.2011
Сообщений: 149
|
|
Automation Error при сворачивании окна с DirectDraw11.09.2011, 14:50. Показов 1775. Ответов 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 стирается при сворачивании-разворачивании окна
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|