Re: Просмотр изображения в наследнике CFileDialog
От: retalik www.airbandits.com/
Дата: 04.02.03 05:38
Оценка: 2 (1)
Здравствуйте, Iterator, Вы писали:

I>Проблема такая: в получившемся диалоге что-то не так с прорисовкой. Не перерисовываются некоторые элементы управления. (и проц грузится на 100%).

I>Все в VC++ .NET
Что интересно, столкнулся в свое время точно с такой же проблемой. После долгого стучания головой в стену родился довольно "оригинальный" способ (CAddFilesDlg порожден от CFileDialog):

BOOL CAddFilesDlg::OnInitDialog()
{
    CFileDialog::OnInitDialog();
    CWnd *parent=GetParent();
    // это просто указатель на CDialog с дополнительным ресурсом IDC_SPECIAL_FOLDER
    extension=new CDialog;
    extension->Create(IDD, parent);
    CRect rc, rcExt;
    parent->GetWindowRect(rc);
    extension->GetClientRect(rcExt);
    m_folders.SubclassWindow(extension->GetDlgItem(IDC_SPECIAL_FOLDER)->GetSafeHwnd());
    rcExt.OffsetRect(0, rc.Height()-rcExt.Height());
    extension->MoveWindow(rcExt);
    rc.bottom+=rcExt.Height();
    parent->MoveWindow(rc);
    return TRUE;  
}

То есть, создаем свой мини-диалог и пришлепываем его к паренту CFileDialog.
Можно обойтись и без создания промежуточного диалога.
В моем случае, IDC_SPECIAL_FOLDER — комбобокс. У тебя нужно создать статик.
Успехов,
Виталий.
Re[3]: Просмотр изображения в наследнике CFileDialog
От: e-smirnov  
Дата: 04.02.03 09:03
Оценка: 2 (1)
Здравствуйте, Iterator, Вы писали:

I>Здравствуйте, e-smirnov, Вы писали:


ES>>Я читал что-то подобное, только тма написано, статику (или групбоксу) надо задавать stc32 (=0x045f), а не str32.


I>Да, я так и делал, просто опечатка.

I>Не помните, где про это написано? Мне сам способ интересен.

Помню — проверял перед тем как Вам ответить
"Экзамен экстерном 70-016" из. Питер
http://www.rodina.by/book/info/go/77.html?PHPSESSID=3954b365b91babaeb38e131ed398a1a5

после обеда набью эту часть и пришлю
Re[3]: Просмотр изображения в наследнике CFileDialog
От: peterbes Россия  
Дата: 04.02.03 09:03
Оценка: 2 (1)
Здравствуйте, Iterator, Вы писали:


I>Да, я так и делал, просто опечатка.

I>Не помните, где про это написано? Мне сам способ интересен.

VC60 для разработчиков — Microsoft Press
Просмотр изображения в наследнике CFileDialog
От: Iterator  
Дата: 04.02.03 05:08
Оценка:
Как можно реализовать просмотр изображения в стандартном диалоге открытия файла?

У меня такой способ:

0. наследую CImageDialog от CFileDialog
1. делаю свой шаблон диалога (пустой пока)
2. создаю на нем Static с именем str32
3. делаю SetTemplate для экземпляра класса CImageDialog
4. DoModal()

Проблема такая: в получившемся диалоге что-то не так с прорисовкой. Не перерисовываются некоторые элементы управления. (и проц грузится на 100%).
Все в VC++ .NET

Честно говоря, я слабо понимаю, как это все происходит, поэтому не могу исправить ошибку. Где можно что-нибудь почитать про этот str32?
Re: Просмотр изображения в наследнике CFileDialog
От: e-smirnov  
Дата: 04.02.03 08:23
Оценка:
Здравствуйте, Iterator, Вы писали:

I>Как можно реализовать просмотр изображения в стандартном диалоге открытия файла?


I>У меня такой способ:


I>0. наследую CImageDialog от CFileDialog

I>1. делаю свой шаблон диалога (пустой пока)
I>2. создаю на нем Static с именем str32
I>3. делаю SetTemplate для экземпляра класса CImageDialog
I>4. DoModal()

I>Проблема такая: в получившемся диалоге что-то не так с прорисовкой. Не перерисовываются некоторые элементы управления. (и проц грузится на 100%).

I>Все в VC++ .NET

I>Честно говоря, я слабо понимаю, как это все происходит, поэтому не могу исправить ошибку. Где можно что-нибудь почитать про этот str32?


Я читал что-то подобное, только тма написано, статику (или групбоксу) надо задавать stc32 (=0x045f), а не str32.
Re[2]: Просмотр изображения в наследнике CFileDialog
От: Iterator  
Дата: 04.02.03 08:45
Оценка:
Здравствуйте, e-smirnov, Вы писали:

ES>Я читал что-то подобное, только тма написано, статику (или групбоксу) надо задавать stc32 (=0x045f), а не str32.


Да, я так и делал, просто опечатка.
Не помните, где про это написано? Мне сам способ интересен.
Re[4]: Просмотр изображения в наследнике CFileDialog
От: e-smirnov  
Дата: 04.02.03 17:35
Оценка:
1. создайте в ресурсах дилог со стилями child, border=none, clip sublings, visible
2. поместите статик с ID=stc32(=0x045f)
3. Создайти контролы (где не написано -видимо внутри sct32)
4. создайте на диалог класс производный от CDialog зарегистрируйте ddx/ddv
5. вручную замените CDialog на соответствующий класс стандартного диалога
6. замените имя конструктора + в нем замените CDialog на класс стандартного диалога
7. В реализации конструктора внесите изменения в структуру Windows
для этого как минимум необходимо добавить в переменную Flags флаг xx_EXNABLETEMPLATE
где xx — корректный префикс типа диалогового окна, записать в lpTemplateName
идентификатор ресурса, а в hInstance — AfxGetInstanceHandle()

вот
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.