首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MainFrame上动态加载图标

在MainFrame上动态加载图标
EN

Stack Overflow用户
提问于 2017-01-20 10:08:37
回答 1查看 424关注 0票数 0

当试图从旧的VB6应用程序动态加载主框架图标时,我遇到了问题。图标文件有两个图标16x16x256和32x32x256,我通过以下简单的方式来完成它:

代码语言:javascript
复制
Private Sub Form_OnLoad()
   Me.Icon = LoadPicture("C:\MainMyIcon.ico")
End Sub

在windows任务栏上,图标看起来很好,但是在主框架上,图标只显示了16种(或者更少)的颜色。

最有趣的是,如果我通过VB加载这个图标,图标看起来又光滑又漂亮。

LoadPicture有几个参数,3 3rht是ColorDepth。我尝试手动将它设置为vbLPColor,它应该是256种颜色,但结果是一样的。

然后,我试图通过LoadResPicture从参考资料中加载图标,但对我来说还是没有任何进展。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-28 21:26:35

如果您使用Windows,那么使用256种颜色的效果也很好:

代码语言:javascript
复制
Option Explicit

Private Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal dwImageType As Long, ByVal dwDesiredWidth As Long, ByVal dwDesiredHeight As Long, ByVal dwFlags As Long) As Long
Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Private Const LR_LOADFROMFILE = &H10
Private Const WM_SETICON = &H80
Private Const IMAGE_ICON = &H1
Private Const ICON_SMALL = &H0
Private Const ICON_BIG = &H1

Private Sub SetIconFromFile(ByVal hWnd As Long, FullFileName As String)
    Dim hIcon As Long
    hIcon = LoadImage(App.hInstance, FullFileName, IMAGE_ICON, 16, 16, LR_LOADFROMFILE)
    If hIcon = 0 Then Exit Sub
    SendMessageLong hWnd, WM_SETICON, ICON_BIG, hIcon
    SendMessageLong hWnd, WM_SETICON, ICON_SMALL, hIcon
End Sub

Private Sub Command1_Click()
    SetIconFromFile Me.hWnd, App.Path & "\" & "icon8bpp.ico"
End Sub

下面是一个图标的比较,它有256种颜色。Me.Icon在向16摇摆不定。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41760979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档