Sergey2210
Осваивающий
- Сообщения
- 263
- Репутация
- 31
Версия AutoIt:3.
Описание:Нашёл на официяльном форуме функцию для добавления тени к окну,минус в том что в скиновых POPUP окнах тень отображается не корректно,хочу узнать можно ли подогнать функцию к POPUP(скиновое)?
Источник:http://www.autoitscript.com/forum/topic/90917-add-a-drop-shadow-to-native-autoit-gui-forms-and-dialogs/page__p__653789__hl__+_guisetdropshadow__fromsearch__1#entry653789
Описание:Нашёл на официяльном форуме функцию для добавления тени к окну,минус в том что в скиновых POPUP окнах тень отображается не корректно,хочу узнать можно ли подогнать функцию к POPUP(скиновое)?
Код:
Func _GuiSetDropShadow($hwnd, $fDisrespectUser = True)
If Not IsHWnd($hwnd) Then Return SetError(1, 1, 0)
;check if hWnd is from current process
Local $aResult = DllCall("User32.dll", "int", "GetWindowThreadProcessId", "hwnd", $hwnd, "int*", 0)
If @error Or $aResult[2] <> @AutoItPID Then Return SetError(@error, 2, 0)
If Not IsDeclared("SPI_GETDROPSHADOW") Then Local Const $SPI_GETDROPSHADOW = 0x1024
If Not IsDeclared("SPI_SETDROPSHADOW") Then Local Const $SPI_SETDROPSHADOW = 0x1025
If Not IsDeclared("CS_DROPSHADOW") Then Local Const $CS_DROPSHADOW = 0x00020000
If Not IsDeclared("GCL_STYLE") Then Local Const $GCL_STYLE = -26
$aResult = DllCall("user32.dll", "int", "SystemParametersInfo", "int", $SPI_GETDROPSHADOW, "int", 0, "int*", 0, "int", 0)
Local $iErr = @error
If $iErr Or Not IsArray($aResult) Then Return SetError($iErr, 3, 0)
;if 'Show shadows under menus' option not set, try activating it.
If Not $aResult[3] And $fDisrespectUser Then
;turn on drop shadows
$aResult = DllCall("user32.dll", "int", "SystemParametersInfo", "int", $SPI_SETDROPSHADOW, "int", 0, "int", True, "int", 0)
$iErr = @error
If $iErr Or Not IsArray($aResult) Or $aResult[0] <> 1 Then Return SetError($iErr, 4, 0)
EndIf
;get styles from WndClassEx struct
$aResult = DllCall("user32.dll", "dword", "GetClassLong", "hwnd", $hwnd, "int", $GCL_STYLE)
$iErr = @error
If $iErr Or Not IsArray($aResult) Or Not $aResult[0] Then Return SetError($iErr, 5, 0)
Local $OldStyle = $aResult[0]
;add drop shadow style to styles
Local $Style = BitOR($OldStyle, $CS_DROPSHADOW)
If StringRight(@OSArch, 2) == "64" Then
;if 64 bit windows (NOT TESTED)
;see MSDN SetClassLong remarks
;$aResult = DllCall("user32.dll", "ulong_ptr", "SetClassLongPtr", "hwnd", $hWnd, "int", $GCL_STYLE, "long_ptr", $Style)
;$iErr = @error
;If $iErr Or Not IsArray($aResult) Or Not $aResult[0] Then Return SetError($iErr, 6, 0)
Else
$aResult = DllCall("user32.dll", "dword", "SetClassLong", "hwnd", $hwnd, "int", $GCL_STYLE, "long", $Style)
$iErr = @error
If $iErr Or Not IsArray($aResult) Or Not $aResult[0] Then Return SetError($iErr, 7, 0)
If $aResult[0] = $OldStyle Then Return SetError($iErr, 0, 1)
Return SetError($iErr, 8, 0)
EndIf
EndFunc;==>_GuiSetDropShadow
Источник:http://www.autoitscript.com/forum/topic/90917-add-a-drop-shadow-to-native-autoit-gui-forms-and-dialogs/page__p__653789__hl__+_guisetdropshadow__fromsearch__1#entry653789