Приложение MFC работает в Visual Studio, но вылетает при двойном нажатии

У меня есть приложение с графическим интерфейсом в MFC, По какой-то причине он прекрасно работает в режиме Visual Studio Release и Debug, но вылетает, если .exe запускается с двойным кликом.

Я не могу понять, где эта ошибка может быть, так как она прекрасно работает при размещении в Visual Studio. В отчаянии я отключил все процедуры оптимизации, но, похоже, это не помогло.

OS является Win 7,IDE является VS 2010,

Неисправный модуль ntdll.dllНо я сомневаюсь, что это реальная проблема …

РЕДАКТИРОВАТЬ —

Присоединение отладчика к сбою показывает проблему с LoadFrame()

BOOL CAAUserInterfaceDllConsumerApp::InitInstance()
{
// InitCommonControlsEx() is required on Windows XP if an application
// manifest specifies use of ComCtl32.dll version 6 or later to enable
// visual styles.  Otherwise, any window creation will fail.
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// Set this to include all the common control classes you want to use
// in your application.
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);

CWinAppEx::InitInstance();EnableTaskbarInteraction(FALSE);

// AfxInitRichEdit2() is required to use RichEdit control
// AfxInitRichEdit2();

// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need
// Change the registry key under which our settings are stored
// TODO: You should modify this string to be something appropriate
// such as the name of your company or organization
SetRegistryKey(_T("Local AppWizard-Generated Applications"));

DWORD isApprunning = 0;

m_hStartMutex = CreateSemaphore(NULL,
1,
1,
_T("Something"));

if (GetLastError() ==  ERROR_ALREADY_EXISTS)
{
// I dont want to start !
return FALSE;
}

InitContextMenuManager();

InitKeyboardManager();

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

// To create the main window, this code creates a new frame window
// object and then sets it as the application's main window object
CMainFrame* pFrame = new CMainFrame;
if (!pFrame)
return FALSE;
m_pMainWnd = pFrame;
// create and load the frame with its resources
pFrame->LoadFrame(IDR_MAINFRAME,
WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL,
NULL);
.//more stuff
}

Это вызывает:

BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext)
{
// base class does the real work

//if (!CFrameWndEx::LoadFrame(nIDResource, dwDefaultStyle, pParentWnd, pContext))
if (!CFrameWndEx::LoadFrame(nIDResource, dwDefaultStyle, pParentWnd, pContext))
{
return FALSE;
}

И вот где это терпит неудачу вне Visual Studio.

Исключение составляет: The activation context being deactivated is not the most recently activated one,

Я искал вокруг и попробовал следующее, т.е. установил все Exceptions бросить, чтобы поймать любое обработанное исключение, и установка afxAmbientActCtx в FALSE, но не повезло заставить его бежать. это exe раньше бегал просто отлично.

Добрый совет.

0

Решение

Задача ещё не решена.

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


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