Запустите окно MFC внутри обернутой DLL - PullRequest
0 голосов
/ 06 октября 2018

Я пытаюсь подключить приложение и запустить его в моем новом окне MFC.DLL (Wrapper) работает очень хорошо, но у меня проблема с MFC ... Полный код MFC находится внутри "AST" - оболочки.Основной объект приложения создан, но окно MFC для этого не открылось.У меня есть контрольные точки (окна сообщений), и благодаря этому я знаю, где остановка кода, этот момент находится внутри InitInstance, в CCommandLineInfo -> ParseCommandLine и ProcessShellCommand.Я не знаю почему, но в этот момент AST замерзли, и я ничего не могу сделать.

BOOL CwelibApp::InitInstance(){
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);

InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);

CWinAppEx::InitInstance();

// Initialize OLE libraries
if (!AfxOleInit())
{
    AfxMessageBox(IDP_OLE_INIT_FAILED);
    return FALSE;
}

AfxEnableControlContainer();
EnableTaskbarInteraction(FALSE);

// Place all significant initialization in InitInstance
SetRegistryKey(_T("Local AppWizard-Generated Applications"));
LoadStdProfileSettings(4);  // Load standard INI file options (including MRU)


InitContextMenuManager();
InitKeyboardManager();
InitTooltipManager();

CMFCToolTipInfo ttParams;
ttParams.m_bVislManagerTheme = TRUE;
weApplication.GetTooltipManager()->SetTooltipParams(AFX_TOOLTIP_TYPE_ALL,
    RUNTIME_CLASS(CMFCToolTipCtrl), &ttParams);

CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
    IDR_MAINFRAME,
    RUNTIME_CLASS(CMFCApplication2Doc),
    RUNTIME_CLASS(CMainFrame),       // main SDI frame window
    RUNTIME_CLASS(CMFCApplication2View));

if (!pDocTemplate)
    return FALSE;

Say::Box("Init MFC #1");

AddDocTemplate(pDocTemplate);

if(m_hInstance)
    Say::Box("m_hInstance");
Say::Box("Init MFC #2");

CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);  //Freeze...
Say::Box("Init MFC #3");

if (!ProcessShellCommand(cmdInfo))
    return FALSE;

Say::Box("Init MFC #4");

m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();

Say::Box("Init MFC #5");
return TRUE;};

Где проблема?Как я могу открыть приложение MFC внутри DLL, используя CFrameWndEx, CWinAppEx?
У меня есть «Использовать FMC в статической библиотеке» в настройках проекта по умолчанию.

...