我试图钩住应用程序,并在新的MFC窗口中启动它。 DLL(包装器)工作得很好,但是我在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;};
哪里有问题?如何使用CFrameWndEx,CWinAppEx在DLL中打开MFC应用程序?
我在Project默认值中有“在静态库中使用FMC”。