X-Git-Url: https://sfsrealm.hopto.org/projects/?a=blobdiff_plain;f=FixIcon.bas;h=7ad253cad4f0627c572328caba2bdf91fa83a524;hb=b31da37a8a560cc8d45995df4ab53ccda2ccf99e;hp=d9c3660f07fe19a9d7f9a3db77cfa6af7250e2a2;hpb=db62770c7e8870dae4b4553ef202e706d9fa5161;p=WinMPQ.git diff --git a/FixIcon.bas b/FixIcon.bas index d9c3660..7ad253c 100644 --- a/FixIcon.bas +++ b/FixIcon.bas @@ -1,42 +1,42 @@ -Attribute VB_Name = "FixWindowIcon" -Option Explicit - -Private Const WM_SETICON = &H80 -Private Const ICON_SMALL = 0 -Private Const IMAGE_ICON = 1 -Private Const LR_DEFAULTSIZE = &H40 - -Private Declare Function GetModuleHandle Lib "Kernel32.dll" _ - Alias "GetModuleHandleA" _ - (ByRef lpModuleName As Any) As Long -Private Declare Function LoadImage Lib "User32.dll" _ - Alias "LoadImageA" ( _ - ByVal hinst As Long, _ - ByRef lpszName As Any, _ - ByVal uType As Long, _ - ByVal cxDesired As Long, _ - ByVal cyDesired As Long, _ - ByVal fuLoad As Long) As Long -Private Declare Function SendMessageA Lib _ - "User32.dll" _ - (ByVal hWnd As Long, _ - ByVal Msg As Long, _ - ByVal Wp As Long, _ - Lp As Any) As Long - -Sub FixIcon(hWnd As Long, lpszName) -Dim hModule As Long, hIcon As Long, szName As String, nName As Long, Width As Long, Height As Long -hModule = GetModuleHandle(ByVal 0&) -If hModule = 0 Then Exit Sub -Width = Abs(GetReg("HKEY_USERS\.Default\Control Panel\Desktop\WindowMetrics\CaptionWidth", -270)) / Screen.TwipsPerPixelX - 2 -Height = Abs(GetReg("HKEY_USERS\.Default\Control Panel\Desktop\WindowMetrics\CaptionHeight", -270)) / Screen.TwipsPerPixelY - 2 -If VarType(lpszName) = vbString Then - szName = lpszName - hIcon = LoadImage(hModule, szName, IMAGE_ICON, Width, Height, LR_DEFAULTSIZE) -ElseIf VarType(lpszName) = vbByte Or VarType(lpszName) = vbInteger Or VarType(lpszName) = vbLong Then - nName = lpszName - hIcon = LoadImage(hModule, ByVal nName, IMAGE_ICON, Width, Height, LR_DEFAULTSIZE) -End If -If hIcon = 0 Then Exit Sub -SendMessageA hWnd, WM_SETICON, ICON_SMALL, ByVal hIcon -End Sub +Attribute VB_Name = "FixWindowIcon" +Option Explicit + +Private Const WM_SETICON = &H80 +Private Const ICON_SMALL = 0 +Private Const IMAGE_ICON = 1 +Private Const LR_DEFAULTSIZE = &H40 + +Private Declare Function GetModuleHandle Lib "Kernel32.dll" _ + Alias "GetModuleHandleA" _ + (ByRef lpModuleName As Any) As Long +Private Declare Function LoadImage Lib "User32.dll" _ + Alias "LoadImageA" ( _ + ByVal hinst As Long, _ + ByRef lpszName As Any, _ + ByVal uType As Long, _ + ByVal cxDesired As Long, _ + ByVal cyDesired As Long, _ + ByVal fuLoad As Long) As Long +Private Declare Function SendMessageA Lib _ + "User32.dll" _ + (ByVal hWnd As Long, _ + ByVal Msg As Long, _ + ByVal Wp As Long, _ + Lp As Any) As Long + +Sub FixIcon(hWnd As Long, lpszName) +Dim hModule As Long, hIcon As Long, szName As String, nName As Long, Width As Long, Height As Long +hModule = GetModuleHandle(ByVal 0&) +If hModule = 0 Then Exit Sub +Width = Abs(GetReg("HKEY_USERS\.Default\Control Panel\Desktop\WindowMetrics\CaptionWidth", -270)) / Screen.TwipsPerPixelX - 2 +Height = Abs(GetReg("HKEY_USERS\.Default\Control Panel\Desktop\WindowMetrics\CaptionHeight", -270)) / Screen.TwipsPerPixelY - 2 +If VarType(lpszName) = vbString Then + szName = lpszName + hIcon = LoadImage(hModule, szName, IMAGE_ICON, Width, Height, LR_DEFAULTSIZE) +ElseIf VarType(lpszName) = vbByte Or VarType(lpszName) = vbInteger Or VarType(lpszName) = vbLong Then + nName = lpszName + hIcon = LoadImage(hModule, ByVal nName, IMAGE_ICON, Width, Height, LR_DEFAULTSIZE) +End If +If hIcon = 0 Then Exit Sub +SendMessageA hWnd, WM_SETICON, ICON_SMALL, ByVal hIcon +End Sub