Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Autorun 
Author Message
Orion9



PostPosted: Tue Jun 24, 2025 00:30    Post subject: Reply with quote

Loopback wrote:
Не стал делать новую версию, заменил во вчерашней

Теперь всё работает и в 64-битной версии, класс! А с вызовом функций по адресам теперь ещё и быстрее должно быть, хотя визуально это сложно отличить.
Loopback wrote:
подсказка Autorun не использует TToolTip, в основе лежит static

Да, я видел. Ещё по этому поводу хотел спросить у вас, как вы расчет размеров окна делаете, но не стал лишний раз донимать ) Ведь текст static можно легко заменить через WinSetText, например:
Code:
Local hWnd = LAST_HINT_WINDOW
If hWnd > 0 Then
   If WinGetState(1, hWnd) Then
      WinSetText("Тест...." & auCRLF & "Загрузка"& auCRLF & "Загрузка....", hWnd)
      WinSetPos("", "", "", 50, 2, hWnd)     
      WinRedraw(2, hWnd)
   EndIf   
Endif

А вот изменить размер окна под новый текст уже сложнее. Здесь с метрикой шрифта надо заморачиваться, как пишут на сайте microsoft:
Quote:
The system displays as much text as it can in the static control and clips whatever does not fit. To calculate an appropriate size for the control, retrieve the font metrics for the text. For more information about fonts and font metrics, see Fonts and Text.
https://learn.microsoft.com/en-us/windows/win32/controls/about-static-controls#text-static-control

Но с вызовом SetClassLong я хотел добиться другого, если это, конечно, вообще возможно.

Я хотел как раз вот этого:
Loopback wrote:
SetClassLong... меняет параметры класса для окон, которые будут созданы после её использования

Я хотел поменять оконную функцию у гислеровской подсказки, т.е. у всего класса подсказок, называющихся TToolTip. Как я понял, гислеровская подсказка - это обычное дочернее окно, в которое он рисует текст функцией TextOut, превращая его в растровое изображение. Извлечь из этого какую-то пользу вряд ли возможно при таком раскладе, но я просто хотел посмотреть, будет ли работать сабклассинг с функцией обратного вызова, установленной через SetClassLong, хотя это не так важно.

Зато проверил Callback на диалоге задач )
 Hidden text

Поскольку под x64 нужно отдельно структуру высчитывать, я не стал с этим заморачиваться. Но на 32-битном ТС всё отлично работает. Прикольный муляж, кстати, получился )

Так что Callback нормально работает. Спасибо за багофикс. Это открывает теперь большие возможности.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group