Здравствуйте, 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
Здравствуйте, Iterator, Вы писали:
I>Здравствуйте, e-smirnov, Вы писали:
ES>>Я читал что-то подобное, только тма написано, статику (или групбоксу) надо задавать stc32 (=0x045f), а не str32.
I>Да, я так и делал, просто опечатка. I>Не помните, где про это написано? Мне сам способ интересен.
Как можно реализовать просмотр изображения в стандартном диалоге открытия файла?
У меня такой способ:
0. наследую CImageDialog от CFileDialog
1. делаю свой шаблон диалога (пустой пока)
2. создаю на нем Static с именем str32
3. делаю SetTemplate для экземпляра класса CImageDialog
4. DoModal()
Проблема такая: в получившемся диалоге что-то не так с прорисовкой. Не перерисовываются некоторые элементы управления. (и проц грузится на 100%).
Все в VC++ .NET
Честно говоря, я слабо понимаю, как это все происходит, поэтому не могу исправить ошибку. Где можно что-нибудь почитать про этот str32?
Здравствуйте, 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
Здравствуйте, e-smirnov, Вы писали:
ES>Я читал что-то подобное, только тма написано, статику (или групбоксу) надо задавать stc32 (=0x045f), а не str32.
Да, я так и делал, просто опечатка.
Не помните, где про это написано? Мне сам способ интересен.
Re[4]: Просмотр изображения в наследнике CFileDialog
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()