Modify

Opened 3 years ago

Closed 3 years ago

#3907 closed Bug (Fixed)

#AutoIt3Wrapper_Res_File_Add not supporting UNC path for ICO file

Reported by: mychaelsoft Owned by: Jos
Milestone: Component: SciTE4AutoIt
Version: 3.3.16.0 Severity: None
Keywords: Cc:

Description

Thank you for this amazing community! I have been able to make #AutoIt3Wrapper_Res_File_Add work using a local path, but not a network path. By contrast, #AutoIt3Wrapper_Res_Icon_Add seems fine with UNC paths, though not shown in the sample below.

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_UseUpx=y
#AutoIt3Wrapper_Res_Icon_Add=\\FILESERVER\Scripts\Resources\DCL_53x53_16.ico,8 ;works fine
#AutoIt3Wrapper_Res_File_Add=\\FILESERVER\Scripts\Resources\DCL_53x53_16.ico, rt_rcdata, DCL_LOGO_ICON ; does not work
;#AutoIt3Wrapper_Res_File_Add=C:\Users\mike\OneDrive - Dav Ctl\Pictures\DCL_53x53_16.ico, rt_rcdata, DCL_LOGO_ICON  ; works fine
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include-once
#include "\\FILESERVER\Scripts\Include\ResourcesEx.au3"
#include <GuiConstants.au3>
#include <WinAPIConstants.au3>

Global $hSplashlogoImage = 0
If @Compiled Then $hSplashlogoImage = _Resource_GetAsImage("DCL_LOGO_ICON") ; If exe, use Resource. Otherwise, refer to _GDIPlus_BitmapCreateFromFile
_SplashGUILogoButton(100, 100)
Sleep (3000)

Func _SplashGUILogoButton($LogoHorizontalPos, $LogoVerticalPos)
        _GDIPlus_Startup()
        $hSplashGUILogo = GUICreate("SplashGUILogo", 16, 16, $LogoHorizontalPos, $LogoVerticalPos, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
        If Not @Compiled Then
                Local $hImage = _GDIPlus_BitmapCreateFromFile("C:\Users\mike\OneDrive - Dav Ctl\Pictures\DCL_53x53_16.BMP")
                $hSplashlogoImage = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
        EndIf
        _SetBitmap($hSplashGUILogo, $hSplashlogoImage, 255, 16, 16)     ; DCL dog icon
        $hBack = GUICtrlCreateLabel("", 0, 0, 16, 16)   ; empty label control
        GUICtrlSetState(-1, $gui_disable)
        GUISetState(@SW_SHOWNA, $hSplashGUILogo)
        _GDIPlus_Shutdown()
        Return ($hSplashGUILogo)
EndFunc   ;==>_SplashGUILogoButton

Func _SetBitmap($hGUI, $hImage, $iOpacity, $n_width = 200, $n_height = 200) ; To support _$hSplashGUILogo
        Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend
        $hScrDC = _WinAPI_GetDC(0)
        $hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
        If Not @Compiled Then $hImage = _GDIPlus_BitmapCreateFromFile("C:\Users\mike\OneDrive - Dav Ctl\Pictures\DCL_53x53_16.BMP")
        $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
        $hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
        $tSize = DllStructCreate($tagSIZE)
        $pSize = DllStructGetPtr($tSize)
        DllStructSetData($tSize, "X", $n_width)
        DllStructSetData($tSize, "Y", $n_height)
        $tSource = DllStructCreate($tagPOINT)
        $pSource = DllStructGetPtr($tSource)
        $tBlend = DllStructCreate($tagBLENDFUNCTION)
        $pBlend = DllStructGetPtr($tBlend)
        DllStructSetData($tBlend, "Alpha", $iOpacity)
        DllStructSetData($tBlend, "Format", 1)
        _WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
        _WinAPI_ReleaseDC(0, $hScrDC)
        _WinAPI_SelectObject($hMemDC, $hOld)
        _WinAPI_DeleteObject($hBitmap)
        _WinAPI_DeleteDC($hMemDC)
EndFunc   ;==>_SetBitmap

Change History (3)

comment:1 Changed 3 years ago by Jos

  • Status changed from new to assigned

Confirmed ... will have a look.

Jos

comment:2 Changed 3 years ago by Jos

Will be fixed in the next version. When you like to test the fix, just comment these lines in Func _Compile_Upd_res($ScriptFile_Out) as those shouldn't be there:

			For $x = 1 To $INP_Res_Files_Cnt
				$ResFileInfo = StringSplit($INP_Res_Files[$x], ",")
				ReDim $ResFileInfo[5]
				If $ResFileInfo[2] = "" Then $ResFileInfo[2] = $RT_MESSAGETABLE
				If $ResFileInfo[3] = "" Then $ResFileInfo[3] = $x
				If $ResFileInfo[4] = "" Then $ResFileInfo[4] = $INP_Res_Language
; removed as it makes the UNC fail and seems to be unnecessary
;~ 				$ResFileInfo[1] = StringReplace($ResFileInfo[1], "\", "\\")
;~ 				$ResFileInfo[1] = StringReplace($ResFileInfo[1], "/", "\\")
				$Res_Update_cnt += _Res_Update($rh, StringStripWS($ResFileInfo[1], 3), StringStripWS($ResFileInfo[2], 3), StringStripWS($ResFileInfo[3], 3), StringStripWS($ResFileInfo[4], 3))
			Next

comment:3 Changed 3 years ago by Jos

  • Resolution set to Fixed
  • Status changed from assigned to closed

Guidelines for posting comments:

  • You cannot re-open a ticket but you may still leave a comment if you have additional information to add.
  • In-depth discussions should take place on the forum.

For more information see the full version of the ticket guidelines here.

Add Comment

Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.