----------------------------------------------------------------------
                      [BUG/PRB.] VFP 9.0 FIX - FIX THE FOCUS RECTANGLE DISAPPEARED
                                 January 2024
                 ----------------------------------------------------------------------
                                     CCB



1. BUG:

     In vfp9 (and vfp6, vfp7, vfp8), if we set the BackStyle property to 0 (Transparent), sometimes the focus rectangle disappeared.

     The bug only occurs when the BackStyle property is 0 (Transparent), it does not occur when the BackStyle property is 1 (Opaque).

     In vfp9, sometimes the focus rectangle disappeared, please refer to the picture testfocusrectangle-vfp9.jpg:


2. CAUSE:

     There are some BUGs in the following code.


3. RESOLUTION:

     We can write some code to fix the BUG.

     Fun428edc :: ; proc near
             sub esp , 094h                                                  ;0x00428edc :        81ec94000000
             push ebx                                                        ;0x00428ee2 :        53
             push esi                                                        ;0x00428ee3 :        56
             mov esi , ecx                                                   ;0x00428ee4 :        8bf1
             mov  ecx , dword ptr [ Data9388dc ]                             ;0x00428ee6 :        8b0ddc889300
             lea eax ,  dword ptr [ esi + 4 * esi ]                          ;0x00428eec :        8d04b6
             shl eax , 05h                                                   ;0x00428eef :        c1e005
             test  byte ptr [ eax + ecx + 48 ] , 02h                         ;0x00428ef2 :        f644083002
             mov  dword ptr [ esp + 120 ] , esi                              ;0x00428ef7 :        89742478
             jne Label428f4e                                                 ;0x00428efb :        7551
             push ebp                                                        ;0x00428efd :        55
             xor ebp , ebp                                                   ;0x00428efe :        33ed
             cmp edx , ebp                                                   ;0x00428f00 :        3bd5
             jne Label4797fd                                                 ;0x00428f02 :        0f85f5080500
             lea ebx ,  dword ptr [ esp + 108 ]                              ;0x00428f08 :        8d5c246c
             mov eax , esi                                                   ;0x00428f0c :        8bc6
             call Fun428d94                                                  ;0x00428f0e :        e881feffff
             test eax , eax                                                  ;0x00428f13 :        85c0
             je Label428f4d                                                  ;0x00428f15 :        7436

     Label428f17 ::


     ;
     ;                 -----------------------------------------------------------
     ;                      VFP 9.0 FIX - FIX THE FOCUS RECTANGLE DISAPPEARED
     ;                                  August 2021
     ;                 -----------------------------------------------------------
     ;                                     CCB
     ;
     ; If we set the BackStyle property to 0 (Transparent), sometimes the focus rectangle disappeared.
     ;
     ; 2021/8/26, by ccb
     ;

             cmp dword ptr vfpa_sys9068_data,00h
             je Label428f18
             push esi
             call vfpa_focusrectangle


     Label428f18 ::
             pushd 01h                                                       ;0x00428f17 :        6a01
             mov ebx , 0Ah                                                   ;0x00428f19 :        bb0a000000
             lea eax ,  dword ptr [ esp + 088h ]                             ;0x00428f1e :        8d842488000000
             mov  dword ptr [ esp + 088h ] , esi                             ;0x00428f25 :        89b42488000000
             mov  dword ptr [ esp + 08Ch ] , esi                             ;0x00428f2c :        89b4248c000000
             mov  dword ptr [ esp + 090h ] , ebp                             ;0x00428f33 :        89ac2490000000
             call Fun436eea                                                  ;0x00428f3a :        e8abdf0000
             mov esi , eax                                                   ;0x00428f3f :        8bf0
             cmp esi , ebp                                                   ;0x00428f41 :        3bf5
             mov  dword ptr [ esp + 20 ] , esi                               ;0x00428f43 :        89742414
             jne Label4d7481                                                 ;0x00428f47 :        0f8534e50a00

     Label428f4d ::
             pop ebp                                                         ;0x00428f4d :        5d

     Label428f4e ::
             pop esi                                                         ;0x00428f4e :        5e
             pop ebx                                                         ;0x00428f4f :        5b
             add esp , 094h                                                  ;0x00428f50 :        81c494000000
             ret                                                             ;0x00428f56 :        c3

     Now in VFP Advanced, the focus rectangle is displayed normal.
     Please refer to the picture testfocusrectangle-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_vfp9fix192.asp


6. OTHER:

     For reference only, there is no guarantees.

     Any questions or suggestions, please send me an email at ccb2000@163.com.