Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Jak odświeżyć kontrolkę
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004
Jak odświeżyć kontrolkę

Witam

tak jak w pytaniu tyle, że odświezanie powinno nastąpić  w momencie zmiany schematu kolorów (standardowe kontrolki automatycznie zmieniają swój kolor).

Problem w tym że nie mogę użyć zdarzenia Paint bo właściwośźć Autoredraw musi być ustawiona na True.

Jak wychwycić zdarzenie, ze zmieniono schemat kolorów - już pomińmy XP - wystarczy win98.

Pozdrawiam


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

01-04-2005 22:53
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
Knight Lore''FC




Typ: neutral
Postów: 240
Zarejestrowany: Jan 2003

To nie jest to na co czekasz, ale czy pewnym rozwiazniem nie jest MouseMove dla formy ?

02-04-2005 00:59
Pokaż profil Knight Lore  Wyślij email do Knight Lore        1065423
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

No ale wtdy jak będę ruszał myszką to co chwilę będzie mi odświezać kontrolkę

[Post edytowany dnia 02-04-2005 10:19 przez DJK]


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

02-04-2005 10:19
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
hicks
raptor user



Typ: moderator
Postów: 279
Zarejestrowany: Apr 2003


Jak wychwycić zdarzenie, ze zmieniono schemat kolorów - już pomińmy XP - wystarczy win98.

Poprzez sub-classing.

Oto wydruk Spy++ wiadomości systemowych dla okna podczas zmiany ustawień:
<00003> 002501C4 S .message: 0x031A [Unknown] wParam: 0001001C lParam: 00000001
<00004> 002501C4 S ..WM_WINDOWPOSCHANGING lpwp: 00B9F600
<00005> 002501C4 R ..WM_WINDOWPOSCHANGING
<00006> 002501C4 S ..WM_NCCALCSIZE fCalcValidRects: True lpncsp: 00B9F5D4
<00007> 002501C4 R ..WM_NCCALCSIZE fuValidRect: 0000 lpncsp: 00B9F5D4
<00008> 002501C4 S ..WM_NCPAINT hrgn: 00000001
<00009> 002501C4 S ...WM_GETTEXT cchTextMax: 510 lpszText: 00B9EAD4
<00010> 002501C4 R ...WM_GETTEXT cchCopied: 12 lpszText: 00B9EAD4 ("G" )
<00011> 002501C4 R ..WM_NCPAINT
<00012> 002501C4 S ..WM_ERASEBKGND hdc: E40116FD
<00013> 002501C4 R ..WM_ERASEBKGND fErased: True
<00014> 002501C4 S ..WM_WINDOWPOSCHANGED lpwp: 00B9F600
<00015> 002501C4 R ..WM_WINDOWPOSCHANGED
<00016> 002501C4 S ..WM_WINDOWPOSCHANGING lpwp: 00B9F678
<00017> 002501C4 R ..WM_WINDOWPOSCHANGING
<00018> 002501C4 S ..WM_NCCALCSIZE fCalcValidRects: True lpncsp: 00B9F64C
<00019> 002501C4 R ..WM_NCCALCSIZE fuValidRect: 0000 lpncsp: 00B9F64C
<00020> 002501C4 S ..WM_ERASEBKGND hdc: E80113B1
<00021> 002501C4 R ..WM_ERASEBKGND fErased: True
<00022> 002501C4 S ..WM_WINDOWPOSCHANGED lpwp: 00B9F678
<00023> 002501C4 S ...WM_WINDOWPOSCHANGING lpwp: 00B9F2E0
<00024> 002501C4 R ...WM_WINDOWPOSCHANGING
<00025> 002501C4 S ...WM_NCCALCSIZE fCalcValidRects: True lpncsp: 00B9F2B4
<00026> 002501C4 R ...WM_NCCALCSIZE fuValidRect: 0000 lpncsp: 00B9F2B4
<00027> 002501C4 S ...WM_WINDOWPOSCHANGED lpwp: 00B9F2E0
<00028> 002501C4 R ...WM_WINDOWPOSCHANGED
<00029> 002501C4 R ..WM_WINDOWPOSCHANGED
<00030> 002501C4 R .message: 0x031A [Unknown] lResult: 00000001
<00031> 002501C4 S .WM_SYNCPAINT
<00032> 002501C4 R .WM_SYNCPAINT
<00033> 002501C4 S .WM_SYSCOLORCHANGE
<00034> 002501C4 R .WM_SYSCOLORCHANGE
<00035> 002501C4 S ..WM_SETTINGCHANGE wFlag: 0000 pszMetrics: 00B9FC5C
<00036> 002501C4 R ..WM_SETTINGCHANGE
<00037> 002501C4 P WM_PAINT hdc: 00000000
<00038> 002501C4 S ..WM_SETTINGCHANGE wFlag: 0018 pszMetrics: 00B9FC68
<00039> 002501C4 R ..WM_SETTINGCHANGE
<00040> 002501C4 S ..WM_SETTINGCHANGE wFlag: 1023 pszMetrics: 00B9FC68
<00041> 002501C4 S ...WM_SETTINGCHANGE wFlag: 000D pszMetrics: 00B9FC68
<00042> 002501C4 R ...WM_SETTINGCHANGE
<00043> 002501C4 S ...WM_WINDOWPOSCHANGING lpwp: 00B9FC48
<00044> 002501C4 R ...WM_WINDOWPOSCHANGING
<00045> 002501C4 S ...WM_NCCALCSIZE fCalcValidRects: True lpncsp: 00B9FC1C
<00046> 002501C4 R ...WM_NCCALCSIZE fuValidRect: 0000 lpncsp: 00B9FC1C
<00047> 002501C4 S ...WM_WINDOWPOSCHANGED lpwp: 00B9FC48
<00048> 002501C4 S ....WM_MOVE xPos: 348 yPos: 190
<00049> 002501C4 R ....WM_MOVE
<00050> 002501C4 S ....WM_SIZE fwSizeType: SIZE_RESTORED nWidth: 640 nHeight: 402
<00051> 002501C4 R ....WM_SIZE
<00052> 002501C4 S ....WM_WINDOWPOSCHANGING lpwp: 00B9F8B0
<00053> 002501C4 R ....WM_WINDOWPOSCHANGING
<00054> 002501C4 S ....WM_NCCALCSIZE fCalcValidRects: True lpncsp: 00B9F884
<00055> 002501C4 R ....WM_NCCALCSIZE fuValidRect: 0000 lpncsp: 00B9F884
<00056> 002501C4 S ....WM_WINDOWPOSCHANGED lpwp: 00B9F8B0
<00057> 002501C4 R ....WM_WINDOWPOSCHANGED
<00058> 002501C4 R ...WM_WINDOWPOSCHANGED
<00059> 002501C4 P message: 0x0591 [User-defined: WM_USER+401] wParam: 00000000 lParam: 00000000
<00060> 002501C4 S ...WM_SETTINGCHANGE wFlag: SPI_SETNONCLIENTMETRICS pszMetrics: 00B9FC50
<00061> 002501C4 S ....WM_GETICON fType: True
<00062> 002501C4 R ....WM_GETICON hicon: 27C60B0D
<00063> 002501C4 S ....WM_WINDOWPOSCHANGING lpwp: 00B9FA80
<00064> 002501C4 R ....WM_WINDOWPOSCHANGING
<00065> 002501C4 S ....WM_NCCALCSIZE fCalcValidRects: True lpncsp: 00B9FA54
<00066> 002501C4 R ....WM_NCCALCSIZE fuValidRect: 0000 lpncsp: 00B9FA54
<00067> 002501C4 S ....WM_WINDOWPOSCHANGED lpwp: 00B9FA80
<00068> 002501C4 R ....WM_WINDOWPOSCHANGED
<00069> 002501C4 P WM_PAINT hdc: 00000000
<00070> 002501C4 S ....WM_NCPAINT hrgn: 0F04143B
<00071> 002501C4 R ....WM_NCPAINT
<00072> 002501C4 S .....WM_SETTINGCHANGE wFlag: 0000 pszMetrics: 00B9FC5C
<00073> 002501C4 R .....WM_SETTINGCHANGE
<00074> 002501C4 S .....WM_SYNCPAINT
<00075> 002501C4 S ......WM_NCPAINT hrgn: 8A0415D3
<00076> 002501C4 R ......WM_NCPAINT
<00077> 002501C4 S ......WM_ERASEBKGND hdc: 38011450
<00078> 002501C4 R ......WM_ERASEBKGND fErased: True
<00079> 002501C4 R .....WM_SYNCPAINT

Chodzi głównie o zdarzenia:
WM_SYSCOLORCHANGE
oraz
WM_SETTINGCHANGE

[Post edytowany dnia 02-04-2005 12:15 przez hicks]


_____________________________________________
TLHW Clan member

02-04-2005 12:13
Pokaż profil hicks  Wyślij email do hicks   Odwiedź stronę hicks       2511367
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Hmmm - sprawdzę

WM_SYSCOLORCHANGE, WM_SETTINGCHANGE

Próbowałem wcześniej także z WM_STYLECHANGED ale to akurat nie daje efektu pod XP (teraz już doszedłem do wniosku żeby nie pomijać XP'ka )

[Post edytowany dnia 02-04-2005 12:31 przez DJK]


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

02-04-2005 12:31
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Dzięki hicks

WM_SYSCOLORCHANGE działa pod XP także - nawet wtedy gdy zmienisz nie schemat kolorów a Styl (themes) - wcześniej używałem do tego WM_THEMECHANGED. Nie ma to jak 2 w 1


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

02-04-2005 12:39
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
Wszystkich odpowiedzi: 5 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1