Здравствуйте, TatarDozor, Вы писали:
TD>Существует MDI приложение, необходимо запустить копию фрейма основного фрейма приложения в отдельном потоке, по сути получается что надо запустить копию приложения из самого приложения в отдельном потоке. Каким образом я это попытался сделать: завел два новых класса
TD>TD>class CPreviewFrame : public CMDIFrameWnd - класс копия основного фрейма,
TD>class CPreviewApp : public CWinThread - наследник от CWinThread чтобы можно было в потоке манипулировать графикой
TD>
TD>и в обработчике запускаю поток следующим образом
TD>TD>CWinThread *p = AfxBeginThread(RUNTIME_CLASS(CPreviewApp),THREAD_PRIORITY_NORMAL);
TD>
TD>Программа ругается, а затем падает на функции LoadFrame(IDR_PREVIEWFRAME) с помощью которой я создаю фрейм. В чем может быть дело?
TD>Класс самого приложения CWinApp, проблема была бы исчерпана если бы можно было завести в приложении еще один экземпляр класса CWinApp, но как известно MFC этого не позволяет.
TD>Что я не так делаю?
Я такое делал, все хорошо работает.
Правда у меня в потоках создавались окна одинакового класса. Создаются по команде типа "Открыть в новом окне".
CWinApp тебе не нужен, цикл прокачки сообщений со всеми idle и т.п. есть в CWinThread.
В MFC есть мутный код при создании окна рамки (что-то там с поддержкой старых версий, дефаултных меню и др.).
Если не путаю, то надо перекрыть OnCreateClient для CMDIFrameWnd, чтобы это безобразие не вызывалось.