Здравствуйте! При перемещении главного окна - "Задняя часть(желтая)", перемещаются второстепенные окна с картинкой и мерцают. Сами окна прозрачные. Стиль $WS_EX_COMPOSITED не совсем помог. Как убрать мерцание?
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Icons.au3>
#include "GIFAnimation.au3"
#include <GDIPlus.au3>
#include <WinAPISys.au3>
#include <Misc.au3>
#cs
=============__COMENTS__===========
|_____-ВИЗУАЛЬНАЯ ЧАСТЬ КОДА-_____|
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
|\/\/\/\/\Функция\/\/\/\/\/\/|
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
/0-0-0-0-0-0-0-0-0-0-0-0-0-0-0\
|0-0-Обьявление переменных-0-0|
\0-0-0-0-0-0-0-0-0-0-0-0-0-0-0/
/()()()()()()()()()()()()()()\
|()()Параметры переменных()()|
\()()()()()()()()()()()()()()/
/----------------------------\
|-------разьяснение кода-----|
\----------------------------/
|__________-СОКРАЩЕНИЯ-___________|
-kn-кнопка
-ok-окно
-pr-переменная
====================================
#ce
Opt("GUIOnEventMode", 1)
;=====================================================================;
;=====================================================================;
;=====;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=====;
;=====;;;;;;;;;;;;;;;;;;;;;;; START ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=====;
;=====;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=====;
;=====================================================================;
;=====================================================================;
;/0-0-0-0-0-0-0-0-0-0-0-0-0-0-0\;
;------Startovie parametri-----;
;(Координаты Начальные);
Global $xx[100]
Global $yy[100]
Global $Razmer_Shirina[100]
Global $Razmer_Visota[100]
;o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o;
;==================================================================================
;/\/\/\/\/\/\/\/\/\-НАЧАЛЬНОЕ ОКНО-/\/\/\/\/\/\/\/\/\/\:
;______________________( 0 )_________________________:
;0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0;
Global $Ok_Nachalinoe_okno
Global $Ok_Levaya_verhyaya_knopka_1
Global $Ok_Pravaya_verhyaya_knopka_2
Global $Ok_Levaya_nignyaya_knopka_3
Global $Ok_Pravaya_nignyaya_knopka_4
Global $Pr_Vkluchen_proces
;o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o;
;/()()()()()()()()()()()()()()()()()()()\
$Pr_Vkluchen_proces = 0
Global Const $SC_DRAGMOVE = 0xF012 ;0xF012 --- Это клик по заголовку окна (смотреть в хелпе WM_SYSCOMMAND)
Local $pr_Put_Zadnya_chast = "C:\Users\Lilu\Desktop\PROEKT AUTOIT\Программа по Репосту\Изображения\Начальное окно\Zadnya_chast.png"
Local $pr_Put_Levaya_nignyaya_knopka_1 = "C:\Users\Lilu\Desktop\PROEKT AUTOIT\Программа по Репосту\Изображения\Начальное окно\Levaya_verhyaya_knopka_1.png"
Local $pr_Put_Pravaya_verhyaya_knopka_2 = "C:\Users\Lilu\Desktop\PROEKT AUTOIT\Программа по Репосту\Изображения\Начальное окно\Pravaya_verhyaya_knopka_2.png"
Local $pr_Put_Levaya_nignyaya_knopka_3 = "C:\Users\Lilu\Desktop\PROEKT AUTOIT\Программа по Репосту\Изображения\Начальное окно\Levaya_nignyaya_knopka_3.png"
Local $pr_Put_Pravaya_nignyaya_knopka_4 = "C:\Users\Lilu\Desktop\PROEKT AUTOIT\Программа по Репосту\Изображения\Начальное окно\Pravaya_nignyaya_knopka_4.png"
;\()()()()()()()()()()()()()()()()()()()/
;-------------------------------------;
;$WS_POPUPWINDOW----Создает всплывающее окно со стилями $WS_BORDER, $WS_POPUP, и $WS_SYSMENU. Для того чтобы сделать системное меню доступным,
;$WS_EX_LAYERED----Создаёт многослойное окно. Не может быть использовано в качестве дочернего окна.
;$WS_EX_TOPMOST----Поверх всех окон, даже если окно неактивно.
;-------------------------------------;
;;;;;;;;;;;;;;;;;;;;;;;;-ZADNYAYA CHAST-;;;;;;;;;;;;;;;;;;;;;
_GDIPlus_Startup()
Local $pr_hImage = _GDIPlus_ImageLoadFromFile($pr_Put_Zadnya_chast)
;ConsoleWrite($pr_hImage&@CRLF)
Local $pr_Shirina_objekta = _GDIPlus_ImageGetWidth($pr_hImage)
Local $pr_Visota_objekta = _GDIPlus_ImageGetHeight($pr_hImage)
Local $pr_hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($pr_hImage)
$index_massiv = 1
papmetri_ellementa($index_massiv, 0, 0, $pr_Shirina_objekta, $pr_Visota_objekta)
$Ok_Nachalinoe_okno = GUICreate("", $Razmer_Shirina[$index_massiv], $Razmer_Visota[$index_massiv], $xx[$index_massiv], $yy[$index_massiv], $WS_POPUPWINDOW, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST)) ;создает главное окно
GUIRegisterMsg($WM_LBUTTONDOWN, 'Peremeshenie_okna')
;local $pr_izmenennie_kartinki = Izmenenie_razmerov_kartinki($pr_hImage, 400, 400);-изменяет размеры картинки
_WinAPI_UpdateLayeredWindowEx($Ok_Nachalinoe_okno, -1, -1, $pr_hBitmap, 250)
_WinAPI_DeleteObject($pr_hBitmap)
_GDIPlus_ImageDispose($pr_hImage)
;_GDIPlus_ImageDispose($pr_izmenennie_kartinki);-выгружает размеры кратинки
GUISetState()
;;;;;;;;;;;;;;;;;;;;;;;;-Levaya_nignyaya_knopka_1-;;;;;;;;;;;;;;;;;;;;;
Local $pr_hImage = _GDIPlus_ImageLoadFromFile($pr_Put_Levaya_nignyaya_knopka_1)
Local $pr_Shirina_objekta = _GDIPlus_ImageGetWidth($pr_hImage)
Local $pr_Visota_objekta = _GDIPlus_ImageGetHeight($pr_hImage)
Local $pr_hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($pr_hImage)
$index_massiv = 1
papmetri_ellementa($index_massiv, $xx[1] + 99, $yy[1] + 99, $pr_Shirina_objekta, $pr_Visota_objekta)
$Ok_Levaya_nignyaya_knopka_1 = GUICreate("", $Razmer_Shirina[$index_massiv], $Razmer_Visota[$index_massiv], $xx[$index_massiv], $yy[$index_massiv], $WS_POPUPWINDOW + $WS_EX_COMPOSITED, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST), $Ok_Nachalinoe_okno) ;создает главное окно
_WinAPI_UpdateLayeredWindowEx($Ok_Levaya_nignyaya_knopka_1, 0, 0, $pr_hBitmap, 250)
GUISetState()
;;;;;;;;;;;;;;;;;;;;;;;;-Pravaya_verhyaya_knopka_2-;;;;;;;;;;;;;;;;;;;;;
Local $pr_hImage = _GDIPlus_ImageLoadFromFile($pr_Put_Pravaya_verhyaya_knopka_2)
Local $pr_Shirina_objekta = _GDIPlus_ImageGetWidth($pr_hImage)
Local $pr_Visota_objekta = _GDIPlus_ImageGetHeight($pr_hImage)
Local $pr_hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($pr_hImage)
$index_massiv = 2
papmetri_ellementa($index_massiv, $xx[1] + 329, $yy[1] + 99, $pr_Shirina_objekta, $pr_Visota_objekta)
$Ok_Pravaya_verhyaya_knopka_2 = GUICreate("", $Razmer_Shirina[$index_massiv], $Razmer_Visota[$index_massiv], $xx[$index_massiv], $yy[$index_massiv], $WS_POPUPWINDOW + $WS_EX_COMPOSITED, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST), $Ok_Nachalinoe_okno) ;создает главное окно
_WinAPI_UpdateLayeredWindowEx($Ok_Pravaya_verhyaya_knopka_2, 0, 0, $pr_hBitmap, 250)
GUISetState()
;;;;;;;;;;;;;;;;;;;;;;;;-Levaya_nignyaya_knopka_3-;;;;;;;;;;;;;;;;;;;;;
Local $pr_hImage = _GDIPlus_ImageLoadFromFile($pr_Put_Levaya_nignyaya_knopka_3)
Local $pr_Shirina_objekta = _GDIPlus_ImageGetWidth($pr_hImage)
Local $pr_Visota_objekta = _GDIPlus_ImageGetHeight($pr_hImage)
Local $pr_hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($pr_hImage)
$index_massiv = 4
papmetri_ellementa($index_massiv, $xx[1] + 99, $yy[1] + 330, $pr_Shirina_objekta, $pr_Visota_objekta)
$Ok_Levaya_nignyaya_knopka_3 = GUICreate("", $Razmer_Shirina[$index_massiv], $Razmer_Visota[$index_massiv], $xx[$index_massiv], $yy[$index_massiv], $WS_POPUPWINDOW + $WS_EX_COMPOSITED, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST), $Ok_Nachalinoe_okno) ;создает главное окно
_WinAPI_UpdateLayeredWindowEx($Ok_Levaya_nignyaya_knopka_3, 0, 0, $pr_hBitmap, 250)
GUISetState()
;;;;;;;;;;;;;;;;;;;;;;;;-Pravaya_nignyaya_knopka_4-;;;;;;;;;;;;;;;;;;;;;
Local $pr_hImage = _GDIPlus_ImageLoadFromFile($pr_Put_Pravaya_nignyaya_knopka_4)
Local $pr_Shirina_objekta = _GDIPlus_ImageGetWidth($pr_hImage)
Local $pr_Visota_objekta = _GDIPlus_ImageGetHeight($pr_hImage)
Local $pr_hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($pr_hImage)
$index_massiv = 5
papmetri_ellementa($index_massiv, $xx[1] + 330, $yy[1] + 330, $pr_Shirina_objekta, $pr_Visota_objekta)
$Ok_Pravaya_nignyaya_knopka_4 = GUICreate("", $Razmer_Shirina[$index_massiv], $Razmer_Visota[$index_massiv], $xx[$index_massiv], $yy[$index_massiv], $WS_POPUPWINDOW + $WS_EX_COMPOSITED, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST), $Ok_Nachalinoe_okno) ;создает главное окно
_WinAPI_UpdateLayeredWindowEx($Ok_Pravaya_nignyaya_knopka_4, 0, 0, $pr_hBitmap, 250)
GUISetState()
GUIRegisterMsg($WM_MOVE, 'Peremeshenie_vseh_chastei_nachalinogo_okna')
;Peremeshenie_vseh_chastei_nachalinogo_okna($Ok_Levaya_nignyaya_knopka_1, $WM_MOVE, 0, 0)
;Peremeshenie_vseh_chastei_nachalinogo_okna($Ok_Pravaya_verhyaya_knopka_2, $WM_MOVE, 0, 0)
;Peremeshenie_vseh_chastei_nachalinogo_okna($Ok_Levaya_nignyaya_knopka_3, $WM_MOVE, 0, 0)
;Peremeshenie_vseh_chastei_nachalinogo_okna($Ok_Pravaya_nignyaya_knopka_4, $WM_MOVE, 0, 0)
GUISwitch($Ok_Nachalinoe_okno) ;переключение на главное окно
;_______________________________________________0:
;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/:
;##########################################################################
;##########Blok_Dvigatel###################################################
While 1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;######################################
Sleep(100) ; Цикл ожидания
If _IsPressed("1B") Then
Exit
EndIf
;######################################
WEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;######################################
;##########################################################################
;##########################################################################
Func Peremeshenie_okna($hWnd, $iMsg, $wParam, $lParam)
Switch $hWnd
Case $Ok_Nachalinoe_okno
_SendMessage($Ok_Nachalinoe_okno, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
Case $pr_hBitmap
Return $HTCAPTION
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>Peremeshenie_okna
Func Peremeshenie_vseh_chastei_nachalinogo_okna($hWnd, $iMsg, $wParam, $lParam)
Switch $hWnd
Case $Ok_Nachalinoe_okno
Local $Pos = WinGetPos($Ok_Nachalinoe_okno)
If IsArray($Pos) Then
WinMove($Ok_Levaya_nignyaya_knopka_1, '', $Pos[0], $Pos[1])
WinMove($Ok_Pravaya_verhyaya_knopka_2, '', $Pos[0], $Pos[1])
WinMove($Ok_Levaya_nignyaya_knopka_3, '', $Pos[0], $Pos[1])
WinMove($Ok_Pravaya_nignyaya_knopka_4, '', $Pos[0], $Pos[1])
Sleep(20)
EndIf
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>Peremeshenie_vseh_chastei_nachalinogo_okna
Func Izmenenie_razmerov_kartinki($hImage, $iWidth, $iHeight)
Local $aResult = DllCall($__g_hGDIPDll, 'uint', 'GdipGetImageThumbnail', 'ptr', $hImage, 'uint', $iWidth, 'uint', $iHeight, 'ptr*', 0, 'ptr', 0, 'ptr', 0)
If @error Then
Return SetError(@error, @extended, 0)
EndIf
Return $aResult[4]
EndFunc ;==>Izmenenie_razmerov_kartinki
;==================================================================================
;/\/\/\/\/\/\/\-Параметры обьекта рассположения-/\/\/\/\/\/\:
;____________________( - )_____________________:
;Настройка рассположения елемента
;->Закрывает Окно Новости
Func papmetri_ellementa($index, $x_cor, $y_cor, $razmer_w, $razmer_h)
$xx[$index] = $x_cor
$yy[$index] = $y_cor
$Razmer_Shirina[$index] = $razmer_w
$Razmer_Visota[$index] = $razmer_h
EndFunc ;==>papmetri_ellementa
;_________________________________________-:
;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/: