Почему иногда происходит сбой приложения при получении Icon из файла?

У меня есть функции для загрузки и получения Icon из файлов следующим образом:

std::map<wstring, HICON> m_map_icons;

void WindowSysTray::_loadIconFromFiles()
{
...
for (int i = 0; i < 3; ++i) {
wstring temp = path + trayList[i];
HICON hIcon = NULL;
Gdiplus::Bitmap bitmap(temp.c_str(), false);
bitmap.GetHICON(&hIcon);
pair<wstring, HICON> _pair = make_pair(trayList[i], hIcon);
m_map_icons.insert(_pair);
}
}

HICON WindowSysTray::getIconFromFile(const wchar_t* iconPath)
{
auto iter = m_map_icons.find(wstring(iconPath));
if (iter == m_map_icons.end()) {
return NULL;
}
else {
return iter->second; // ---Issue here---
}
}

...
hIcon = getIconFromFile(L"tray.png");
if (hIcon)
{
TrayIcon.SetIcon(hIcon);
}
...

Когда я призываю getIconFromFile функция, иногда происходит сбой при возврате значения в конце функции:

вернуть iter-> second;

Я проверил и убедился, что загрузил Icon раньше, вызвав _loadIconFromFiles функция.

Кто-нибудь знает, какова возможная первопричина этой проблемы?

-2

Решение

m_map_icons.find() может пойти не так Это может быть в случае, если m_map_icons пустой. Вы можете начать WindowSysTray::getIconFromFile с чеком:
if (m_map_icons.size() == 0) return 0;

0

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

Других решений пока нет …

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