Цитата:
Подскажите можно ли при наведении в это вырезаное окно кликнуть мышью чтобы действие передавалось основному
Выводить изображение на диалог и отлавливать сообщения, примерно так:
code (Отобразить)
CODE:
#define WS_EX_LAYERED 524288
#define GWL_EXSTYLE -20
#define GWL_STYLE -16
#define LWA_COLORKEY 1
#define COLOR_3DFACE 15
external(INT, "SetLayeredWindowAttributes", "SetLayeredWindowAttributes", "User32.dll" );
external(INT, "SetWindowLong", "SetWindowLongA", "User32.dll" );
external(INT, "GetSysColor", "GetSysColor", "User32.dll");
external(INT, "MoveWindow", "MoveWindow", "User32.dll");
int x=200, y=400;
win w=window ("Program Manager", "Progman", -1); // окно, рабочий стол в данном случае
createdialog(0);
SetWindowLong(gethwnd(0), GWL_EXSTYLE, WS_EX_LAYERED);
SetWindowLong(gethwnd(0), GWL_STYLE, 0);
SetLayeredWindowAttributes(gethwnd(0), GetSysColor(COLOR_3DFACE), 0, LWA_COLORKEY);
showdialog(0, "Dialog", x, y, 200, 150, 1, 1);
visualwindow(formatiw(gethwnd(0)), 0, 0, 0, 200, 150, 0, 0, 100, w);
enabletimer(0);
loop()
{
sleep(10);
}
function getmessage(0, WM_LBUTTONDOWN) // если нажата левая кнопка мыши
{
textout(0, 0, 0, "Координаты клика: "+format(message.x)+", "+format(message.y), 1);
// тут нужные действия
}
// эти сообщения сработают только если диалог в фокусе, т. е. нужно кликнуть по нему
function getmessage(0, WM_KEYDOWN) // если нажата клавиша
{
textout(1, 0, 20, "Нажата клавиша с кодом: "+format(message.wparam), 1);
// тут нужные действия
}
function getmessage(0, WM_SYSKEYDOWN) // если нажата системная клавиша
{
textout(1, 0, 20, "Нажата клавиша с кодом: "+format(message.wparam), 1);
}
CREATE_TIMER(0, 50)
{
if(getkeystate(192)==1)
{
getmouse(x, y);
MoveWindow(gethwnd(0), x, y, 200, 150, 1);
}
}
#define GWL_EXSTYLE -20
#define GWL_STYLE -16
#define LWA_COLORKEY 1
#define COLOR_3DFACE 15
external(INT, "SetLayeredWindowAttributes", "SetLayeredWindowAttributes", "User32.dll" );
external(INT, "SetWindowLong", "SetWindowLongA", "User32.dll" );
external(INT, "GetSysColor", "GetSysColor", "User32.dll");
external(INT, "MoveWindow", "MoveWindow", "User32.dll");
int x=200, y=400;
win w=window ("Program Manager", "Progman", -1); // окно, рабочий стол в данном случае
createdialog(0);
SetWindowLong(gethwnd(0), GWL_EXSTYLE, WS_EX_LAYERED);
SetWindowLong(gethwnd(0), GWL_STYLE, 0);
SetLayeredWindowAttributes(gethwnd(0), GetSysColor(COLOR_3DFACE), 0, LWA_COLORKEY);
showdialog(0, "Dialog", x, y, 200, 150, 1, 1);
visualwindow(formatiw(gethwnd(0)), 0, 0, 0, 200, 150, 0, 0, 100, w);
enabletimer(0);
loop()
{
sleep(10);
}
function getmessage(0, WM_LBUTTONDOWN) // если нажата левая кнопка мыши
{
textout(0, 0, 0, "Координаты клика: "+format(message.x)+", "+format(message.y), 1);
// тут нужные действия
}
// эти сообщения сработают только если диалог в фокусе, т. е. нужно кликнуть по нему
function getmessage(0, WM_KEYDOWN) // если нажата клавиша
{
textout(1, 0, 20, "Нажата клавиша с кодом: "+format(message.wparam), 1);
// тут нужные действия
}
function getmessage(0, WM_SYSKEYDOWN) // если нажата системная клавиша
{
textout(1, 0, 20, "Нажата клавиша с кодом: "+format(message.wparam), 1);
}
CREATE_TIMER(0, 50)
{
if(getkeystate(192)==1)
{
getmouse(x, y);
MoveWindow(gethwnd(0), x, y, 200, 150, 1);
}
}