Orion9

|
Posted: Fri Jul 10, 2026 00:16 Post subject: |
|
|
| sa wrote: | | На первый взгляд пункты работают! |
Вроде бы! Хотелось бы в это верить
Еще не успел хорошо протестировать, но заметил, что есть проблемы с обновлением окна панели. Видимо, cm_ReloadBarIcons не расчитана на то, что при обновлении значков может меняться количество строк, поэтому пришлось заменить на cm_VisButtonBar. Но я это сделал для только для новых пунктов, а при откатах все еще может проявиться. Изменение размеров окна тотала временно помогает, но надо избавиться от этой проблемы.
Юникодные бары тоже еще не проверял, не успел просто. Вообще, могут быть какие-то ошибки.
Я еще не решил, как сделать удаление и копирование значков кнопок. Вроде напрашивается использование Alt, но не хочется целиком занимать эту кнопку. Наверное, лучше следить за ее состоянием при сбросе.
Копирование значка может пригодиться, если нужно посмотреть, как будет смотреться значок на кнопке, т.е. примерить его. Помню, когда слез со сборки от SamLabs (респект автору и его сайту) и начал подстраивать все под себя, самым сложным для меня было создать панель инструментов, чтобы все значки нравились и подходили по стилю (имхо, это и сейчас самое сложное). Приходится делать много примерок, много проб и ошибок, много различных комбинаций. Это изнуряет, поскольку ТС плохо к этому приспособлен.
P.S. Надо сделать еще сохранение панели. Думал, сейчас по-быстренькому спрошу у ИИ готовый код для Autohotkey и переведу его на Autorun, а он мне, зараза, нерабочий код подсунул, пришлось пересчитывать за ним структуру
 ИИ | Code: | file := Buffer(1024 * 2, 0)
filter := "Text Files (*.txt)`0*.txt`0All Files (*.*)`0*.*`0`0"
filterBuf := Buffer(StrPut(filter, "UTF-16") * 2)
StrPut(filter, filterBuf, "UTF-16")
; OPENFILENAMEW size (x64)
ofn := Buffer(152, 0)
NumPut("UInt", ofn.Size, ofn, 0)
NumPut("Ptr", A_ScriptHwnd, ofn, 8)
NumPut("Ptr", filterBuf.Ptr, ofn, 24)
NumPut("Ptr", file.Ptr, ofn, 48)
NumPut("UInt", 1024, ofn, 56)
NumPut("UInt", 0x00000002 | 0x00000800, ofn, 80)
NumPut("Ptr", StrPtr("txt"), ofn, 96)
if DllCall("comdlg32\GetSaveFileNameW", "Ptr", ofn)
MsgBox StrGet(file, "UTF-16")
else
MsgBox "Cancelled or error." |
 Коррекция | Code: | NumPut("UInt", 0x00000002 | 0x00000800, ofn, 96)
NumPut("Ptr", StrPtr("txt"), ofn, 104)
|
В обшем, сделаем. Правда придется еще и для х32 отдельно считать, поскольку этот код только для х64. |
|