| 1 | ; #FUNCTION# ====================================================================================================================
|
|---|
| 2 | ; Name...........: _WinAPI_CreateSolidBitmap
|
|---|
| 3 | ; Description....: Creates a solid color bitmap
|
|---|
| 4 | ; Syntax.........: _WinAPI_CreateSolidBitmap($hWnd, $iColor, $iWidth, $iHeight, $fRGB)
|
|---|
| 5 | ; Parameters.....: $hWnd - Handle to the window where the bitmap will be displayed
|
|---|
| 6 | ; $iColor - The color of the bitmap, depends on the $fRGB value
|
|---|
| 7 | ; $iWidth - The width of the bitmap
|
|---|
| 8 | ; $iHeight - The height of the bitmap
|
|---|
| 9 | ; $fRGB - Type of $iColor passed in, valid values:
|
|---|
| 10 | ; |0 - BGR
|
|---|
| 11 | ; |1 - RGB (Default)
|
|---|
| 12 | ; Return values..: Success - Handle to the bitmap
|
|---|
| 13 | ; Failure - 0 and sets the @error flag to non-zero
|
|---|
| 14 | ; Author.........: Paul Campbell (PaulIA)
|
|---|
| 15 | ; Modified.......: Yashied
|
|---|
| 16 | ; Remarks........: When you no longer need the bitmap, call the _WinAPI_DeleteObject() function to delete it.
|
|---|
| 17 | ; Related........: _WinAPI_CreateCompatibleBitmap
|
|---|
| 18 | ; Link...........:
|
|---|
| 19 | ; Example........:
|
|---|
| 20 | ; ===============================================================================================================================
|
|---|
| 21 |
|
|---|
| 22 | Func _WinAPI_CreateSolidBitmap($hWnd, $iColor, $iWidth, $iHeight, $fRGB = 1)
|
|---|
| 23 |
|
|---|
| 24 | Local $tRect, $hBitmap, $hBrush, $hOld, $hDC, $hDestDC, $hDestSv
|
|---|
| 25 |
|
|---|
| 26 | $hDC = _WinAPI_GetDC($hWnd)
|
|---|
| 27 | $hDestDC = _WinAPI_CreateCompatibleDC($hDC)
|
|---|
| 28 | $hBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $iWidth, $iHeight)
|
|---|
| 29 | $hOld = _WinAPI_SelectObject($hDestDC, $hBitmap)
|
|---|
| 30 | $tRect = DllStructCreate($tagRECT)
|
|---|
| 31 | DllStructSetData($tRect, 1, 0)
|
|---|
| 32 | DllStructSetData($tRect, 2, 0)
|
|---|
| 33 | DllStructSetData($tRect, 3, $iWidth)
|
|---|
| 34 | DllStructSetData($tRect, 4, $iHeight)
|
|---|
| 35 | If $fRGB Then
|
|---|
| 36 | $iColor = BitOR(BitAND($iColor, 0x00FF00), BitShift(BitAND($iColor, 0x0000FF), -16), BitShift(BitAND($iColor, 0xFF0000), 16))
|
|---|
| 37 | EndIf
|
|---|
| 38 | $hBrush = _WinAPI_CreateSolidBrush($iColor)
|
|---|
| 39 | _WinAPI_FillRect($hDestDC, DllStructGetPtr($tRect), $hBrush)
|
|---|
| 40 | If @error Then
|
|---|
| 41 | _WinAPI_DeleteObject($hBitmap)
|
|---|
| 42 | $hBitmap = 0
|
|---|
| 43 | EndIf
|
|---|
| 44 | _WinAPI_DeleteObject($hBrush)
|
|---|
| 45 | _WinAPI_ReleaseDC($hWnd, $hDC)
|
|---|
| 46 | _WinAPI_SelectObject($hDestDC, $hOld)
|
|---|
| 47 | _WinAPI_DeleteDC($hDestDC)
|
|---|
| 48 | Return SetError(($hBitmap = 0), 0, $hBitmap)
|
|---|
| 49 | EndFunc ;==>_WinAPI_CreateSolidBitmap
|
|---|