Вверх ↑
Гость
Ответов: 17029
Рейтинг: 0
#1: 2004-09-11 02:19:02 ЛС | профиль | цитата
Для одной операции пришлось сделать 2 метода из-за кривости запуска окон:

*doFlashCaption=мигает заголовком окна. Идентификатор окна берется из потока или Handle|1|
*doFlashWindow=мигает заголовком этой формы в панели задач|1|

Первое, если передать свой handle, будет мигать только заголовком окна (панель задач без изменений). Вторая не принимает параметов, зато мигает собственной строкой в панели задач. И все из-за того, что строка в панели задач принадлежит не окну формы, а окну главного приложения (Applet.Handle).

Исправить ситуацию нужно так. При запуске приложения нужно скрывать главное окно:

SetWindowLong(Application->Handle, GWL_EXSTYLE, GetWindowLong(Application->Handle, GWL_EXSTYLE) | WS_EX_TOOLWINDOW);
SetWindowLong(Application->Handle, GWL_EXSTYLE, GetWindowLong(Application->Handle, GWL_EXSTYLE) & (0xFFFFFFFF^WS_EX_APPWINDOW));
Application->ShowMainForm = false;
Application->MainForm->Visible = false;

А с главной формой наоборот:

SetWindowLong(Form1->Handle, GWL_EXSTYLE, GetWindowLong(Form1->Handle, GWL_EXSTYLE) | WS_EX_APPWINDOW);
SetWindowLong(Form1->Handle, GWL_EXSTYLE, GetWindowLong(Form1->Handle, GWL_EXSTYLE) & (0xFFFFFFFF^WS_EX_TOOLWINDOW));

Тогда значек в панели задач будет от формы, а не от главного окна. И глюк исчезнет. Так же нужно пропатчить и сам редактор (старые версии редактора работали нормально). Дело в том, что пока не сделать, как написано выше, то создается проблема для утилиты RBTRAY. Она позволяет по клику мыши правой кнопкой на окне минимизации любого окна убрать его в трей. Нормальные окна, у который значек в панели задач совпадает с видимым окном, отлично убираются в трей. А хиасм и его приложения из-за описанной ситуации со значками в трей не убираются. Это не удобно. ВСЕ приложения, кроме Borland'овских, работают нормально. Я уже это писал ранее, может стоит сделать нормально?

http://php.spb.ru/1/hiasm/hiasm_wintool.zip
карма: 0

0