Вауууу
(Добавление)
Вообще мне она нужна была, что бы перед запуском прямоугольника с полосой загрузкой проверял хеш всех картинок, и записывал те, которые совпадают будут равны 1, а другие 0.
Потом запускается прямоугольник с полосой загрузки и начинает загружать не ВСЕ и не обычной скоростью, а чем меньше изображений(взависимости от их количества: меньше - быстрее грузит, а больше - медленнее), загрузит, например, изображение, которое не совпадает с хешом, а уже потом ускорит полосу загрузки - как то так)) Ну лишняя работа, но unpack получает только: Есть(не распаковывать), нету(распаковать), а хеш он не проверяет, поэтому ТАК)
(Добавление)
Zireael , А как сделать, что бы при открытия меню не мигало? Просто где кнопка "Настройки" вверху (меню) при нажатии он считывает координаты и мигает при открытии настроек. Я не могу методом тыка как-то высчитать, что бы не брал во внимание зону с квадратиком "настройки" (кнопка)
CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define FLASHW_CAPTION 1
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "FlashWindowEx", "FlashWindowEx", "User32.dll" );
external(INT, "EnableWindow", "EnableWindow", "User32.dll" );
external(INT, "PtInRect", "PtInRect", "User32.dll" );
external(INT, "WindowFromPoint", "WindowFromPoint", "User32.dll" );
win dialog;
int b0;
int rect_dialog[4], mouse_x, mouse_y;
int FLASHWINFO[5]={20, 0, FLASHW_CAPTION, 7, 10}
createdialog(0);
showdialog(0, "Диалог1",100, 100, 500, 500, 1, 0);
enabletimer(0);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
dialog=formatiw(gethwnd(0));
b0=CreateWindow(0, "BUTTON", "Кнопка", WS_BORDER | WS_CHILD | WS_VISIBLE, 10, 10, 80, 25, gethwnd(0), 0, 0, 0);
}
function getmessage(1, WM_CREATE)
{
EnableWindow(gethwnd(0), 0);
FLASHWINFO[1] = gethwnd(1);
}
function getmessage(0, WM_COMMAND)
{
if(message.lparam == b0)
{
createdialog(1);
showdialog(1, "Диалог2",200, 200, 300, 300, 4, 1);
}
}
function getmessage(1, WM_CLOSE)
{
destroydialog(1);
EnableWindow(gethwnd(0), 1);
}
CREATE_TIMER(0, 30)
{
if(getkeystate(1) || getkeystate(2))
{
setwindowparam(dialog);
getmouse(mouse_x, mouse_y);
rect_dialog[0] = dialog.left;
rect_dialog[1] = dialog.top;//где тут ту сделать расчет, что бы ервую кнопку на панели меню 'Настройки' не брал во внимание.
rect_dialog[2] = dialog.left+dialog.width;
rect_dialog[3] = dialog.top+dialog.height;
if(WindowFromPoint(mouse_x, mouse_y) != gethwnd(1))
{
if(PtInRect(address(#rect_dialog[0]), mouse_x, mouse_y))
{
FlashWindowEx(address(#FLASHWINFO[0]));
return;
}
}
}
}
(Добавление)
А можно к
CODE:Rect_Dialog[1] = MainWindow.top;
прибавить 45 или же ко всем прибавить текст
clientCODE:Rect_Dialog[0] = MainWindow.leftclient;
Rect_Dialog[1] = MainWindow.topclient;//45
Rect_Dialog[2] = MainWindow.leftclient+MainWindow.widthclient;
Rect_Dialog[3] = MainWindow.topclient+MainWindow.heightclient;
(Добавление)
Ну или проще: Добавите переменную - флаг, которая будет изменять свое состояние во время открытия настроек и закрытия, и при открытии будет в положительную сторону, т.е разрешать мигание при открытии, а при закрытии - запрещать
(Добавление)
007wan пишет:
Ну или проще: Добавите переменную - флаг
Предпочтительным будет, т.к что бы при открытых настройках и при нажатии на меню(панели) настроек тоже мигало, но тогда нужно убрать client рядом со словами
(Добавление)
Хотя я лучше буду передавать в эту фукцию, которая мигает: 1)Разрешать или не разрешать мигать при открытых настройках.
2)Указатель на нужный диалог(Если нужно мигать нескольким окнам)
(Добавление)
Zireael , при добавлении контрола во второе окно - нажимаем - мигает. Пока не нахожу решение как избавится от мигания при нажатие на контролы.
Код (Отобразить)CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define WS_BORDER 8388608
#define FLASHW_CAPTION 1
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "FlashWindowEx", "FlashWindowEx", "User32.dll" );
external(INT, "EnableWindow", "EnableWindow", "User32.dll" );
external(INT, "PtInRect", "PtInRect", "User32.dll" );
external(INT, "WindowFromPoint", "WindowFromPoint", "User32.dll" );
win dialog;
int b0;
int rect_dialog[4], mouse_x, mouse_y;
int FLASHWINFO[5]={20, 0, FLASHW_CAPTION, 7, 10};
int Object_Checkbox;
createdialog(0);
showdialog(0, "Диалог1",100, 100, 500, 500, 1, 0);
enabletimer(0);
loop()sleep(10);
function getmessage(0, WM_CREATE)
{
dialog=formatiw(gethwnd(0));
b0=CreateWindow(0, "BUTTON", "Кнопка", WS_BORDER | WS_CHILD | WS_VISIBLE, 10, 10, 80, 25, gethwnd(0), 0, 0, 0);
}
function getmessage(1, WM_CREATE)
{
EnableWindow(gethwnd(0), 0);
FLASHWINFO[1] = gethwnd(1);
Object_Checkbox = CreateWindow(0, "BUTTON", "Кнопка", WS_CHILD | WS_VISIBLE, 10, 20, 80, 20, gethwnd(1), 0, 0, 0);
}
function getmessage(0, WM_COMMAND)
{
if(message.lparam == b0)
{
createdialog(1);
showdialog(1, "Диалог2",200, 200, 300, 300, 4, 1);
}
}
function getmessage(1, WM_CLOSE)
{
destroydialog(1);
EnableWindow(gethwnd(0), 1);
}
CREATE_TIMER(0, 30)
{
if(getkeystate(1) || getkeystate(2))
{
setwindowparam(dialog);
getmouse(mouse_x, mouse_y);
rect_dialog[0] = dialog.left;
rect_dialog[1] = dialog.top;
rect_dialog[2] = dialog.left+dialog.width;
rect_dialog[3] = dialog.top+dialog.height;
if(WindowFromPoint(mouse_x, mouse_y) != gethwnd(1))
{
if(PtInRect(address(#rect_dialog[0]), mouse_x, mouse_y))
{
FlashWindowEx(address(#FLASHWINFO[0]));
return;
}
}
}
}
(Добавление)
А хотя если чисто логически, то
CODE:if(WindowFromPoint(Mouse_x, Mouse_y) != gethwnd(1) && WindowFromPoint(Mouse_x, Mouse_y) != gethwnd(2) && WindowFromPoint(Mouse_x, Mouse_y) != Object_Group..остальные контролы)