QPixmap Win2QWidget::getIcon()
{
#ifdef _WIN64
HICON icon = (HICON)GetClassLong(m_WindowHandle, GCLP_HICON);
#elif _WIN32
HICON icon = (HICON)GetClassLong(m_WindowHandle, GCL_HICON);
#endif
if(icon)
{
// qDebug() << "icon SendMessage GCLP_HICON";
return QtWin::fromHICON(icon);
}
icon=(HICON)SendMessage(m_WindowHandle,WM_GETICON,ICON_BIG,0);
if(icon)
{
// qDebug() << "icon SendMessage";
return QtWin::fromHICON(icon);
}
#ifdef _WIN64
icon = (HICON)GetClassLong(m_WindowHandle,GCLP_HICONSM);
#elif _WIN32
icon = (HICON)GetClassLong(m_WindowHandle, GCL_HICONSM);
#endif
if(icon)
{
// qDebug() << "icon GetClassLong GCLP_HICONSM";
return QtWin::fromHICON(icon);
}
std::wstring exePath = ShowProcName(m_WindowHandle).toStdWString();
// LPCWSTR sl;
icon = ::ExtractIcon(GetModuleHandle(NULL),exePath.c_str(), 0);
// ExtractIconA(m_WindowHandle,str.c_str(), 0);
QPixmap iconPixmap;
if (icon)
{
iconPixmap = QtWin::fromHICON(icon);
}
else
{
qDebug()<<"Invalid icon in getIcon";
QIcon qicon(":/app.ico");
iconPixmap = qicon.pixmap(QSize(32,32));
}
return iconPixmap;
}
Windows窗口句柄和exe文件获取图标的方法
最新推荐文章于 2024-06-01 17:23:43 发布