| 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 |
|---|