Как обработать WM_WININICHANGE
Вообщем задача обработать сообщение WM_WININICHANGE. Даже не обработать, а просто по получении этого сообщения произвести кое-какие действия после того, как VCL сделает свои.
OnMessage соотвественно не подходит, так как в этом случае, если выставить Handled в true, придется самому делать все, что делает стандартный обработчик (а это мне не нужно), если же в false, то стандартный обработчик "затрет" мои изменения.
В голову пришел только сабклассинг оконной процедуры Application. Может есть способ поэлегантней?
Заранее спасибо.
Не очень понял что надо, чем обычная обработка сообщения не подходит - с далнейшей трансляцией стандартному обработчику?
Все решилось просто: в обработчике OnSettingChange.
А суть была в том, что в программе я использую свои собственные разделители дробной части и целой и разрядов, которые беру из настроек. Чтобы не париться, я просто присваиваю DecimalSeparator и ThousandSeparator значения из настроек. Вот только возникла проблема: при изменении этих настроек в системе DecimalSeparator и ThousandSeparator автоматом принимали новые значения. Мне нужно было просто снова их переприсвоить.
А вот про TApplication.OnSettingChange я и забыл совсем, вот и пытался в оконную процедуру залезть.
1. Что мешало просто создать просто собственный обработчик?
2. Что мешало использовать разделитель из настроект системы? хотя второй вопрос больше риторический
Цитата: kot_
Честно говоря все равно как то очень сложно- может просто я не могу понять сложность задачи?
1. Что мешало просто создать просто собственный обработчик?
1. Что мешало просто создать просто собственный обработчик?
Да не было там сложности. Просто затупил. :) О существовании OnSettingChange забыл. Обработчик надо было создавать именно для Application'а, т.к. при создании обработчика в главной форме (условно "Form1"), сначала выполнялся он (сообщение к главной форме приходило раньше), потом сообщение приходило к Applications и выполнялся стандартный из TApplication, который снова записывал в Separator'ы значения из системы. OnMessage из TApplication тоже не подходил, так как это сообщение в него вообще не попадает.
Цитата: kot_
2. Что мешало использовать разделитель из настроект системы? хотя второй вопрос больше риторический
Такое задание было. Чтобы разделители можно было установить в настройках программы.