Как отцентровать CFileDialog
От: Dakota  
Дата: 10.05.06 23:22
Оценка:
Наверняка это уже решено, но перерыл все вверх дном но проблема так и не решилась — надо отцентровать диалог CFileDialog по центру родительского окна. Наследую свой класс на базе CFileDialog.
Вот такой вариант не проходит:

LRESULT CmyFileDialog::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
    {
      CenterWindow(GetParent());
      return 1;
    }

CenterWindow отрабатывает, но диалог все равно выводится там, где выводился перед этим или в левом верхнем углу родительского окна, если впервые....
пробовал переопределить OnInitDone вот так:


void OnInitDone(LPOFNOTIFY lpon)
    {
       CWindow(lpon->hdr.hwndFrom).CenterWindow();
    }

она вообще почему-то не вызывается...

Подскажите, ткните носом — что ему надо подкрутить?
Re: Как отцентровать CFileDialog
От: Dakota  
Дата: 12.05.06 08:14
Оценка:
Да, забыл уточнить — использую WTL7.1
Re[2]: Как отцентровать CFileDialog
От: TarasKo Голландия  
Дата: 12.05.06 23:02
Оценка: 2 (1)
Здравствуйте, Dakota, Вы писали:

D>Да, забыл уточнить — использую WTL7.1


OnInitDialog вообще не нужна.
Что бы вызывалась OnInitDone необходимо отнаследовать класс не от CFileDialog а от CFileDialogImpl<CmyFileDialog>.
Re[3]: Как отцентровать CFileDialog
От: Dakota  
Дата: 15.05.06 09:11
Оценка:
Здравствуйте, TarasKo, Вы писали:

TK>Здравствуйте, Dakota, Вы писали:


D>>Да, забыл уточнить — использую WTL7.1


TK>OnInitDialog вообще не нужна.

TK>Что бы вызывалась OnInitDone необходимо отнаследовать класс не от CFileDialog а от CFileDialogImpl<CmyFileDialog>.

Спасибо! Заработало! Но с одним небольшим ньюансом: диалог центруется только при первом вызове. При посторном вызове он выводится в то положение, в котором он находился, когда его закрывали перед этим, несмотря на то, что OnInitDone отрабатывает — каким-то образом он запоминает свое местоположение...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.