----------------------------------------------------------------------------------- [BUG/PRB.] VFP 9.0 FIX - FIX THE LABEL CAPTIONS ARE DISPLAYED WITH SHADOW January 2024 ----------------------------------------------------------------------------------- CCB 1. BUG: In vfp9 (and vfp6, vfp7, vfp8), if we set the Label.BackStyle property to 0 (Transparent), sometimes the label captions are displayed with shadow. The bug only occurs when the Label.BackStyle property is 0 (Transparent), it does not occur when the Label.BackStyle property is 1 (Opaque). The bug only occurs for some fonts, for example, Arial, Consolas, Courier New, Impact, Lucida Console, Microsoft Sans Serif, Segoe UI, Symbol, Tahoma, Times New Roman, Simfang, Simhei, Simkai, Msyh, it does not occur for other fonts, for example, Courier, Fixedsys, MS Sans Serif, MS Serif, Modern, Roman, Script, Small Fonts, System, Terminal, Simsun. The bug only occurs when the Label.Anchor property is 0 (Top Left) or the Label.Anchor property includes the following flags: 1 (Top Absolute), 2 (Left Absolute), 16 (Top Relative), 32 (Left Relative). The bug only occurs when we select the "Turn on ClearType" checkbox in the Windows Control Panel, it does not occur when we don't select the "Turn on ClearType" checkbox in the Windows Control Panel. The bug was reported by Ravil. In vfp9, sometimes the label captions are displayed with shadow, please refer to the picture testlabelbackstyle-vfp9.jpg: 2. CAUSE: There are some BUGs in the following code. 3. RESOLUTION: We can write some code to fix the BUG. Label4d7481 :: push edi ;0x004d7481 : 57 Label4d7482 :: mov ebx , dword ptr [ Data9388dc ] ;0x004d7482 : 8b1ddc889300 mov edx , dword ptr [ esp + 080h ] ;0x004d7488 : 8b942480000000 lea edi , dword ptr [ esi + 4 * esi ] ;0x004d748f : 8d3cb6 shl edi , 05h ;0x004d7492 : c1e705 cmp dword ptr [ edi + ebx + 24 ] , edx ;0x004d7495 : 39541f18 mov dword ptr [ esp + 16 ] , edi ;0x004d7499 : 897c2410 jne Label4cce31 ;0x004d749d : 0f858e59ffff lea eax , dword ptr [ esp + 084h ] ;0x004d74a3 : 8d842484000000 push eax ;0x004d74aa : 50 pushd 02E8h ;0x004d74ab : 68e8020000 mov eax , esi ;0x004d74b0 : 8bc6 call Fun433401 ;0x004d74b2 : e84abff5ff cmp eax , 0FFFFFFFFh ;0x004d74b7 : 83f8ff jle Label4cce31 ;0x004d74ba : 0f8e7159ffff mov edx , dword ptr [ esp + 084h ] ;0x004d74c0 : 8b942484000000 lea ecx , dword ptr [ eax + 4 * eax ] ;0x004d74c7 : 8d0c80 mov eax , dword ptr [edx] ;0x004d74ca : 8b02 mov ecx , dword ptr [ eax + 8 * ecx + 20 ] ;0x004d74cc : 8b4cc814 shr ecx , 0Eh ;0x004d74d0 : c1e90e not ecx ;0x004d74d3 : f7d1 and ecx , 01h ;0x004d74d5 : 83e101 mov dword ptr [ esp + 100 ] , ecx ;0x004d74d8 : 894c2464 je Label4cce31 ;0x004d74dc : 0f844f59ffff pushd 0FFFFFFFFh ;0x004d74e2 : 6aff lea edx , dword ptr [ esp + 104 ] ;0x004d74e4 : 8d542468 push edx ;0x004d74e8 : 52 lea eax , dword ptr [ esp + 28 ] ;0x004d74e9 : 8d44241c push eax ;0x004d74ed : 50 push ebp ;0x004d74ee : 55 pushd 0FFFFFFFFh ;0x004d74ef : 6aff pushd 02E7h ;0x004d74f1 : 68e7020000 mov ebx , 04h ;0x004d74f6 : bb04000000 push esi ;0x004d74fb : 56 mov dword ptr [ esp + 080h ] , ebx ;0x004d74fc : 899c2480000000 mov dword ptr [ esp + 48 ] , ebp ;0x004d7503 : 896c2430 call Fun433a39 ;0x004d7507 : e82dc5f5ff add esp , 01Ch ;0x004d750c : 83c41c test eax , eax ;0x004d750f : 85c0 je Label4d751d ;0x004d7511 : 740a cmp dword ptr [ esp + 20 ] , ebp ;0x004d7513 : 396c2414 jne Label46e007 ;0x004d7517 : 0f85ea6af9ff ; ; ------------------------------------------------------------------------ ; VFP 9.0 FIX - FIX THE LABEL CAPTIONS ARE DISPLAYED WITH SHADOW ; August 2021 ; ------------------------------------------------------------------------ ; CCB ; ; If we set the Label.BackStyle property to 0 (Transparent), sometimes the label captions are displayed with shadow. ; ; 2021/8/6, by ccb ; cmp dword ptr vfpa_sys9064_data,00h je Label46e2d8 mov ecx , dword ptr [ Data9388dc ] lea eax , dword ptr [ esi + 4 * esi ] shl eax , 05h cmp word ptr [ eax + ecx + 16 ] , 0340h je Label4d751c cmp word ptr [ eax + ecx + 16 ] , 0334h je Label4d751c cmp word ptr [ eax + ecx + 16 ] , 0335h je Label4d751c jmp Label46e2d8 Label4d751c :: push edi mov edi , esi call vfpa_getformvisible pop edi cmp eax , 00h jle Label46e2d8 sub esp , 10h mov dword ptr [ esp + 04h ] , 04h mov dword ptr [ esp + 00h ] , 00h lea edx , dword ptr [ esp + 04h ] lea eax , dword ptr [ esp + 00h ] pushd 0FFFFFFFFh ;0x0046e08f : 6aff push edx ;0x0046e095 : 52 push eax ;0x0046e09a : 50 push 00h ;0x0046e09b : 55 pushd 0FFFFFFFFh ;0x0046e09c : 6aff pushd 0191h ;0x0046e09e : 68df000000 push esi ;0x0046e0a3 : 56 call Fun433a39 ;0x0046e0a4 : e89059fcff add esp , 01Ch ;0x0046e0a9 : 83c41c mov ecx , dword ptr [ esp + 00h ] add esp , 10h test eax , eax je Label46e2d8 test ecx , ecx je Label46e2d8 sub esp , 10h mov dword ptr [ esp + 04h ] , 04h mov dword ptr [ esp + 00h ] , 01h lea edx , dword ptr [ esp + 04h ] lea eax , dword ptr [ esp + 00h ] pushd 0FFFFFFFFh ;0x0046e08f : 6aff push edx ;0x0046e095 : 52 push eax ;0x0046e09a : 50 push 00h ;0x0046e09b : 55 pushd 0FFFFFFFFh ;0x0046e09c : 6aff pushd 021h ;0x0046e09e : 68df000000 push esi ;0x0046e0a3 : 56 call Fun433a39 ;0x0046e0a4 : e89059fcff add esp , 01Ch ;0x0046e0a9 : 83c41c mov ecx , dword ptr [ esp + 00h ] add esp , 10h test eax , eax je Label46e2d8 test ecx , ecx jne Label46e2d8 mov dword ptr [ esp + 28 ] , 04h pushd 0FFFFFFFFh ;0x0046e08f : 6aff lea edx , dword ptr [ esp + 32 ] ;0x0046e091 : 8d542420 push edx ;0x0046e095 : 52 lea eax , dword ptr [ esp + 116 ] ;0x0046e096 : 8d442474 push eax ;0x0046e09a : 50 push ebp ;0x0046e09b : 55 pushd 0FFFFFFFFh ;0x0046e09c : 6aff pushd 0DFh ;0x0046e09e : 68df000000 push esi ;0x0046e0a3 : 56 call Fun433a39 ;0x0046e0a4 : e89059fcff add esp , 01Ch ;0x0046e0a9 : 83c41c pushd 0FFFFFFFFh ;0x0046e0be : 6aff lea ecx , dword ptr [ esp + 32 ] ;0x0046e0c0 : 8d4c2420 push ecx ;0x0046e0c4 : 51 lea edx , dword ptr [ esp + 100 ] ;0x0046e0c5 : 8d542464 push edx ;0x0046e0c9 : 52 push ebp ;0x0046e0ca : 55 pushd 0FFFFFFFFh ;0x0046e0cb : 6aff pushd 0184h ;0x0046e0cd : 6884010000 push esi ;0x0046e0d2 : 56 call Fun433a39 ;0x0046e0d3 : e86159fcff add esp , 01Ch ;0x0046e0d8 : 83c41c pushd 0FFFFFFFFh ;0x0046e0ed : 6aff lea eax , dword ptr [ esp + 32 ] ;0x0046e0ef : 8d442420 push eax ;0x0046e0f3 : 50 lea ecx , dword ptr [ esp + 64 ] ;0x0046e0f4 : 8d4c2440 push ecx ;0x0046e0f8 : 51 push ebp ;0x0046e0f9 : 55 pushd 0FFFFFFFFh ;0x0046e0fa : 6aff pushd 0196h ;0x0046e0fc : 6896010000 push esi ;0x0046e101 : 56 call Fun433a39 ;0x0046e102 : e83259fcff add esp , 01Ch ;0x0046e107 : 83c41c pushd 0FFFFFFFFh ;0x0046e11c : 6aff lea edx , dword ptr [ esp + 32 ] ;0x0046e11e : 8d542420 push edx ;0x0046e122 : 52 lea eax , dword ptr [ esp + 40 ] ;0x0046e123 : 8d442428 push eax ;0x0046e127 : 50 push ebp ;0x0046e128 : 55 pushd 0FFFFFFFFh ;0x0046e129 : 6aff pushd 0C4h ;0x0046e12b : 68c4000000 push esi ;0x0046e130 : 56 call Fun433a39 ;0x0046e131 : e80359fcff add esp , 01Ch ;0x0046e136 : 83c41c mov dword ptr [ esp + 24 ] , esi mov dword ptr vfpa_movemethod_inmovemethod,01h mov edx , dword ptr [ esp + 24 ] mov ebp , dword ptr [ esp + 108 ] mov ebx , dword ptr [ esp + 92 ] mov edi , dword ptr [ esp + 56 ] mov esi , dword ptr [ esp + 32 ] push esi ;0x0046e300 : 56 pushd 049h ;0x0046e301 : 6a49 push edi ;0x0046e305 : 57 pushd 049h ;0x0046e306 : 6a49 push ebx ;0x0046e308 : 53 pushd 049h ;0x0046e309 : 6a49 push ebp ;0x0046e30b : 55 pushd 049h ;0x0046e30c : 6a49 pushd 04h ;0x0046e30e : 6a04 pushd 0107h ;0x0046e310 : 6807010000 push edx ;0x0046e315 : 52 call Fun4f088f ;0x0046e316 : e874250800 add esp , 02Ch ;0x0046e31b : 83c42c mov dword ptr vfpa_movemethod_inmovemethod,00h jmp Label46e2d8 Label4d751d :: pushd 01h ;0x004d751d : 6a01 mov ebx , 0Ah ;0x004d751f : bb0a000000 lea eax , dword ptr [ esp + 08Ch ] ;0x004d7524 : 8d84248c000000 call Fun436eea ;0x004d752b : e8baf9f5ff mov esi , eax ;0x004d7530 : 8bf0 cmp esi , ebp ;0x004d7532 : 3bf5 mov dword ptr [ esp + 24 ] , esi ;0x004d7534 : 89742418 jne Label4d7482 ;0x004d7538 : 0f8544ffffff pop edi ;0x004d753e : 5f jmp Label428f4d ;0x004d753f : e9091af5ff Now in VFP Advanced, the label captions are displayed without shadow, it is normal. Please refer to the picture testlabelbackstyle-vfpa.jpg: 4. APPLIES TO: VFP 6.0.8167.0 VFP 6.0.8961.0 (SP5) VFP 7.0.0.9262 VFP 7.0.0.9465 (SP1) VFP 8.0.0.2521 VFP 8.0.0.3117 (SP1) VFP 9.0.0.2412 VFP 9.0.0.3504 (SP1) VFP 9.0.0.4611 (SP2) VFP 9.0.0.5015 (SP2) VFP 9.0.0.5411 (SP2) VFP 9.0.0.5721 (SP2) VFP 9.0.0.5815 (SP2) VFP 9.0.0.6303 (SP2) VFP 9.0.0.6602 (SP2) VFP 9.0.0.7423 (SP2) The bug has been fixed in VFP Advanced. 5. REFERENCE WEBSITES: 1, baiyujia.com: http://www.baiyujia.com http://www.baiyujia.com/vfpdocuments/f_vfp9fix184.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix188.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix189.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix190.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix191.asp 2, microsoft.com: https://social.technet.microsoft.com/Forums/windows/en-US/3d60cb6f-4845-4f52-84cb-b57a67fa6029/captions-of-checkbox-labels-and-optionbuttons-gets-darker https://devblogs.microsoft.com/oldnewthing/20060614-00/?p=30873 3, foxite.com: https://www.foxite.com/archives/form-labels-get-increasingly-smudged-0000227347.htm https://www.foxite.com/archives/bug-with-transparents-labels-0000316393.htm https://www.foxite.com/archives/strange-repaintrefresh-with-win10-0000477579.htm 4, wikis.com: https://fox.wikis.com/wc.dll?Wiki~TransparentLabelsBoldedDuringScreenUpdates 6. OTHER: For reference only, there is no guarantees. Any questions or suggestions, please send me an email at ccb2000@163.com. |