Проблема с рисованием при выборе файла с использованием CFileDialog

Я столкнулся с проблемой, используя CFileDialog в моем коде.

Когда я звоню CFileDialog из ModalDialog, чтобы выбрать файл.
Весь мой фон ModalDialog удаляется после закрытия и повторного открытия текущего представления.

Процедура следовала:

  1. Главный диалог
  2. Открыт МодалДиалог
  3. открытый CFileDialog для выбора файла
  4. Выйти из ModalDialog
  5. Снова открыть ModalDialog [Фон стирается]

Замечания : Эта проблема возникает, только если я выбираю файл.
Если я нажму на Отмена в CFileDialog, Там нет проблемы.

PFB, фрагмент кода моего CFileDialog использовать:

//This is the code to Open the DoModal dialog from MainWindow
//
void CCommonDlg::OnBnClickedButton1()
{

COSDADlg dlg;
//m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{

}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
//  dismissed with Cancel
}

}

// This is the code for open CFileDialog from ModalDialog to save file
//
void COSDADlg::OnBnClickedButton1()
{

CFileDialog dlgFile(FALSE);

CString fileName;
dlgFile.GetOFN().lpstrFile = fileName.GetBuffer(FILE_LIST_BUFFER_SIZE);
dlgFile.GetOFN().nMaxFile = FILE_LIST_BUFFER_SIZE;INT_PTR nResult = dlgFile.DoModal();
fileName.ReleaseBuffer();

}

//This is the code to paint the background image for ModalDialog
//
void COSDADlg::OnPaint()
{
CPaintDC dc(this); // device context for painting

Graphics    graph(dc.m_hDC);
CRect rt;
GetWindowRect(&rt);
graph.DrawImage(m_pImage, (INT)0, (INT)0,  (INT)rt.Width() , (INT)rt.Height() );
DefWindowProc(WM_PAINT, (WPARAM)dc.m_hDC, (LPARAM)0);

}

2

Решение

Я нашел причину проблемы.

Когда мы сохраняем / выбираем файл с помощью CFileDialog, поведение по умолчанию — это изменение WorkingDirectory запущенного процесса.

Из-за этого фоновое изображение не может быть найдено в новом месте и, следовательно, фон стирается.

Чтобы этого не произошло, нам нужно использовать флаг OFN_NOCHANGEDIR в CFileDialog, который сохраняет рабочий каталог.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]