У меня есть приложение для Windows, разработанное в VC++. Я использую CFileDialog для отображения диалогового окна. Однако в тот момент, когда я щелкнул правой кнопкой мыши по диалоговому окну, он сработает. Тот же код отлично работает в XP. Я прочитал некоторые, где Vista Style больше не поддерживается. Поэтому я изменил код следующим образом. Тем не менее я получаю аварииДиалоговая ошибка в Win7
CFileDialog dlg(FALSE, _T("*.xml"),strFileName ,OFN_HIDEREADONLY,
_T("(*.xml)|*.xml|(*.*)|*.*||"), NULL, 0,FALSE);
if (IDOK == dlg.DoModal()) //crash here on right click
{
//CString folder = dlg.GetFolderPath();
strFileName = dlg.GetPathName();
SetFileName (T2CW (strFileName));
}
Ниже приведен трассировки стека
OLE32! CServerContextActivator :: CreateInstance + 245 ole32! ActivationPropertiesIn :: DelegateCreateInstance + 5e ole32! CApartmentActivator :: CreateInstance + 88 ole32! CProcessActivator :: CCICallback + 4e ole32! CProcessActivator :: AttemptActivation + 33 ole32! CProcessActivator :: ActivateByContext + 7е ole32! CProcessActivator :: CreateInstance + 77 ole32! ActivationPropertiesIn :: DelegateCreateInstance + 5e ole32! CClientContextActivator :: CreateInstance + ЕВ ole32! ActivationPropertiesIn :: DelegateCreateInstance + 5e ole32! ICoCreateInstanceEx + 5f5 ole32! CoCreateInstance + 17b shell32! _SHCoCreateInstance + 209 shell32! SHExtCoCreateInstance + 28 shell32! DCA_SHExtCoCreateInstance + 3d shell32 ! HDXA_QueryContextMenu + 287 shell32! CDefFolderMenu :: QueryContextMenu + 625 shell32! CContextMenuOnContextMenuArray :: _ QueryNthContextMenu Shell32! CContextMenuOnContextMenuArray :: QueryContextMenu + b0 shell32! CDefView :: _ DoContextMenuPopup + 19дн shell32! CDefView :: OnBackgroundContextMenu + 2D1 Shell32 ! CListViewHost :: ShowContextMenu + 1F1 shell32! CDefView :: _ OnContextMenu + 110 shell32! CDefView :: WndProc + 889 shell32! CDefView :: s_WndProc + 7с user32! UserCallWinProcCheckWow + 1AD user32! CallWindowProcAorW + DC user32! CallWindowProcW +18 comctl32_7fefbdd0000! CallOriginalWndProc + 1д comctl32_7fefbdd0000! CallNextSubclassProc + 8в comctl32_7fefbdd0000! DefSubclassProc + 7с shell32! DefSubclassProc + 56 shell32! CListViewHost :: _ ViewSubclassWndProc + 3E1 shell32! CListViewHost :: s_ViewSubclassWndProc + 4f comctl32_7fefbdd0000! CallNextSubclassProc + 8в comctl32_7fefbdd0000! MasterSubc lassProc + e7 user32! UserCallWinProcCheckWow + 1AD user32! DispatchClientMessage + c3 user32! _fnDWORD + 2d Ntdll! KiUserCallbackDispatcherContinue user32! ZwUserMessageCall + а user32! RealDefWindowProcWorker + a user32! RealDefWindowProcW + 5a UxTheme! DoMsgDefault + 2a UxTheme! OnDwpContextMenu + эф UxTheme! _ThemeDefWindowProc + 209 UxTheme! ThemeDefWindowProcW + 11 user32! DefWindowProcW + e6 comctl32_7fefbdd0000! CListView :: WndProc + 2А42 comctl32_7fefbdd0000! CListView :: s_WndProc + 6cd user32! UserCallWinProcCheckWow + 1AD user32! CallWindowProcAorW + DC user32! CallWindowProcW + 18 comctl32_7fefbdd0000! CallOriginalWndProc + 1d comctl32_7fefbdd0000! CallNextSubclassProc + 8c comctl32_7fefbdd0000! DefSubclassProc + 7с shell32! DefSubclassProc + 56 shell32! CListViewHost :: s_ListViewSubclassWndProc + 31e comctl32_7fefbdd0000! CallNextSubclassProc + 8c comctl32_7fefbdd0000!MasterSubclassProc + e7 user32! UserCallWinProcCheckWow + 1AD user32! SendMessageWorker + 682 user32! SendMessageW + 5в comctl32_7fefbdd0000! CLVMouseManager :: HandleMouse + 8с comctl32_7fefbdd0000! CListView :: WndProc + 9dc comctl32_7fefbdd0000! CListView :: s_WndProc + 6cd user32 ! UserCallWinProcCheckWow + 1AD user32! CallWindowProcAorW + DC user32! CallWindowProcW + 18 comctl32_7fefbdd0000! CallOriginalWndProc + 1d comctl32_7fefbdd0000! CallNextSubclassProc + 8c comctl32_7fefbdd0000! DefSubclassProc + 7с shell32! DefSubclassProc + 56 shell32! CListViewHost :: s_ListViewSubclassWndProc + 31e comctl32_7fefbdd0000! CallNextSubclassProc + 8в comctl32_7fefbdd0000! MasterSubclassProc + e7 user32! UserCallWinProcCheckWow + 1AD user32! DispatchMessageWorker + 3B5 user32! IsDialogMessageW + 153 user32! DialogBox2 + 197 user32! InternalDialogBox + 135 user32! DialogBoxIndirectParamAorW + 58 user32 ! DialogBoxIndirectParamW + 18 comdlg32! CFileOpenSave :: Показать + 1AF comdlg32! _InvokeNewFileOpenSave + дб comdlg32! CSTADialog :: s_DialogThreadProc + 2d shlwapi! WrapperThreadProc + 19b kernel32! BaseThreadInitThunk + d Ntdll! RtlUserThreadStart + 1д
Вы имеете в виду щелчок правой кнопкой мыши на файле, указанном в списке файлов, или просто случайном щелчке правой кнопкой мыши в пользовательском интерфейсе диалога? –
Когда я нажимаю правой кнопкой мыши, чтобы создать новую папку –
Этот код отлично работает в моей среде. Возможно, у вас есть Explorer Explorer, который вызывает Crash. Посмотрите на стек вызовов в отладчике. Кто вызывает крах? – xMRi