AIMP Forum
AIMP for Windows => Дополнения / Addons => Разработка / Development => Topic started by: Алексей Долматов on August 20, 2019, 00:51:06
-
В справке SDK for AIMP v4.60, build 2144 последняя новость про билд 2130.
По дате файлов тоже не нашёл сведений по изменениям для билда 2142 и выше.
В связи с этим пару вопросов:
1. Будет ли предоставлен API-запрос для получения ответа (например, 0-авто, 1-ночной вкл, 2-выкл) состояния режима;
2. Будет ли какой-то цвет фона переопределяться, т.е. считаться "прозрачным" или нет, при отсутствии в плагине метки о совместимости с ночным режимом.
-
AIMPUI_FORM_PROPID_STYLE
Если плагин построен на apiGUI - он заработает сам, режима совместимости нет.
-
AIMPUI_FORM_PROPID_STYLE
Если плагин построен на apiGUI - он заработает сам, режима совместимости нет.
Через apiGui можно нарисовать форму для OptionsDialog?
-
Через apiGui можно нарисовать форму для OptionsDialog?
Можно "нарисовать" любую форму.
-
Можно "нарисовать" любую форму.
А можно пример? В демках sdk как всегда ничего интересного.
-
А можно пример? В демках sdk как всегда ничего интересного.
Прям такого примера нет, но есть пример как делать диалог настроек: OptionFrameDemo. В нем, главное, нужно обратить внимание на метод:
function TAIMPDemoPluginOptionFrame.CreateFrame(ParentWnd: HWND): HWND;
var
R: Trect;
begin
FFrame := TfrmOptionFrameDemo.CreateParented(ParentWnd);
FFrame.OnModified := HandlerModified;
GetWindowRect(ParentWnd, R);
OffsetRect(R, -R.Left, -R.Top);
FFrame.BoundsRect := R;
FFrame.Visible := True;
Result := FFrame.Handle;
end;
Вот вместо TfrmOptionFrameDemo.CreateParented(ParentWnd); надо использовать IAIMPServiceUI.CreateForm с указанием OwnerWindow и флага AIMPUI_SERVICE_CREATEFORM_FLAGS_CHILD. Как бы и все.
-
Вот вместо TfrmOptionFrameDemo.CreateParented(ParentWnd); надо использовать IAIMPServiceUI.CreateForm с указанием OwnerWindow и флага AIMPUI_SERVICE_CREATEFORM_FLAGS_CHILD. Как бы и все.
А handle какой возвращать?
-
А handle какой возвращать?
Только что созданной через GUI API формы
-
Только что созданной через GUI API формы
Ткните пальцем на этот метод, который возвращает handle окна. Нашел только у IAIMPUIWinControl, который создается с помощью <IAIMPServiceUI>.CreateControl.
-
IAIMPUIForm наследуется как раз от IAIMPUIWinControl
-
Artem, можете сказать как Вы цепляете кнопку авторизоваться в Last.fm, через ualClient?
У меня не получается вывести кнопку. Код примерно такой:
Форма(BORDERICONS = 0; BORDERSTYLE = NONE)
Категория(Владелец и родитель - Форма; Placement - ualClient(остальные поля 0))
Гроупбокс(В: Форма; Р: Категория; Placement - ualTop; Constraints - Height(min/max) - 110)
Кнопка(В: Форма; Р: Гроупбокс; Placement - ualRight; Constraints 25, 100, 25, 100)
Изображение(В: Форма Р: Гроупбокс; Placement - ualLeft; Constraints - 100, 100, 100, 100)
Изображение отображается нормально, но так и не понял как нормально сделать отступы если Alignment != ualNone || ualClient.
(https://www.aimp.ru/forum/index.php?action=dlattach;topic=63315.0;attach=58799)
Изображение вскоре скорее всего удалю, но хотелось бы попробовать обернуть в какую-нибудь рамку, чем-нибудь её можно обернуть? Хотел попробовать Bevel, но он не наследуется от WinControl.
И еще кое-что, что похожее на баг. IAIMPImage.LoadFromFile вызывает исключение если файл не найден, а должен же вернуть что-то отличное от S_OK?
Вызвано исключение по адресу 0x751D3442 (KernelBase.dll) в AIMP.exe: 0x0EEDFADE (параметры: 0x0118C0FE, 0x06272EA0, 0x00000000, 0x062D0118, 0x062D0118, 0x0019F794, 0x0019F76C).
-
У меня не получается вывести кнопку. Код примерно такой:
У меня такой подход работает. Можете показать оригинальный код?
так и не понял как нормально сделать отступы если Alignment != ualNone || ualClient.
Через TAIMPUIControlPlacement.AlignmentMargins
Изображение вскоре скорее всего удалю, но хотелось бы попробовать обернуть в какую-нибудь рамку, чем-нибудь её можно обернуть? Хотел попробовать Bevel, но он не наследуется от WinControl.
Можно тем же GroupBox-ом.
И еще кое-что, что похожее на баг. IAIMPImage.LoadFromFile вызывает исключение если файл не найден, а должен же вернуть что-то отличное от S_OK?
Да, возникает исключение EFileNotFound вместо E_FAIL. Поправил.
-
У меня такой подход работает. Можете показать оригинальный код?
https://gist.github.com/Appendme/75ac81bfaf82a4ee4c86e5c255d63903
Upd. Возможно проблема в bounds.
Если что при таком вызове m_userBox->SetPlacement({ ualTop }); передается пустой объект TAIMPUIControlPlacement с инициализированным полем Alignment, а все остальные поля 0.
https://gist.github.com/Appendme/9ba0fa4f978cca772f4ab9feaf1ead98
Можете объяснить почему при такой разметке кнопка выглядит так:
(https://www.aimp.ru/forum/index.php?action=dlattach;topic=63315.0;attach=58816)
Я же явно указал максимальный и минимальный размер кнопки. Ко всему этому контолы в GBox берут отступы сверху от текста или от полосы?
И если не сложно напишите как её правильно разместить по центру и в правом углу(если слева будет какой-нибудь еще контрол, например Image).
-
Контолы в GBox берут отступы сверху от текста или от полосы?
Интересует только этот вопрос. И кстати благодарю Вас за отсутствие конструкторов TAIMPUIControlPlacement (https://gist.github.com/Appendme/7500f1bf52e34bf82a49e52e2e15f755), которые есть в апи для делфи.
-
Интересует только этот вопрос. И кстати благодарю Вас за отсутствие конструкторов TAIMPUIControlPlacement (https://gist.github.com/Appendme/7500f1bf52e34bf82a49e52e2e15f755), которые есть в апи для делфи.
От текста