提取QQ游戏图标并显示
2012-09-09 21:38
246 查看
SHGetFileInfo可用于提取应用程序的图标。
以下的按钮响应函数用于提取QQ游戏的应用程序图标并在MFC对话框的客户区显示:
注意:在通过SHGetFileInfo提取完ICON后,在不需要该ICON的时候要调用DestroyIcon释放资源。
以上通过指定SHGetFileInfo函数的最后一个参数为SHGFI_ICON | SHGFI_LARGEICON,加载的是32x32的大图标,若要加载小图标,则指定最后一个参数为SHGFI_ICON
| SHGFI_SMALLICON即可。
但是,若加载的是16x16的小图标,直接用DrawIcon函数会有问题,因为该函数绘制ICON时默认为32x32,对于ICON为16x16的小图标状况,该函数会将其拉伸到32x32绘制。
贴图如下,很显然,拉伸之后的效果很模糊。
要解决这个问题,使对于16x16的小图标按照其实际大小绘制,只需如下调用DrawIconEx即可:
以下的按钮响应函数用于提取QQ游戏的应用程序图标并在MFC对话框的客户区显示:
void CExtractAppIconDlg::OnBnClickedButton1() { // TODO: Add your control notification handler code here SHFILEINFO shfi; memset(&shfi, 0, sizeof(shfi)); SHGetFileInfo(TEXT("D:\\Application\\腾讯游戏\\QQGame\\QQGame.exe"), 0, &shfi, sizeof(shfi), SHGFI_ICON | SHGFI_LARGEICON); DrawIcon(::GetDC(this->GetSafeHwnd()), 0, 0, shfi.hIcon); DestroyIcon(shfi.hIcon); }
注意:在通过SHGetFileInfo提取完ICON后,在不需要该ICON的时候要调用DestroyIcon释放资源。
以上通过指定SHGetFileInfo函数的最后一个参数为SHGFI_ICON | SHGFI_LARGEICON,加载的是32x32的大图标,若要加载小图标,则指定最后一个参数为SHGFI_ICON
| SHGFI_SMALLICON即可。
但是,若加载的是16x16的小图标,直接用DrawIcon函数会有问题,因为该函数绘制ICON时默认为32x32,对于ICON为16x16的小图标状况,该函数会将其拉伸到32x32绘制。
贴图如下,很显然,拉伸之后的效果很模糊。
void CExtractAppIconDlg::OnBnClickedButton1() { // TODO: Add your control notification handler code here SHFILEINFO shfi; memset(&shfi, 0, sizeof(shfi)); SHGetFileInfo(TEXT("D:\\Application\\腾讯游戏\\QQGame\\QQGame.exe"), 0, &shfi, sizeof(shfi), SHGFI_ICON | SHGFI_SMALLICON); DrawIcon(::GetDC(this->GetSafeHwnd()), 0, 0, shfi.hIcon); DestroyIcon(shfi.hIcon); }
要解决这个问题,使对于16x16的小图标按照其实际大小绘制,只需如下调用DrawIconEx即可:
void CExtractAppIconDlg::OnBnClickedButton1() { // TODO: Add your control notification handler code here SHFILEINFO shfi; memset(&shfi, 0, sizeof(shfi)); SHGetFileInfo(TEXT("D:\\Application\\腾讯游戏\\QQGame\\QQGame.exe"), 0, &shfi, sizeof(shfi), SHGFI_ICON | SHGFI_SMALLICON); //DrawIcon(::GetDC(this->GetSafeHwnd()), 0, 0, shfi.hIcon); DrawIconEx(::GetDC(this->GetSafeHwnd()), 0, 0, shfi.hIcon, 0, 0, 0, NULL, DI_NORMAL | DI_COMPAT); DestroyIcon(shfi.hIcon); }
相关文章推荐
- 在状态栏上显示会闪烁的图标(类似qq消息提示)
- 实例8:状态栏中显示代表登陆状态的图标(实现仿QQ登陆状态显示)
- Win7系统中,如何设置QQ、酷狗等软件图标在电脑右下角显示?
- win10系统右下角登录微信和QQ时不显示图标怎么办?
- 可以显示QQ是否在线的图标
- Ubuntu 14.04 系统托盘图标 无法显示QQ 图标问题,RTX 托盘图标
- 如何实现桌面App图标可以动态显示消息数(类似手机上的QQ图标)?
- richTextBox如何实现输入指定的字符显示一个表情图标?类似QQ那样?
- 如何实现桌面App图标可以动态显示消息数(类似手机上的QQ图标)?
- 类似QQ消息提示的任务栏窗口图标的高亮显示方法
- qq图标显示在任务栏
- 友盟分享 QQ分享后,不显示左下角的小图标
- Win10右下角图标不显示怎么办?Win10任务栏QQ图标不见了解决办法介绍
- Win10任务栏QQ图标不见了如何将它显示出来
- 如何实现桌面App图标可以动态显示消息数(类似手机上的QQ图标)?
- flash实现点击QQ图标显示QQ对话框
- 【Android开发】经典范例2-仿QQ在状态栏显示登录状态的图标
- Silverlight 转换器应用一修改排充图标显示
- Android APP安装后不在桌面显示图标的应用场景举例和实现方法
- 提取bmp图片的颜色信息,可直接framebuffer显示(c版本与python版本)