Скрипты для foo_uie_wsh_panel_mod

Список разделов foobar2000 Секреты foobar2000

Описание: Кнопочки, конфиги, секреты, советы.

Сообщение #2621 LUR » 25.07.2019, 16:17

SergPuh.68:LUR, ещё бы знать что такое флаги
Бля. Это константы, признаки, по которым выравнивается текст в данном случае:
Код: Выделить всё
var DT_VCENTER = 0x00000004;
var DT_SINGLELINE = 0x00000020;
var DT_CALCRECT = 0x00000400;
var DT_NOPREFIX = 0x00000800;
Все они объявлены в Flags.txt, необходимые нам просто надо добавить в скрипт и пользоваться.
LUR M
Модератор
Аватара
Откуда: Минск
Репутация: 390
С нами: 12 лет

Сообщение #2622 SergPuh.68 » 25.07.2019, 17:01

LUR, так выбивает когда вставляю ( Панель JScript v1.2.0 от marc2003
Основана на Панели WSH от T.P. Wang )
Снимок экрана (65).jpg
SergPuh.68 M
Аватара
Откуда: Украина
Репутация: 143
С нами: 5 лет 10 месяцев

Сообщение #2623 MC Web » 25.07.2019, 17:42

Если речь про ЭТОТ скрипт - ставим последнюю версию оригинальной панели foo_uie_wsh_panel_mod_1.5.6 и не паримся. Все "старые" скрипты лучше на ней запускать. В настройках панели, чтобы не было ошибок, Безопасный режим должен быть отключен.

Проверил этот же скрипт на foo_jscript_panel_2.2.2 - то же работает...
MC Web
Репутация: 248
С нами: 11 лет 3 месяца

Сообщение #2624 kgena_ua » 26.07.2019, 18:14

"Get Covers (Artwork) radio logos"
version "26072019"


исправление ошибок, мелкие изменения.

немного описания:
Спойлер
Безымянный.png
Безымянный.png (4.18 КБ) Просмотров: 8182


при выборе папки АЛБОМ-2 скрипт прочитает все изображения из папки АЛБОМ-2, из папок 1, 2 и т.д. и из папки COVER.

Порядок сортировки (если файл с таким именем есть):
1 - %artist%.*
2 - %album%.*
3 - %artist% - %album%.*
4 - (или) cover.* front.* folder.* album.*
5 - back.*
6 - cd.*

Get Covers (Artwork) and radio logos 26072019.rar
(12 КБ) Скачиваний: 416
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #2625 AHAPXICT » 31.07.2019, 11:42

kgena_ua, приветствую. Ещё один фидбек на "Get Covers (Artwork) radio logos". Если из контекстного меню выбрать поиск картинки на LastFM и нажать "отмена" в открытом окне выбора альбома, то после перемещения курсора мыши выдаст ошибку. Я уже очень долго не занимался скриптами и всё что знал и не знал забыл, короче с наскока не могу разобраться. Если данную ошибку проигнорировать через catch(e), то всё равно скрипт продолжает выполнять процедуру поиска и т.д. И да, если альбома нет на LastFM, то выдаёт стандартную предупреждающую табличку nothing found for, ну и на ХР тоже так как просто не может подключится к серверу.
Код: Выделить всё
JScript Panel v2.2.2.2 (Get Covers (Artwork) radio logos v26072019 by kgena_ua)
Ошибка выполнения JavaScript:
Не удалось получить свойство "replace" ссылки, значение которой не определено или является NULL
File: <main>
Line: 1390, Col: 5
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 11 лет

Сообщение #2626 AHAPXICT » 05.08.2019, 09:06

Что-то тихо в теме. Есть у кого нибудь такая ошибка или это только у меня?
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 11 лет

Сообщение #2627 kutuzof » 05.08.2019, 09:34

AHAPXICT:Есть у кого нибудь такая ошибка или это только у меня?
Приветствую :beer: ! У меня тоже самое.
kutuzof M
Аватара
Откуда: г. Орёл, Россия
Репутация: 256
С нами: 8 лет 2 месяца

Сообщение #2628 AHAPXICT » 05.08.2019, 09:53

kutuzof, Приветствую :beer: Ага, понял. Спс за ответ. Были планы сегодня, пока на работе, заменить в сборках старый скрипт на этот. Ну да ладно, локализую ошибку, короче и так пойдёт.
P.S. В общем больше нечего не придумал с прошлого раза как проигнорировать ошибку, но по крайней мере без AW))
Код: Выделить всё
function clean(n) {
    try{
    var tmp = n.replace(/\./g, "").replace(/\//g, "-").replace(/\:/g, "-").replace(/\*/g, "x").replace(/\?/g, "").replace(/\"/g, "''").replace(/\</g, "_").replace(/\>/g, "_").replace(/\|/g, "").replace(/\\/g, "");
    return tmp.replace(/^\s+|\s+$/g, "").substr(0, 150);
    }catch(e){};
}
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 11 лет

Сообщение #2629 kgena_ua » 11.08.2019, 17:41

AHAPXICT:Если из контекстного меню выбрать поиск картинки на LastFM и нажать "отмена"
Приветствую.
Замените функцию
Код: Выделить всё
function get_lastFM_album_img(t_path, t_artist, t_album){
    if (!metadb || !t_album || !t_artist) return; 

    t_artist = trim(t_artist);
    t_album = trim(t_album);

    var nl = "\" + chr(10) + \"";
    var tmp_album = input_box("Search album image for" + nl + t_artist, t_album, "Foobar 2000");
   
    if (!/\S/.test(tmp_album)) get_lastFM_album_img(t_path, t_artist, t_album);

    if (tmp_album && /\S/.test(tmp_album)){
        search_lastFM_album_img(t_path, t_artist, tmp_album);
    }
}
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #2630 SergPuh.68 » 11.08.2019, 22:38

Подскажите как в этом скрипте Бегущая строка поменять цвет фона на 30,30,30 и цвет текста на 230,230,230 ?
Код: Выделить всё
var DT_CENTER = 0x00000001;
var DT_RIGHT = 0x00000002;
var DT_VCENTER = 0x00000004;
var DT_WORDBREAK = 0x00000010;
var DT_CALCRECT = 0x00000400;
var DT_NOPREFIX = 0x00000800;
var DT_WORD_ELLIPSIS = 0x00040000;
var DT_SINGLELINE = 0x00000020;

ColourTypeCUI = {
    text: 1,
    selection_text: 1,
    inactive_selection_text: 2,
    background: 3,
    selection_background: 4,
    inactive_selection_background: 5,
    active_item_frame: 6
};
FontTypeCUI = {
    items: 0,
    labels: 1
};
ColourTypeDUI = {
    text: 0,
    background: 1,
    highlight: 2,
    selection: 3
};
FontTypeDUI = {
    defaults: 0,
    tabs: 1,
    lists: 2,
    playlists: 3,
    statusbar: 4,
    console: 5
};

var instancetype = window.InstanceType;
var g_font = null;
var _ww = 0, _wh = 0;
var g_textcolor = 0;
var g_backcolor = 0;

function get_font() {
    if (instancetype == 0) { // CUI
        g_font = window.GetFontCUI(FontTypeCUI.items);
    } else if (g_instancetype == 1) { // DUI
        g_font = window.GetFontDUI(FontTypeDUI.defaults);
    } else {
        // None
    }
}
get_font();

function get_colors() {
    if (instancetype == 0) { // CUI
        g_textcolor = window.GetColourCUI(ColourTypeCUI.text);
        g_backcolor = window.GetColourCUI(ColourTypeCUI.background);
    } else if (g_instancetype == 1) { // DUI
        g_textcolor = window.GetColourDUI(ColourTypeDUI.text);
        g_backcolor = window.GetColourDUI(ColourTypeDUI.background);
    } else {
        // None
    }
}
get_colors();

function on_size() {
    _ww = window.Width;
    _wh = window.Height;
    _textPos = 0;
}

function GetInfoText() {
    var preferNowPlaying = window.GetProperty("Prefer now playing", true);   
    var title = "";
    if(window.GetProperty("Artist", false)) title += "%artist% ";
    if(window.GetProperty("Title", false)) title += "● %title% ";
    if(window.GetProperty("Album", false)) title += "● %album% '('%date%')' ";
    if(window.GetProperty("Codec", true)) title += "● %codec% ";
    if(window.GetProperty("Bitrate", true))
        title += preferNowPlaying && fb.IsPlaying ? fb.TitleFormat("● %bitrate% kbps ").Eval() : "● %bitrate% kbps ";
    if(window.GetProperty("Sample rate", true)) title += "● %samplerate% Hz ";
    if(window.GetProperty("Channels", true)) title += "● $caps(%channels%)";
    if(title[0] == '●') title = title.substr(2);   
    var metaDb = null;
    if(preferNowPlaying && fb.IsPlaying) metaDb = fb.GetNowPlaying(); else metaDb = fb.GetFocusItem();
    if(!metaDb) return "";
    return fb.TitleFormat(title).EvalWithMetadb(metaDb);
}

var _text = GetInfoText();
var _textPos = 0;
var _timer = null;

function StartCrawline() {
    if(_timer != null) StopCrawline();
    _timer = window.SetInterval(function(){
        _textPos -= 20;
        window.Repaint();
    }, 1000);
}
function StopCrawline() {
    if(_timer == null) return;
    window.ClearInterval(_timer);
    _timer = null;
    window.Repaint();
}
if(window.GetProperty("Crawline", false)) StartCrawline();

function on_paint(gr) {
    gr.FillSolidRect(0, 0, _ww, _wh, g_backcolor);
    if(window.GetProperty("Crawline", false))
    {
        var textWidth = gr.CalcTextWidth(_text, g_font);
        gr.GdiDrawText(_text, g_font, g_textcolor, _textPos, 0, textWidth, _wh, DT_VCENTER | DT_SINGLELINE | DT_CALCRECT | DT_NOPREFIX);
        if(textWidth <= _ww)
        {
            if(_textPos < 0)
                gr.GdiDrawText(_text, g_font, g_textcolor, _textPos + _ww, 0, textWidth, _wh, DT_VCENTER | DT_SINGLELINE | DT_CALCRECT | DT_NOPREFIX);
            if(_textPos <= -textWidth) _textPos += _ww;
        }
        else
        {
            if(_textPos + textWidth + 50 < _ww)
                gr.GdiDrawText(_text, g_font, g_textcolor, _textPos + textWidth + 50, 0, textWidth, _wh, DT_VCENTER | DT_SINGLELINE | DT_CALCRECT | DT_NOPREFIX);
            if(_textPos <= -textWidth) _textPos = 50;           
        }
    }
    else
        gr.GdiDrawText(_text, g_font, g_textcolor, 0, 0, _ww - 2, _wh, DT_VCENTER | DT_RIGHT | DT_WORDBREAK | DT_CALCRECT | DT_NOPREFIX);
}

function on_playback_new_track(metadb) {
    if(window.GetProperty("Prefer now playing", true))
    {
        _text = GetInfoText();
        window.Repaint();
    }
}
function on_playback_time(time) {
    if(window.GetProperty("Prefer now playing", true))
    {
        _text = GetInfoText();
        window.Repaint();
    }
}
function on_selection_changed(metadb) {
    if(!window.GetProperty("Prefer now playing", true) || !fb.IsPlaying)
    {
        _text = GetInfoText();
        window.Repaint();
    }
}

function on_font_changed() {
    get_font();
    window.Repaint();
}

function on_colors_changed() {
    get_colors();
    window.Repaint();
}

var MF_ENABLED = 0x00000000;   

function on_mouse_rbtn_up(x, y, mask) {
   
    var menu = window.CreatePopupMenu();   
   
    menu.AppendMenuItem(MF_ENABLED, 10, "Исполнитель");
    menu.AppendMenuItem(MF_ENABLED, 20, "Название");
    menu.AppendMenuItem(MF_ENABLED, 30, "Альбом");
    menu.AppendMenuSeparator();
    menu.AppendMenuItem(MF_ENABLED, 40, "Кодек");
    menu.AppendMenuItem(MF_ENABLED, 50, "Битрейт");   
    menu.AppendMenuItem(MF_ENABLED, 60, "Частота дискретизации");   
    menu.AppendMenuItem(MF_ENABLED, 70, "Каналы");
    menu.AppendMenuSeparator();
    menu.AppendMenuItem(MF_ENABLED, 80, "Предпочитать проигрываемый");
    menu.AppendMenuItem(MF_ENABLED, 81, "Следовать за выделенным треком");
    menu.AppendMenuSeparator();
    menu.AppendMenuItem(MF_ENABLED, 90, "Бегущая строка");
   
    menu.CheckMenuItem(10, window.GetProperty("Artist", false));
    menu.CheckMenuItem(20, window.GetProperty("Title", false));
    menu.CheckMenuItem(30, window.GetProperty("Album", false));

    menu.CheckMenuItem(40, window.GetProperty("Codec", true));
    menu.CheckMenuItem(50, window.GetProperty("Bitrate", true));
    menu.CheckMenuItem(60, window.GetProperty("Sample rate", true));
    menu.CheckMenuItem(70, window.GetProperty("Channels", true));

    menu.CheckMenuRadioItem(80, 81, window.GetProperty("Prefer now playing", true) ? 80 : 81);
    //menu.EnableMenuItem(window.GetProperty("Prefer now playing", true) ? 80 : 81, 1);

    menu.CheckMenuItem(90, window.GetProperty("Crawline", false));

    var ret = menu.TrackPopupMenu(x, y);
   
    switch(ret)
    {
        case 10:
            window.SetProperty("Artist", !window.GetProperty("Artist"));
            break;
        case 20:
            window.SetProperty("Title", !window.GetProperty("Title"));
            break;
        case 30:
            window.SetProperty("Album", !window.GetProperty("Album"));
            break;

        case 40:
            window.SetProperty("Codec", !window.GetProperty("Codec"));
            break;
        case 50:
            window.SetProperty("Bitrate", !window.GetProperty("Bitrate"));
            break;
        case 60:
            window.SetProperty("Sample rate", !window.GetProperty("Sample rate"));
            break;
        case 70:
            window.SetProperty("Channels", !window.GetProperty("Channels"));
            break;

        case 80:
            window.SetProperty("Prefer now playing", true);
            break;
        case 81:
            window.SetProperty("Prefer now playing", false);
            break;

        case 90:
            window.SetProperty("Crawline", !window.GetProperty("Crawline"));
            if(window.GetProperty("Crawline", false)) StartCrawline(); else StopCrawline();
            break;

        default:
            break;
    }
   
   menu.Dispose();
   
    _text = GetInfoText();
    window.Repaint();
   
   return true;
}

function on_notify_data(name, info) {
    if(name != "Mini view") return;
    if(window.GetProperty("Mini view", false) == info) return;
    window.SetProperty("Mini view", info);
    StopCrawline();
    if(info) {
        var prevSetting = window.GetProperty("Previous Crawline", true);
        window.SetProperty("Previous Crawline", window.GetProperty("Crawline", false));
        window.SetProperty("Crawline", prevSetting);
        prevSetting = window.GetProperty("Previous Artist", true);
        window.SetProperty("Previous Artist", window.GetProperty("Artist", false));
        window.SetProperty("Artist", prevSetting);
        prevSetting = window.GetProperty("Previous Title", true);
        window.SetProperty("Previous Title", window.GetProperty("Title", false));
        window.SetProperty("Title", prevSetting);
        prevSetting = window.GetProperty("Previous Album", true);
        window.SetProperty("Previous Album", window.GetProperty("Album", false));
        window.SetProperty("Album", prevSetting);
        prevSetting = window.GetProperty("Previous Codec", false);
        window.SetProperty("Previous Codec", window.GetProperty("Codec", true));
        window.SetProperty("Codec", prevSetting);
        prevSetting = window.GetProperty("Previous Bitrate", false);
        window.SetProperty("Previous Bitrate", window.GetProperty("Bitrate", true));
        window.SetProperty("Bitrate", prevSetting);
        prevSetting = window.GetProperty("Previous Sample rate", false);
        window.SetProperty("Previous Sample rate", window.GetProperty("Sample rate", true));
        window.SetProperty("Sample rate", prevSetting);
        prevSetting = window.GetProperty("Previous Channels", false);
        window.SetProperty("Previous Channels", window.GetProperty("Channels", true));
        window.SetProperty("Channels", prevSetting);
        prevSetting = window.GetProperty("Previous Prefer now playing", true);
        window.SetProperty("Previous Prefer now playing", window.GetProperty("Prefer now playing", true));
        window.SetProperty("Prefer now playing", prevSetting);
    }
    else {
        var prevSetting = window.GetProperty("Previous Crawline", false);
        window.SetProperty("Previous Crawline", window.GetProperty("Crawline", true));
        window.SetProperty("Crawline", prevSetting);
        prevSetting = window.GetProperty("Previous Artist", false);
        window.SetProperty("Previous Artist", window.GetProperty("Artist", true));
        window.SetProperty("Artist", prevSetting);
        prevSetting = window.GetProperty("Previous Title", false);
        window.SetProperty("Previous Title", window.GetProperty("Title", true));
        window.SetProperty("Title", prevSetting);
        prevSetting = window.GetProperty("Previous Album", false);
        window.SetProperty("Previous Album", window.GetProperty("Album", true));
        window.SetProperty("Album", prevSetting);
        prevSetting = window.GetProperty("Previous Codec", true);
        window.SetProperty("Previous Codec", window.GetProperty("Codec", false));
        window.SetProperty("Codec", prevSetting);
        prevSetting = window.GetProperty("Previous Bitrate", true);
        window.SetProperty("Previous Bitrate", window.GetProperty("Bitrate", false));
        window.SetProperty("Bitrate", prevSetting);
        prevSetting = window.GetProperty("Previous Sample rate", true);
        window.SetProperty("Previous Sample rate", window.GetProperty("Sample rate", false));
        window.SetProperty("Sample rate", prevSetting);
        prevSetting = window.GetProperty("Previous Channels", true);
        window.SetProperty("Previous Channels", window.GetProperty("Channels", false));
        window.SetProperty("Channels", prevSetting);
        prevSetting = window.GetProperty("Previous Prefer now playing", true);
        window.SetProperty("Previous Prefer now playing", window.GetProperty("Prefer now playing", true));
        window.SetProperty("Prefer now playing", prevSetting);
    }

    _text = GetInfoText();
    if(window.GetProperty("Crawline", false)) StartCrawline();
}
SergPuh.68 M
Аватара
Откуда: Украина
Репутация: 143
С нами: 5 лет 10 месяцев

Сообщение #2631 kgena_ua » 25.08.2019, 22:03

"Biography, albums, title, similar artist info.www.last.fm."
version "24082019"


- удаление "истории загрузок" - меню;
- удаление артиста из "истории загрузок" - меню, кл. DELETE;
- выбор из списка "истории загрузок" - лев.кл.мыши двойной клик, кл. ENTER.
- используются кл. UP, DOWN, HOME, END, PAGE UP, PAGE DOWN;
- мелкие исправления.

kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #2632 seriousstas » 26.08.2019, 01:51

SergPuh.68:Подскажите как в этом скрипте Бегущая строка поменять цвет фона
Берутся из Columns ui:
g_textcolor = window.GetColourCUI(ColourTypeCUI.text);
g_backcolor = window.GetColourCUI(ColourTypeCUI.background);
или пиши свои..
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 9 месяцев

Сообщение #2633 Aum » 09.09.2019, 17:26

Приветствую всех.
Подскажите, не работает в скрипте команда:
fb.RunMainMenuCommand ("View/Maximize/Restore");
Плагин foo_run стоит, по нажатию хоткея (если привязать на это действие)-работает эта команда.
Возможно ли в скрипте сделать кнопку развренуть на максимум окно/вернуть назад?
Спасибо!
Aum M
Аватара
Репутация: 23
С нами: 14 лет 8 месяцев

Сообщение #2634 AHAPXICT » 09.09.2019, 17:58

Aum, на WSH работает как и раньше, только что проверил. Первое что выдал гугл по запросу мой старый пост в этой теме.
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 11 лет

Сообщение #2635 Aum » 10.09.2019, 15:04

AHAPXICT:на WSH работает как и раньше, только что проверил
Спасибо. Заработало с function on_mouse_lbtn_up, а c function on_mouse_lbtn_down - не работало.
Еще вопрос, можно ли как-то узнать состояние главного окна фубара: Развернуто на максимум или нет? Хочу отрисовать 2 положения кнопки для View/Maximize/Restore.
Aum M
Аватара
Репутация: 23
С нами: 14 лет 8 месяцев

Сообщение #2636 kgena_ua » 11.09.2019, 12:36

Aum:можно ли как-то узнать состояние главного окна фубара
Нужны библиотеки (в папке с Фубаром):
assemblies.rar
(130.89 КБ) Скачиваний: 311

и такой скрипт:
Код: Выделить всё

var lib_path = fb.FoobarPath + "assemblies\\";
var autoItX3, interface_name, class_name;
var libs_exist = utils.FileTest(lib_path + "AutoItX3.dll","e") && utils.FileTest(lib_path + "dynwrapx.dll","e");
var window_state;

if (libs_exist) {
    try {
        autoItX3 = new ActiveXObject("AutoItX3.Control");
    } catch(e) {}

    if (window.InstanceType == 0){                     
        interface_name = "CUI";
        class_name = "[CLASS:{E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}]";
    } else if (window.InstanceType == 1) {                      
        interface_name = "DUI";
        class_name = "[CLASS:{97E27FAA-C0B3-4b8e-A693-ED7881E99FC1}]";      
    }   
}

function get_window_states(interface_name) {
    if (!libs_exist) return;
    var state = autoItX3.WinGetState(class_name);
    if((state & 1)==1) result = 0;      // exists
    if((state & 2)==2) result = 1;      // visible
    if((state & 4)==4) result = 2;      // enabled
    if((state & 8)==8) result = 3;      // active
    if((state & 16)==16) result = 4;    // minimized
    if((state & 32)==32) result = 5;    // maximized
    return result;
}

function on_mouse_lbtn_down(x, y) {
    window_state = get_window_states(interface_name);
    // если window_state == 5, окно развернуто на максимум
}
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #2637 Marakobes » 15.09.2019, 23:16

kgena_ua, привет, Biography, albums, title, similar artist info www.last.fm 24082019 не скачивает более 6-ти фото, даунлоад лимит я выставил 30, что пошевелить?
И еще, если присутствует Album Artist вместе с Artist (т.е. The Rolling Stones и The Rolling Stones feat. Brad Paisley) то скрипт скачивает в папку temp всякую хрень по тэгам The Rolling Stones feat. Brad Paisley, как бы от этого избавиться? Правда иногда бывает не заполнено поле Album Artist, тогда вообще ничего не скачает что-ли? Какое нибудь условие что-ли прописать, мол если есть Album Artist вместе с Artist - то загружаем только Album Artist и игнорируем Artist
Marakobes
Репутация: 1
С нами: 12 лет 3 месяца

Сообщение #2638 kgena_ua » 16.09.2019, 21:58

Marakobes:24082019 не скачивает более 6-ти фото, даунлоад лимит я выставил 30, что пошевелить?
Привет.
Скачивает, проверил
Спойлер
Безымянный.jpg

Если артист сохранен - Refresh. Намеренно не делал проверку на количество скачанных файлов после увеличения лимита, т.к. у артиста может быть всего пару изображений на сайте, и тогда скрипт будет постоянно пытаться загрузить изображения по лимиту. Т.о. если изменяем лимит - удалям старые загрузки, или Refresh для каждого артиста.

Marakobes:то загружаем только Album Artist и игнорируем Artist
Это есть
Безымянный 2.png
Безымянный 2.png (8.83 КБ) Просмотров: 6799
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #2639 Aum » 16.09.2019, 22:54

kgena_ua, спасибо-заработало-разобрался!
Подскажите простыми словами или ткните где почитать, как заставить код кнопки например (function on_mouse_move(x,y), или клик левый или правый) реагировать на определенный участок панели, т.е. задать координаты х и у? Спасибо!
Aum M
Аватара
Репутация: 23
С нами: 14 лет 8 месяцев

Сообщение #2640 kgena_ua » 17.09.2019, 11:56

Aum:реагировать на определенный участок панели, т.е. задать координаты х и у
Код: Выделить всё
    if (x >= значение && x <= значение && y >= значение && y <= значение){
        // тогда что-то делаем
    }
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Пред.След.

Вернуться в Секреты foobar2000