Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.23;
Скачать: CL | DM;

Вниз

Отследить изменение схемы оформления Window   Найти похожие ветки 

 
Le][a   (2004-04-15 18:37) [0]

Добрый вечер, Мастера! Вопрос такой: какое сообщение нужно ловить, чтобы отследить изменение схемы оформления Windows? (это которая в свойствах экрана. Всякие там "Баклажан", "Ель", "Кирпичная" и пр. Или "Серебристая", "Оливковая", "Синяя" - это если в WinXp). Заранее благодарен.


 
Le][a   (2004-04-15 19:52) [1]

Неужели никто не знает?


 
VMcL ©   (2004-04-15 20:14) [2]

WM_SETTINGCHANGE
?


 
Le][a   (2004-04-15 20:35) [3]

Тьфу-ты, дурная моя голова! Я-то обрабатывал WM_DISPLAYCHANGE! :)) Вот начеркал пару строк. Так должно быть? (извиняюсь, конечно, просто хочется себя проверить ;))



unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs;

type
 TForm1 = class(TForm)
 private
   { Private declarations }
   procedure WMSETTINGCHANGE(var message: TMessage); message WM_SETTINGCHANGE;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMSETTINGCHANGE(var message: TMessage);
begin
  //лалала
  inherited;
end;

end.


 
Игорь Шевченко ©   (2004-04-15 20:39) [4]

скорее, WM_SYSCOLORCHANGE


 
Le][a   (2004-04-15 20:57) [5]

> Игорь Шевченко ©   (15.04.04 20:39) [4]

Пишу то же самое, что и в [3], заменяя *SETTINGCHANGE на *SYSCOLORCHANGE - система виснет (Win 98).


 
Игорь Шевченко ©   (2004-04-15 21:13) [6]

unit main;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs;

type
 TfMain = class(TForm)
 private
   procedure WMSysColorChange (var Message: TMessage);
     message WM_SYSCOLORCHANGE;
 end;

var
 fMain: TfMain;

implementation

{$R *.dfm}

{ TfMain }

procedure TfMain.WMSysColorChange(var Message: TMessage);
begin
 inherited;
 ShowMessage("A change is made to system color settings");
end;

end.


Сообщение появляется после смены схемы в панели управления.
Windows 2000


 
Le][a   (2004-04-15 21:41) [7]

> Игорь Шевченко ©   (15.04.04 21:13) [6]

Win 98 стабильно виснет. После убиения Project1.exe схема меняется, работоспособность системы восстанавливается. А вот WM_SETTINGCHANGE обрабатывается без проблем. Что это может быть? Система?


 
Игорь Шевченко ©   (2004-04-15 21:50) [8]

[7] Le][a   (15.04.04 21:41)

На Win9x не могу протестировать - нету их у меня. Судя по тому, что в документации не указано никакой отличительной особенности обработки этого сообщения под Win9x, проблема в чем-то другом. Мой код, скопированный один в один тоже виснет ?


 
Le][a   (2004-04-15 22:31) [9]

> Игорь Шевченко ©   (15.04.04 21:50) [8]
> Мой код, скопированный один в один тоже виснет ?

Да.


 
Dimaxx ©   (2004-04-15 22:36) [10]

Нифига! Ловить нужно WM_THEMECHANGED ($031A)!


 
Dimaxx ©   (2004-04-15 22:37) [11]

В смысле, под ХРюшей...


 
Dimaxx ©   (2004-04-15 22:41) [12]

Тьфу, это я про темы. Пардон!


 
Rouse_ ©   (2004-04-15 22:52) [13]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs;

type
 TForm1 = class(TForm)
 private
   procedure WMSysColorChange (var Message: TMessage);
    message WM_SYSCOLORCHANGE;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.WMSysColorChange(var Message: TMessage);
begin
 Caption := "qwe";
 Inherited;
end;

end.


 
Le][a   (2004-04-16 10:31) [14]

> Rouse_ ©   (15.04.04 22:52) [13]

Система виснет.


 
Le][a   (2004-04-16 10:45) [15]

MSDN:

WM_SYSCOLORCHANGE

The WM_SYSCOLORCHANGE message is sent to all top-level windows when a change is made to a system color setting.

 Windows NT/2000/XP: Included in Windows NT 3.1 and later.
 Windows 95/98/Me: Included in Windows 95 and later.

Никаких, как уже сказал Игорь Шевченко, отличительных особенностей обработки в 98 нет.


 
Игорь Шевченко ©   (2004-04-16 17:41) [16]

Le][a   (16.04.04 10:45)
Могу посоветовать только полазить отладчиком, с включенной опцией Use Debug DCU и указанием пути к файлам VCL в опциях проекта.

У меня Win9x нету, помочь разобраться не смогу.


 
Rouse_ ©   (2004-04-16 20:05) [17]

> [14] Le][a   (16.04.04 10:31)
Именно в моем варианте виснет?
У меня 98, без проверки я не отправлял код...


 
Rouse_ ©   (2004-04-16 20:05) [18]

В смысле если б не проверил, не отбравил бы :)


 
Le][a   (2004-04-16 21:36) [19]

> Rouse_ ©   (16.04.04 20:05) [17]
> Именно в моем варианте виснет?

Дико извиняюсь, Саш. Висло когда я писал такую конструкцию:


procedure TForm1.WMSysColorChange(var Message: TMessage);
begin
ShowMessage("qwe");
Inherited;
end;


Видимо вся проблема и состоит в этом ShowMessage. Как же его отобразить?


 
Игорь Шевченко ©   (2004-04-16 21:45) [20]


> Видимо вся проблема и состоит в этом ShowMessage.


Попробуй Windows.MessageBox


 
Le][a   (2004-04-16 22:15) [21]

Все. Проблема решена методом предложенным Rouse_ и дополненным Игорем Шевченко. Спасибо вам. Также спасибо Dimaxx за участие и VMcL за WM_SETTINGCHANGE. Вот. ;о) Обсуждение можно закрыть.


 
Yanis ©   (2004-04-17 00:12) [22]

to [13],[19]
Мож вот так:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs;

type
 TForm1 = class(TForm)
 private
   { Private declarations }
    procedure WMSysColorChange (var Message: TMessage);
   message WM_SYSCOLORCHANGE;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.WMSysColorChange(var Message: TMessage);
begin
//строчки местами поменять.
//сначало надо чтобы система с сообщением разобралась
 
 Inherited;
//а теперь и наша прога на "подсосе" работать начинает :)
 Caption := "qwe";

end;

end.



Страницы: 1 вся ветка

Текущий архив: 2004.05.23;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.031 c
3-1082850562
Михаил
2004-04-25 03:49
2004.05.23
DBGrid


11-1071471581
dsp
2003-12-15 09:59
2004.05.23
недопустимая операция KOLTabControl


14-1083222020
proteste
2004-04-29 11:00
2004.05.23
Стоит ли использовать антивирь


1-1084292925
tower
2004-05-11 20:28
2004.05.23
Из памяти в файл. Как?


6-1081193765
aikidzin
2004-04-05 23:36
2004.05.23
Скачивание с WWW