Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как обработать WM_WININICHANGE

288
13 ноября 2009 года
nikitozz
1.2K / / 09.03.2007
Всем доброго дня. Под конец пятницы голова уже не работает, потому прошу совета :)

Вообщем задача обработать сообщение WM_WININICHANGE. Даже не обработать, а просто по получении этого сообщения произвести кое-какие действия после того, как VCL сделает свои.
OnMessage соотвественно не подходит, так как в этом случае, если выставить Handled в true, придется самому делать все, что делает стандартный обработчик (а это мне не нужно), если же в false, то стандартный обработчик "затрет" мои изменения.

В голову пришел только сабклассинг оконной процедуры Application. Может есть способ поэлегантней?

Заранее спасибо.
1
13 ноября 2009 года
kot_
7.3K / / 20.01.2000
Не очень понял что надо, чем обычная обработка сообщения не подходит - с далнейшей трансляцией стандартному обработчику?
288
13 ноября 2009 года
nikitozz
1.2K / / 09.03.2007
Мда. А слона то я и не приметил. Пойду убьюсь об стену и самозабанюсь для самообразования :)
Все решилось просто: в обработчике OnSettingChange.

А суть была в том, что в программе я использую свои собственные разделители дробной части и целой и разрядов, которые беру из настроек. Чтобы не париться, я просто присваиваю DecimalSeparator и ThousandSeparator значения из настроек. Вот только возникла проблема: при изменении этих настроек в системе DecimalSeparator и ThousandSeparator автоматом принимали новые значения. Мне нужно было просто снова их переприсвоить.
А вот про TApplication.OnSettingChange я и забыл совсем, вот и пытался в оконную процедуру залезть.
1
13 ноября 2009 года
kot_
7.3K / / 20.01.2000
Честно говоря все равно как то очень сложно- может просто я не могу понять сложность задачи?
1. Что мешало просто создать просто собственный обработчик?
2. Что мешало использовать разделитель из настроект системы? хотя второй вопрос больше риторический
288
13 ноября 2009 года
nikitozz
1.2K / / 09.03.2007
Цитата: kot_
Честно говоря все равно как то очень сложно- может просто я не могу понять сложность задачи?
1. Что мешало просто создать просто собственный обработчик?



Да не было там сложности. Просто затупил. :) О существовании OnSettingChange забыл. Обработчик надо было создавать именно для Application'а, т.к. при создании обработчика в главной форме (условно "Form1"), сначала выполнялся он (сообщение к главной форме приходило раньше), потом сообщение приходило к Applications и выполнялся стандартный из TApplication, который снова записывал в Separator'ы значения из системы. OnMessage из TApplication тоже не подходил, так как это сообщение в него вообще не попадает.

Цитата: kot_

2. Что мешало использовать разделитель из настроект системы? хотя второй вопрос больше риторический



Такое задание было. Чтобы разделители можно было установить в настройках программы.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог