TOP>Пробовал, во-первых, параметр m_pszAppID пустой, а во-вторых winver не определяется. Может есть какая-то функция для Windows 8 и старше для добавления в список или есть какой-то способ, подскажите пожалуйста!!!
Скорее всего стоит старый СДК (или как он там называется сейчас)
Видимо структура поменялась для новых версий винды, а заголовки и либ файлы старые, вот и падает.
Добрый вечер всем. У меня возник такой неприятный момент в проекте с использованием MFC. Имеется класс, наследник от CWinApp. Имеется переопределенный метод AddToRecentFileList примерно такой:
на Windows 7 все работает нормально, но на Windows 8 и старше на строчке Add падает с ошибкой "access violation". Сейчас скажите, что нужно писать что-то типо того:
Пробовал, во-первых, параметр m_pszAppID пустой, а во-вторых winver не определяется. Может есть какая-то функция для Windows 8 и старше для добавления в список или есть какой-то способ, подскажите пожалуйста!!!
Здравствуйте, TOPAZ23, Вы писали:
TOP>Добрый вечер всем. У меня возник такой неприятный момент в проекте с использованием MFC. Имеется класс, наследник от CWinApp. Имеется переопределенный метод AddToRecentFileList примерно такой: TOP>
TOP>на Windows 7 все работает нормально, но на Windows 8 и старше на строчке Add падает с ошибкой "access violation". Сейчас скажите, что нужно писать что-то типо того: TOP>
TOP>Пробовал, во-первых, параметр m_pszAppID пустой, а во-вторых winver не определяется. Может есть какая-то функция для Windows 8 и старше для добавления в список или есть какой-то способ, подскажите пожалуйста!!!
Здравствуйте, SаNNy, Вы писали:
SNN>Здравствуйте, TOPAZ23, Вы писали:
TOP>>Добрый вечер всем. У меня возник такой неприятный момент в проекте с использованием MFC. Имеется класс, наследник от CWinApp. Имеется переопределенный метод AddToRecentFileList примерно такой: TOP>>
TOP>>на Windows 7 все работает нормально, но на Windows 8 и старше на строчке Add падает с ошибкой "access violation". Сейчас скажите, что нужно писать что-то типо того: TOP>>
TOP>>Пробовал, во-первых, параметр m_pszAppID пустой, а во-вторых winver не определяется. Может есть какая-то функция для Windows 8 и старше для добавления в список или есть какой-то способ, подскажите пожалуйста!!!
SNN>Версию Windows надо определять с помощью IsWindows8OrGreater
Спасибо конечно,но версию я могу определять и другими способами,тут вопросов нет, меня больше интересует что делать с функцией Add,если она валится, а m_pszAppID = "". Я не знаю нормальное это значение или нет. Повторюсь,меня интересует в большей степени функция Add для Windows 8 и старше.
Здравствуйте, TOPAZ23, Вы писали:
TOP>Спасибо конечно,но версию я могу определять и другими способами,тут вопросов нет, меня больше интересует что делать с функцией Add,если она валится, а m_pszAppID = "". Я не знаю нормальное это значение или нет. Повторюсь,меня интересует в большей степени функция Add для Windows 8 и старше.
Так исходники MFC открыты, посмотрите внутри, где падает
Собственно реализация CRecentFileList лежит тут c:\Program Files (x86)\Microsoft Visual Studio XXX\VC\atlmfc\src\mfc\filelist.cpp
TOP>...меня больше интересует что делать с функцией Add,если она валится, а m_pszAppID = "". Я не знаю нормальное это значение или нет. Повторюсь,меня интересует в большей степени функция Add для Windows 8 и старше.
Какая версия студии?
У меня в 2013 сгенерирован код:
CMFCApplication1App::CMFCApplication1App()
{
...
// TODO: replace application ID string below with unique ID string; recommended
// format for string is CompanyName.ProductName.SubProduct.VersionInformation
SetAppID(_T("MFCApplication1.AppID.NoVersion"));
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
Если этого вызова нет, void CWinApp::SetCurrentHandles() (в appinit.cpp) пытается загрузить эту строку из ресурсов:
if (AfxLoadString(AFX_IDS_APP_ID, szAppID) != 0)
...
В любом случае, эта строка передаётся в void CRecentFileList::Add(IShellItem* pItem, LPCTSTR lpszAppID) (в filelist.cpp как сказал SаNNy выше), где она напрямую НЕ использутся, а передаётся в SHAddToRecentDocs(), куда я не смог step into...