最近花了点业余时间用VB6写了个“定时关机器”
中间郁闷了几天,就是如何不载入外部ICO图标的情况下在标题栏和任务栏上添加32位图标的问题,众所周知,VB6不支持32位图标,只支持24位以下图标,但24位以下图标放置到标题栏和任务栏上很难看,百度找了很多使用32位图标都是需要载入外部图标。自己结合百度搜的结果摸索了一下,总算搞定了:
首先需要准备一个图标文件,其中包含32位和256色的32×32、24×24、16×16一共6个图标(也可以加入更大尺寸的图标),导入到Form1.Icon中,如果没有任何尺寸的256×××标将无法导入到Form1.Icon中。
主要代码 标题栏:(有个缺陷是ALT+TAB就露馅了,呵呵)
        ExtractIconEx Replace(App.Path & "\" & App.EXEName & ".exe", "\\", "\"), 0, 0, lHSmallIcon, 1 '提取图标句柄
        SendMessageLong hWnd, WM_SETICON, 0, lHSmallIcon '设置标题栏图标
主要代码 任务栏:
        With ni
                .cbSize = Len(ni)
                .hWnd = MyForm.hWnd
                .uID = vbNull
                .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
                .uCallbackMessage = WM_MOUSEMOVE
                .hIcon = lHSmallIcon
                .szTip = ToolTip & vbNullChar
        End With
        
        Call Shell_NotifyIcon(NIM_ADD, ni)
关闭窗口时记着销毁lHSmallIcon
DestroyIcon lHSmallIcon '消毁小图标句柄