Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<winapi.au3>
- #include<sqlite.au3>
- #include<windowsconstants.au3>
- _SQLite_Startup()
- _SQLite_Open(@ScriptDir & "\Innopad.db")
- Global $aRow
- _SQLite_QuerySingleRow(-1, "SELECT thumbnail FROM Games_info where pkey='3'", $aRow)
- _SQLite_Close()
- _SQLite_Shutdown()
- GUICreate("Test")
- $imgIcon = GUICtrlCreatePic("", 10, 10, 57, 57)
- GUISetState()
- $hLblDC = _WinAPI_GetDC(GUICtrlGetHandle($imgIcon))
- $hBitmap = _WinAPI_CreateCompatibleBitmap($hLblDC, 57, 57)
- $hDC = _WinAPI_CreateCompatibleDC($hLblDC)
- _WinAPI_SelectObject($hDC, $hBitmap)
- $aRow[0] = BinaryMid($aRow[0], 9, BinaryLen($aRow[0])-9)
- Dim $newRow
- For $i = 1 To BinaryLen($aRow[0]) Step 171
- ConsoleWrite("OLD:" & BinaryMid($aRow[0], $i, 171) & '00' & @CRLF)
- $newRow &= BinaryToString(BinaryMid($aRow[0], $i, 171) & BinaryMid(0x00,1,2))
- ConsoleWrite("NEW:" & BinaryMid($newRow, $i, 173) & @CRLF & @CRLF)
- ;EXITLOOP
- Next
- $newRow = Binary($newRow)
- ;ConsoleWrite("NEW ROW:" & @CRLF)
- ;ConsoleWrite($newRow & @CRLF)
- ;EXIT
- ;ConsoleWrite($aRow[0] & @CRLF)
- ;$tData = DllStructCreate("byte[" & BinaryLen($aRow[0]) & "]")
- ;DllStructSetData($tData, 1, $aRow[0])
- MsgBox(0,"",BinaryLen($aRow[0]) & @CRLF & BinaryLen($newRow))
- $tData = DllStructCreate("byte[" & BinaryLen($newRow) & "]")
- DllStructSetData($tData, 1, $newRow)
- $tBITMAPINFOHEADER = DllStructCreate("DWORD biSize;LONG biWidth;LONG biHeight;WORD biPlanes;WORD biBitCount;DWORD biCompression;DWORD biSizeImage;LONG biXPelsPerMeter;LONG biYPelsPerMeter;DWORD biClrUsed;DWORD biClrImportant; DWORD colormap[3]")
- DllStructSetData($tBITMAPINFOHEADER, 1, DllStructGetSize($tBITMAPINFOHEADER))
- DllStructSetData($tBITMAPINFOHEADER, 2, 57)
- DllStructSetData($tBITMAPINFOHEADER, 3, -57)
- DllStructSetData($tBITMAPINFOHEADER, 4, 1)
- DllStructSetData($tBITMAPINFOHEADER, 5, 16)
- ; use default GDI32 16 bit format: 5-5-5
- DllStructSetData($tBITMAPINFOHEADER, 6, 0)
- ; Choose Colormask manually, example for 5-5-5
- ;~ DllStructSetData($tBITMAPINFOHEADER, 6, 3) ;BI_BITFIELDS
- ;~ DllStructSetData($tBITMAPINFOHEADER, "colormap", 0x7C00, 1) ;- Red mask
- ;~ DllStructSetData($tBITMAPINFOHEADER, "colormap", 0x03E0, 2) ;- Green mask
- ;~ DllStructSetData($tBITMAPINFOHEADER, "colormap", 0x001F, 3) ;- Blue mask
- _WinAPI_SetDIBits($hLblDC, $hBitmap, 0, 57, DllStructGetPtr($tData), DllStructGetPtr($tBITMAPINFOHEADER), 1)
- _WinAPI_ReleaseDC(GUICtrlGetHandle($imgIcon), $hLblDC)
- _WinAPI_DeleteDC($hDC)
- _GUICtrlStatic_SetImage($imgIcon, $hBitmap)
- While GUIGetMsg()<>-3
- WEnd
- ; #FUNCTION# ====================================================================================================================
- ; Name...........: _GUICtrlStatic_SetImage
- ; Description ...: Sets a HBITMAP to a static control like image or label
- ; Syntax.........: _GUICtrlStatic_SetImage($iCtrlId, $hBitmap)
- ; Parameters ....: $iCtrlId - CtrlId or handle of Control in the current process
- ; $hBitmap - Pointer top Windows HBITMAP
- ; Return values .: Success - 1
- ; Failure - 0 and set @error:
- ; |1 - invalid $pSource
- ; |1 - invalid $pSource
- ; Author ........: ProgAndy, Zedna
- ; Modified.......:
- ; Remarks .......:
- ; Related .......:
- ; Link ..........:
- ; Example .......:
- ; ===============================================================================================================================
- Func _GUICtrlStatic_SetImage($iCtrlId, $hBitmap)
- Local Const $STM_SETIMAGE = 0x0172
- Local Const $IMAGE_BITMAP = 0
- Local Const $SS_BITMAP = 0xE
- Local Const $GWL_STYLE = -16
- If IsHWnd($iCtrlId) Then
- If WinGetProcess($iCtrlId) <> @AutoItPID Then Return SetError(1,0,0)
- Else
- $iCtrlId = GUICtrlGetHandle($iCtrlId)
- If Not $iCtrlId Then Return SetError(2,0,0)
- EndIf
- ; set SS_BITMAP style to control
- Local $oldStyle = DllCall("user32.dll", "long", "GetWindowLong", "hwnd", $iCtrlId, "int", $GWL_STYLE)
- If @error Then Return SetError(3, 0, 0)
- DllCall("user32.dll", "long", "SetWindowLong", "hwnd", $iCtrlId, "int", $GWL_STYLE, "long", BitOR($oldStyle[0], $SS_BITMAP))
- If @error Then Return SetError(4, 0, 0)
- Local $oldBmp = DllCall("user32.dll", "handle", "SendMessageW", "hwnd", $iCtrlId, "int", $STM_SETIMAGE, "wparam", $IMAGE_BITMAP, "handle", $hBitmap)
- If @error Then Return SetError(5, 0, 0)
- If $oldBmp[0] Then _WinAPI_DeleteObject($oldBmp[0])
- Return 1
- EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement