Къде е WM_STYLECHANGED?
7 отговора
179 прегледа
Къде е WM_STYLECHANGED?
Защо тъпото МФЦ ми филтрира това съобщение? Как да го излъжа?
Я вышел им наперерез!
Я вышел им наперерез!
Re: Къде е WM_STYLECHANGED?
В MSDN-а ми се мярна едно CWnd::OnStyleChanged - то не върши ли работа?
My blade can cut through armor, and still cut a tomato
My blade can cut through armor, and still cut a tomato
Re: Къде е WM_STYLECHANGED?
Не. Същото е като OnCreate - никога не се вика, или поне е толкова дълбокомислена философия, че не съм в състояние да я проумея.
Я вышел им наперерез!
Я вышел им наперерез!
стават такива работи :)))
аз пък много се мъчих докато хвана keydown на диалог - бре не идва и не идва! а то се оказа че било защото фокуса е на бутон...
така, всички такива проблеми ги решавам кардинално по един начин - с пренаписване на виртуалната PreTranslateMessage която ти пъхва съобщенията ПРЕДИ да се обработят. ако ти е кеф може и да ги спреш, като не извикаш съответно на родителя :)))))
така, всички такива проблеми ги решавам кардинално по един начин - с пренаписване на виртуалната PreTranslateMessage която ти пъхва съобщенията ПРЕДИ да се обработят. ако ти е кеф може и да ги спреш, като не извикаш съответно на родителя :)))))
Re: стават такива работи :)))
И там не идва.
Баси, това чудо ше ме побърка. 
Я вышел им наперерез!
Я вышел им наперерез!
Re: стават такива работи :)))
Току що пробвах и си получавам съвсем коректно съобщението и съответно извикване към OnStyleChanging.
Погледни добре дали не се опитваш да прихванеш съобщение, което изобщо не се праща към прозореца ти. Искам да кажа, че WM_STYLECHANGING се изпраща само когато се извика SetWindowLong със втори параметър
GWL_EXSTYLE или GWL_STYLE.
Ако извикаш SetWindowLong със някой от другите възможни параметри,
няма да ти бъде изпратено съобщението WM_STYLECHANGING.
Провери със "Spy++" дали ти се изпраща съобщението.
Поздрави от Бургас.
Погледни добре дали не се опитваш да прихванеш съобщение, което изобщо не се праща към прозореца ти. Искам да кажа, че WM_STYLECHANGING се изпраща само когато се извика SetWindowLong със втори параметър
GWL_EXSTYLE или GWL_STYLE.
Ако извикаш SetWindowLong със някой от другите възможни параметри,
няма да ти бъде изпратено съобщението WM_STYLECHANGING.
Провери със "Spy++" дали ти се изпраща съобщението.
Поздрави от Бургас.
Re: стават такива работи :)))
Абе вече разбрах каква е работата.
Трябваше да следя кога се появява и изчезва WS_VSCROLL, тоест кога се показва и скрива вертикалния скролбар. Истината е, че user32 е направен по такъв странен начин, че не пуска WM_STYLECHANGED, когато показва и скрива скролбаровете. Тъпа работа - при смяна на стила не се пуска съобщението, което нотифицира за смяната на стила.
Както не веднъж съм казвал - докато софтуерната индустрия е в американски ръце - тежко ни и горко.
Я вышел им наперерез!
Както не веднъж съм казвал - докато софтуерната индустрия е в американски ръце - тежко ни и горко.
Я вышел им наперерез!