Bug 4270

Summary: Не отображается предварительный просмотр документов в диалоге открытия
Product: [Поддержка проектов] КОМПАС 3D Reporter: Виталий Булгаков <bulgakov>
Component: ТестированиеAssignee: Илья Шпигорь <shpigor>
Status: CLOSED FIXED QA Contact: Денис Баранов <baraka>
Severity: major    
Priority: P4 CC: baraka, lav, mais, mx
Version: v10   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 753    

Description Виталий Булгаков 2009-09-02 17:51:20 MSD
Wine@Etersoft 1.0 CAD 1.1.0-eter5/4
1. Запустить КОМПАС
2. Файл - Открыть
3. В диалоге Выберите файлы для открытия перейти в папку /KOMPAS-3D.../Samples/Drawings
4. Селектировать любой документ
Ожидаемый результат: слева в окошке отображается предварительный просмотр документа
Фактический: не отображается. Иногда промаргивает, но снова заливается серым фоном
Comment 1 Vitaly Lipatov 2009-09-02 22:20:55 MSD
Вариант исходников 2005 года для файловых диалогов:
wine-etersoft-devel/stricted/KOMPAS/FileDialog
Comment 2 Vitaly Lipatov 2009-09-02 22:26:57 MSD
Мы когда-то исправляли эту проблему для старых версий КОМПАС, но она проявляется опять.

Возможно есть связь с # 827?
Comment 3 Илья Шпигорь 2009-09-16 12:30:06 MSD
Выложил патч.

Контрол предварительного просмотра - это обычный Static. Ошибка в лишней перерисовки, которая возникает при обработке сообщения STM_SETIMAGE этим контролом.

Компас пытается установить новый курсор и посылает STM_SETIMAGE с wParam = IMAGE_CURSOR. Но согласно MSDN если тип контрола не соответствует типу картинки - сообщение должно игнорироваться:

http://msdn.microsoft.com/en-us/library/bb760782%28VS.85%29.aspx

В данном случае картинка имеет тип IMAGE_CURSOR, а контрол SS_LEFT.

Решение заключается в добавлении необходимых проверок в обработку сообщения STM_SETIMAGE.
Comment 4 Илья Шпигорь 2009-09-21 12:00:45 MSD
В патче есть небольшая недоработка.
Проверка на стиль контрола уже есть в функциях STATIC_SetIcon, STATIC_SetBitmap и STATIC_SetEnhMetaFile. Необходимо решение исключающее лишние, дублирующие проверки.
Comment 5 Илья Шпигорь 2009-09-21 13:57:19 MSD
Выложил патч [TRY2].

Теперь проверка на соответсвие типа static контрола и картинки происходит только в STATIC_Set* функциях, как и раньше. В случае несоответствия типов, эти функции возвращают значение -1. Перед перерисовкой контрола это значение проверяется и если оно равно -1 - перерисовки не происходит.
Comment 6 Денис Баранов 2010-12-03 19:10:25 MSK
Отображается.
WINE@Etersoft CAD 1.1.0 eter9/eter5
Принято.