void CButtonST::SetIcon(int nIconInId, int nIconOutId)
{
HINSTANCE hInstResource = AfxFindResourceHandle(MAKEINTRESOURCE(nIconInId),
RT_GROUP_ICON);
m_hIconIn = (HICON)::LoadImage(hInstResource, MAKEINTRESOURCE(nIconInId), IMAGE_ICON, 0, 0, 0);
m_hIconOut = (nIconOutId == NULL) ? m_hIconIn : (HICON)::LoadImage(hInstResource, MAKEINTRESOURCE(nIconOutId), IMAGE_ICON, 0, 0, 0);
RedrawWindow();
}如上函数如果连续多次调用,如在ontimer中,就会让程序当掉,我猜是句柄释放的问题。大侠们,请问怎么处理呢。调用时要注意什么
{
HINSTANCE hInstResource = AfxFindResourceHandle(MAKEINTRESOURCE(nIconInId),
RT_GROUP_ICON);
m_hIconIn = (HICON)::LoadImage(hInstResource, MAKEINTRESOURCE(nIconInId), IMAGE_ICON, 0, 0, 0);
m_hIconOut = (nIconOutId == NULL) ? m_hIconIn : (HICON)::LoadImage(hInstResource, MAKEINTRESOURCE(nIconOutId), IMAGE_ICON, 0, 0, 0);
RedrawWindow();
}如上函数如果连续多次调用,如在ontimer中,就会让程序当掉,我猜是句柄释放的问题。大侠们,请问怎么处理呢。调用时要注意什么
m_hIconOut = (nIconOutId == NULL) ? m_hIconIn : (HICON)::LoadImage(hInstResource, MAKEINTRESOURCE(nIconOutId), IMAGE_ICON, 0, 0, 0);
==这两个句柄不要在这个函数中调用。直接写在对话框的初始化函数中就行了。
或者在这个函数最前面判断这两个句柄是否为空,不为空就DeleteObject(m_hIconIn);DeleteObject(m_hIconOut);
但是问题还依然存在。我前一个贴子的第二段代码已经搞掂了。
就这段的问题还依旧