---------------------------------------------------------------------------------------- [ENHANCED] VFP 9.0 FIX - THE EXTENDED WINDOW STYLE OF THE WINDOW BEING CREATED January 2024 ---------------------------------------------------------------------------------------- CCB 1. BUG: We can set the extended window style of the window being created, it is useful for creating some new style windows on some new Windows versions. 2. CAUSE: Some extended window styles can only be specified in the CreateWindowEx() call, they can not be specified in the SetWindowLong() call, for example, SetWindowLong(wnd, GWL_EXSTYLE, WS_EX_NOREDIRECTIONBITMAP); it can not work fine. In VFP Advanced, we can set the extended window style of the window being created, for example, =SYS(9056,0x00200000) && WS_EX_NOREDIRECTIONBITMAP it will be used for the CreateWindowEx() call, CreateWindowEx(dwExStyle | 0x00200000, ...); and then the created window has the WS_EX_NOREDIRECTIONBITMAP style. There are some BUGs in the following code. 3. RESOLUTION: We can write some code to fix the BUG. Fun42eb1e :: ; proc near push ebp ;0x0042eb1e : 55 mov ebp , esp ;0x0042eb1f : 8bec sub esp , 0ACh ;0x0042eb21 : 81ecac000000 push ebx ;0x0042eb27 : 53 push esi ;0x0042eb28 : 56 push edi ;0x0042eb29 : 57 call Fun42f0b0 ;0x0042eb2a : e881050000 mov ecx , eax ;0x0042eb2f : 8bc8 xor edi , edi ;0x0042eb31 : 33ff cmp ecx , edi ;0x0042eb33 : 3bcf mov dword ptr [ ebp - 4 ] , ecx ;0x0042eb35 : 894dfc je Label5a80b4 ;0x0042eb38 : 0f8476951700 mov esi , dword ptr [ ebp + 8 ] ;0x0042eb3e : 8b7508 mov eax , dword ptr [ esi + 76 ] ;0x0042eb41 : 8b464c mov edx , dword ptr [ esi + 76 ] ;0x0042eb44 : 8b564c and eax , 01E00000h ;0x0042eb47 : 250000e001 mov dword ptr [ ebp - 72 ] , eax ;0x0042eb4c : 8945b8 not eax ;0x0042eb4f : f7d0 and edx , eax ;0x0042eb51 : 23d0 mov dword ptr [ esi + 76 ] , edx ;0x0042eb53 : 89564c mov ecx , dword ptr [ecx] ;0x0042eb56 : 8b09 mov eax , edx ;0x0042eb58 : 8bc2 mov edx , dword ptr [ esi + 56 ] ;0x0042eb5a : 8b5638 mov dword ptr [ ebp - 12 ] , ecx ;0x0042eb5d : 894df4 cmp edx , dword ptr [ Data937fa8 ] ;0x0042eb60 : 3b15a87f9300 mov dword ptr [ ebp - 16 ] , edi ;0x0042eb66 : 897df0 je Label4094f1 ;0x0042eb69 : 0f8482a9fdff Label42eb6f :: mov ecx , dword ptr [ esi + 56 ] ;0x0042eb6f : 8b4e38 cmp ecx , edi ;0x0042eb72 : 3bcf je Label409522 ;0x0042eb74 : 0f84a8a9fdff mov eax , dword ptr [ecx] ;0x0042eb7a : 8b01 mov eax , dword ptr [eax] ;0x0042eb7c : 8b00 mov dword ptr [ ebp - 16 ] , eax ;0x0042eb7e : 8945f0 mov eax , dword ptr [ esi + 76 ] ;0x0042eb81 : 8b464c test al , 02h ;0x0042eb84 : a802 jne Label433388 ;0x0042eb86 : 0f85fc470000 test byte ptr ah , 020h ;0x0042eb8c : f6c420 jne Label42eba2 ;0x0042eb8f : 7511 or eax , 01h ;0x0042eb91 : 83c801 mov dword ptr [ esi + 76 ] , eax ;0x0042eb94 : 89464c mov eax , dword ptr [ esi + 60 ] ;0x0042eb97 : 8b463c or eax , 040000000h ;0x0042eb9a : 0d00000040 Label42eb9f :: mov dword ptr [ esi + 60 ] , eax ;0x0042eb9f : 89463c Label42eba2 :: cmp ecx , edi ;0x0042eba2 : 3bcf je Label409522 ;0x0042eba4 : 0f8478a9fdff Label42ebaa :: mov eax , dword ptr [ esi + 44 ] ;0x0042ebaa : 8b462c cmp eax , edi ;0x0042ebad : 3bc7 jne Label5a8077 ;0x0042ebaf : 0f85c2941700 cmp dword ptr [ esi + 40 ] , edi ;0x0042ebb5 : 397e28 jne Label5a8077 ;0x0042ebb8 : 0f85b9941700 Label42ebbe :: mov eax , dword ptr [ esi + 20 ] ;0x0042ebbe : 8b4614 mov ecx , dword ptr [ esi + 36 ] ;0x0042ebc1 : 8b4e24 cmp eax , ecx ;0x0042ebc4 : 3bc1 jnl Label5a8097 ;0x0042ebc6 : 0f8dcb941700 Label42ebcc :: mov ecx , dword ptr [ esi + 28 ] ;0x0042ebcc : 8b4e1c cmp eax , ecx ;0x0042ebcf : 3bc1 mov dword ptr [ esi + 20 ] , eax ;0x0042ebd1 : 894614 jle Label43a0f4 ;0x0042ebd4 : 0f8e1ab50000 Label42ebda :: mov ecx , dword ptr [ esi + 32 ] ;0x0042ebda : 8b4e20 mov dword ptr [ ebp - 8 ] , eax ;0x0042ebdd : 8945f8 mov dword ptr [ esi + 20 ] , eax ;0x0042ebe0 : 894614 mov eax , dword ptr [ esi + 16 ] ;0x0042ebe3 : 8b4610 cmp eax , ecx ;0x0042ebe6 : 3bc1 jnl Label5a809e ;0x0042ebe8 : 0f8db0941700 Label42ebee :: mov edi , dword ptr [ esi + 24 ] ;0x0042ebee : 8b7e18 cmp eax , edi ;0x0042ebf1 : 3bc7 mov dword ptr [ esi + 16 ] , eax ;0x0042ebf3 : 894610 jle Label42ebfa ;0x0042ebf6 : 7e02 mov edi , eax ;0x0042ebf8 : 8bf8 Label42ebfa :: mov ecx , dword ptr [ esi + 76 ] ;0x0042ebfa : 8b4e4c mov ebx , dword ptr [ esi + 80 ] ;0x0042ebfd : 8b5e50 push ecx ;0x0042ec00 : 51 lea edx , dword ptr [ ebp - 80 ] ;0x0042ec01 : 8d55b0 lea eax , dword ptr [ ebp - 68 ] ;0x0042ec04 : 8d45bc mov dword ptr [ esi + 16 ] , edi ;0x0042ec07 : 897e10 call Fun42f015 ;0x0042ec0a : e806040000 mov edx , dword ptr [ ebp - 68 ] ;0x0042ec0f : 8b55bc mov ebx , dword ptr [ esi + 60 ] ;0x0042ec12 : 8b5e3c mov ecx , dword ptr [ ebp - 80 ] ;0x0042ec15 : 8b4db0 or ebx , edx ;0x0042ec18 : 0bda mov edx , dword ptr [ esi + 64 ] ;0x0042ec1a : 8b5640 or edx , ecx ;0x0042ec1d : 0bd1 mov dword ptr [ esi + 64 ] , edx ;0x0042ec1f : 895640 mov ecx , edx ;0x0042ec22 : 8bca ; ; ----------------------------------------------------------------------------- ; VFP 9.0 FIX - THE EXTENDED WINDOW STYLE OF THE WINDOW BEING CREATED ; March 2021 ; ----------------------------------------------------------------------------- ; CCB ; ; The extended window style of the window being created. ; ; 2021/3/18, by ccb ; cmp dword ptr vfpa_sys9056_data,00h je Label42ec24 or ecx , dword ptr vfpa_sys9056_data Label42ec24 :: mov edx , dword ptr [ ebp + 12 ] ;0x0042ec24 : 8b550c ; ; -------------------------------------------------------------------- ; VFP 9.0 FIX - THE WINDOW STYLE OF THE WINDOW BEING CREATED ; March 2021 ; -------------------------------------------------------------------- ; CCB ; ; The window style of the window being created. ; ; 2021/3/18, by ccb ; ; test edx , edx ;0x0042ec27 : 85d2 ; mov dword ptr [ esi + 60 ] , ebx ;0x0042ec29 : 895e3c ; mov eax , ebx ;0x0042ec2c : 8bc3 ; jne Label5a80a5 ;0x0042ec2e : 0f8571941700 mov dword ptr [ esi + 60 ] , ebx mov eax , ebx cmp dword ptr vfpa_sys9055_data,00h je Label42ec27 or eax , dword ptr vfpa_sys9055_data Label42ec27 :: test edx , edx ;0x0042ec27 : 85d2 jne Label5a80a5 ;0x0042ec2e : 0f8571941700 push edx ;0x0042ec34 : 52 mov edx , dword ptr [ Data9370cc ] ;0x0042ec35 : 8b15cc709300 push edx ;0x0042ec3b : 52 mov edx , dword ptr [ ebp - 16 ] ;0x0042ec3c : 8b55f0 pushd 00h ;0x0042ec3f : 6a00 push edx ;0x0042ec41 : 52 mov edx , dword ptr [ ebp - 8 ] ;0x0042ec42 : 8b55f8 push edx ;0x0042ec45 : 52 mov edx , dword ptr [ esi + 12 ] ;0x0042ec46 : 8b560c push edi ;0x0042ec49 : 57 push edx ;0x0042ec4a : 52 mov edx , dword ptr [ esi + 8 ] ;0x0042ec4b : 8b5608 push edx ;0x0042ec4e : 52 mov edx , dword ptr [ esi + 0C0h ] ;0x0042ec4f : 8b96c0000000 push eax ;0x0042ec55 : 50 mov eax , dword ptr [ esi + 0A4h ] ;0x0042ec56 : 8b86a4000000 push eax ;0x0042ec5c : 50 push edx ;0x0042ec5d : 52 push ecx ;0x0042ec5e : 51 call CreateWindowExA ;0x0042ec5f : ff1594729100 ; ; ----------------------------------------------------------------------------- ; VFP 9.0 FIX - THE EXTENDED WINDOW STYLE OF THE WINDOW BEING CREATED ; March 2021 ; ----------------------------------------------------------------------------- ; CCB ; ; The extended window style of the window being created. ; ; 2021/3/18, by ccb ; cmp dword ptr vfpa_sys9055_data,00h jne Label42ec0d cmp dword ptr vfpa_sys9056_data,00h jne Label42ec0d jmp Label42ec65 Label42ec0d :: test eax , eax je Label42ec0e mov edx , dword ptr vfpa_sys9055_data or dword ptr [ esi + 60 ] , edx mov edx , dword ptr vfpa_sys9056_data or dword ptr [ esi + 64 ] , edx jmp Label42ec65 Label42ec0e :: mov edx , dword ptr [ ebp - 68 ] ;0x0042ec0f : 8b55bc mov ebx , dword ptr [ esi + 60 ] ;0x0042ec12 : 8b5e3c mov ecx , dword ptr [ ebp - 80 ] ;0x0042ec15 : 8b4db0 or ebx , edx ;0x0042ec18 : 0bda mov edx , dword ptr [ esi + 64 ] ;0x0042ec1a : 8b5640 or edx , ecx ;0x0042ec1d : 0bd1 mov dword ptr [ esi + 64 ] , edx ;0x0042ec1f : 895640 mov ecx , edx ;0x0042ec22 : 8bca mov edx , dword ptr [ ebp + 12 ] ;0x0042ec24 : 8b550c test edx , edx ;0x0042ec27 : 85d2 mov dword ptr [ esi + 60 ] , ebx ;0x0042ec29 : 895e3c mov eax , ebx ;0x0042ec2c : 8bc3 jne Label5a80a5 ;0x0042ec2e : 0f8571941700 push edx ;0x0042ec34 : 52 mov edx , dword ptr [ Data9370cc ] ;0x0042ec35 : 8b15cc709300 push edx ;0x0042ec3b : 52 mov edx , dword ptr [ ebp - 16 ] ;0x0042ec3c : 8b55f0 pushd 00h ;0x0042ec3f : 6a00 push edx ;0x0042ec41 : 52 mov edx , dword ptr [ ebp - 8 ] ;0x0042ec42 : 8b55f8 push edx ;0x0042ec45 : 52 mov edx , dword ptr [ esi + 12 ] ;0x0042ec46 : 8b560c push edi ;0x0042ec49 : 57 push edx ;0x0042ec4a : 52 mov edx , dword ptr [ esi + 8 ] ;0x0042ec4b : 8b5608 push edx ;0x0042ec4e : 52 mov edx , dword ptr [ esi + 0C0h ] ;0x0042ec4f : 8b96c0000000 push eax ;0x0042ec55 : 50 mov eax , dword ptr [ esi + 0A4h ] ;0x0042ec56 : 8b86a4000000 push eax ;0x0042ec5c : 50 push edx ;0x0042ec5d : 52 push ecx ;0x0042ec5e : 51 call CreateWindowExA ;0x0042ec5f : ff1594729100 Label42ec65 :: mov edi , eax ;0x0042ec65 : 8bf8 Label42ec67 :: test edi , edi ;0x0042ec67 : 85ff mov dword ptr [ ebp - 8 ] , edi ;0x0042ec69 : 897df8 je Label5a80ac ;0x0042ec6c : 0f843a941700 test byte ptr [ esi + 76 ] , 08h ;0x0042ec72 : f6464c08 jne Label437a79 ;0x0042ec76 : 0f85fd8d0000 Label42ec7c :: mov eax , dword ptr [ Data937794 ] ;0x0042ec7c : a194779300 test eax , eax ;0x0042ec81 : 85c0 je Label409531 ;0x0042ec83 : 0f84a8a8fdff Label42ec89 :: mov ebx , dword ptr [ ebp - 12 ] ;0x0042ec89 : 8b5df4 mov edx , dword ptr [ ebp - 4 ] ;0x0042ec8c : 8b55fc xor eax , eax ;0x0042ec8f : 33c0 mov ecx , 05Ch ;0x0042ec91 : b95c000000 mov edi , ebx ;0x0042ec96 : 8bfb rep stosd ;0x0042ec98 : f3ab mov eax , dword ptr [ ebp - 8 ] ;0x0042ec9a : 8b45f8 mov dword ptr [ebx] , eax ;0x0042ec9d : 8903 mov dword ptr [ ebx + 44 ] , edx ;0x0042ec9f : 89532c mov ecx , dword ptr [ esi + 52 ] ;0x0042eca2 : 8b4e34 mov dword ptr [ ebx + 60 ] , ecx ;0x0042eca5 : 894b3c mov edx , dword ptr [ esi + 84 ] ;0x0042eca8 : 8b5654 mov dword ptr [ ebx + 88 ] , edx ;0x0042ecab : 895358 mov ecx , dword ptr [ esi + 76 ] ;0x0042ecae : 8b4e4c mov dword ptr [ ebx + 80 ] , ecx ;0x0042ecb1 : 894b50 mov edx , dword ptr [ esi + 80 ] ;0x0042ecb4 : 8b5650 mov dword ptr [ ebx + 84 ] , edx ;0x0042ecb7 : 895354 mov dword ptr [ ebx + 92 ] , 00h ;0x0042ecba : c7435c00000000 mov ecx , dword ptr [ esi + 24 ] ;0x0042ecc1 : 8b4e18 mov dword ptr [ ebx + 120 ] , ecx ;0x0042ecc4 : 894b78 mov edx , dword ptr [ esi + 28 ] ;0x0042ecc7 : 8b561c mov dword ptr [ ebx + 124 ] , edx ;0x0042ecca : 89537c mov ecx , dword ptr [ esi + 32 ] ;0x0042eccd : 8b4e20 mov dword ptr [ ebx + 080h ] , ecx ;0x0042ecd0 : 898b80000000 mov edx , dword ptr [ esi + 36 ] ;0x0042ecd6 : 8b5624 mov dword ptr [ ebx + 084h ] , edx ;0x0042ecd9 : 899384000000 mov cl , byte ptr [ esi + 09Fh ] ;0x0042ecdf : 8a8e9f000000 mov dx , word ptr [ Data9377b4 ] ;0x0042ece5 : 668b15b4779300 mov byte ptr [ ebx + 0168h ] , cl ;0x0042ecec : 888b68010000 mov cx , word ptr [ Data9377b0 ] ;0x0042ecf2 : 668b0db0779300 mov word ptr [ ebx + 0160h ] , dx ;0x0042ecf9 : 66899360010000 push eax ;0x0042ed00 : 50 mov word ptr [ ebx + 0162h ] , cx ;0x0042ed01 : 66898b62010000 call GetDC ;0x0042ed08 : ff15b4729100 mov dword ptr [ ebx + 8 ] , eax ;0x0042ed0e : 894308 mov edx , dword ptr [ esi + 48 ] ;0x0042ed11 : 8b5630 mov dword ptr [ ebx + 40 ] , edx ;0x0042ed14 : 895328 lea esi , dword ptr [ ebx + 010Dh ] ;0x0042ed17 : 8db30d010000 mov ebx , dword ptr [ ebp - 4 ] ;0x0042ed1d : 8b5dfc mov eax , ebx ;0x0042ed20 : 8bc3 call Fun42ef76 ;0x0042ed22 : e84f020000 mov eax , dword ptr [ ebp + 8 ] ;0x0042ed27 : 8b4508 mov ecx , dword ptr [ eax + 0B0h ] ;0x0042ed2a : 8b88b0000000 test ecx , ecx ;0x0042ed30 : 85c9 jne Label545950 ;0x0042ed32 : 0f85186c1100 mov esi , dword ptr [ ebp + 8 ] ;0x0042ed38 : 8b7508 mov eax , dword ptr [ esi + 0B8h ] ;0x0042ed3b : 8b86b8000000 test eax , eax ;0x0042ed41 : 85c0 jne Label5a80bf ;0x0042ed43 : 0f8576931700 Label42ed49 :: mov edi , dword ptr [ ebp - 12 ] ;0x0042ed49 : 8b7df4 Label42ed4c :: mov eax , dword ptr [ ebp + 8 ] ;0x0042ed4c : 8b4508 mov eax , dword ptr [ eax + 0BCh ] ;0x0042ed4f : 8b80bc000000 test eax , eax ;0x0042ed55 : 85c0 jne Label5a80e3 ;0x0042ed57 : 0f8586931700 Label42ed5d :: mov esi , dword ptr [ ebp - 8 ] ;0x0042ed5d : 8b75f8 push esi ;0x0042ed60 : 56 mov dword ptr [ edi + 108 ] , 04001h ;0x0042ed61 : c7476c01400000 call IsZoomed ;0x0042ed68 : ff1504759100 test eax , eax ;0x0042ed6e : 85c0 jne Label5a80f1 ;0x0042ed70 : 0f857b931700 Label42ed76 :: push esi ;0x0042ed76 : 56 call IsIconic ;0x0042ed77 : ff155c729100 test eax , eax ;0x0042ed7d : 85c0 mov esi , 0100h ;0x0042ed7f : be00010000 jne Label5a80fa ;0x0042ed84 : 0f8570931700 Label42ed8a :: mov eax , dword ptr [ ebp + 12 ] ;0x0042ed8a : 8b450c test eax , eax ;0x0042ed8d : 85c0 jne Label5a8102 ;0x0042ed8f : 0f856d931700 Label42ed95 :: mov eax , dword ptr [ Data9377a0 ] ;0x0042ed95 : a1a0779300 mov edx , dword ptr [ ebp + 8 ] ;0x0042ed9a : 8b5508 mov dword ptr [ edi + 72 ] , eax ;0x0042ed9d : 894748 mov ecx , dword ptr [edx] ;0x0042eda0 : 8b0a mov dword ptr [ edi + 64 ] , ecx ;0x0042eda2 : 894f40 mov ecx , dword ptr [ Data93779c ] ;0x0042eda5 : 8b0d9c779300 mov ecx , dword ptr [ecx] ;0x0042edab : 8b09 mov dword ptr [ ecx + 4 * eax ] , ebx ;0x0042edad : 891c81 mov ecx , dword ptr [ Data9377ac ] ;0x0042edb0 : 8b0dac779300 mov ecx , dword ptr [ecx] ;0x0042edb6 : 8b09 mov dword ptr [ ecx + 4 * eax ] , ebx ;0x0042edb8 : 891c81 inc eax ;0x0042edbb : 40 mov dword ptr [ Data9377a0 ] , eax ;0x0042edbc : a3a0779300 test dword ptr [ edx + 76 ] , esi ;0x0042edc1 : 85724c mov esi , GetSystemMetrics ;0x0042edc4 : 8b3550729100 jne Label545986 ;0x0042edca : 0f85b66b1100 Label42edd0 :: mov eax , dword ptr [ ebp + 8 ] ;0x0042edd0 : 8b4508 mov cl , byte ptr [ eax + 76 ] ;0x0042edd3 : 8a484c test cl , cl ;0x0042edd6 : 84c9 js Label545a5f ;0x0042edd8 : 0f88816c1100 Label42edde :: mov eax , dword ptr [ ebp + 8 ] ;0x0042edde : 8b4508 test dword ptr [ eax + 76 ] , 0180h ;0x0042ede1 : f7404c80010000 jne Label545b38 ;0x0042ede8 : 0f854a6d1100 Label42edee :: mov edx , 03h ;0x0042edee : ba03000000 mov ecx , ebx ;0x0042edf3 : 8bcb call Fun42e93b ;0x0042edf5 : e841fbffff mov eax , dword ptr [ebx] ;0x0042edfa : 8b03 mov esi , dword ptr [ ebp + 8 ] ;0x0042edfc : 8b7508 mov dword ptr [ eax + 0148h ] , 01Fh ;0x0042edff : c780480100001f000000 mov eax , dword ptr [ esi + 0A4h ] ;0x0042ee09 : 8b86a4000000 test eax , eax ;0x0042ee0f : 85c0 jne Label434e24 ;0x0042ee11 : 0f850d600000 Label42ee17 :: mov eax , dword ptr [ esi + 0A8h ] ;0x0042ee17 : 8b86a8000000 test eax , eax ;0x0042ee1d : 85c0 jne Label5a8168 ;0x0042ee1f : 0f8543931700 Label42ee25 :: mov eax , dword ptr [ esi + 56 ] ;0x0042ee25 : 8b4638 test eax , eax ;0x0042ee28 : 85c0 je Label42ee35 ;0x0042ee2a : 7409 pushd 00h ;0x0042ee2c : 6a00 push eax ;0x0042ee2e : 50 push ebx ;0x0042ee2f : 53 call Fun430e1c ;0x0042ee30 : e8e71f0000 Label42ee35 :: lea edx , dword ptr [ ebp - 64 ] ;0x0042ee35 : 8d55c0 lea eax , dword ptr [ ebp + 0FFFFFF58h ] ;0x0042ee38 : 8d8558ffffff call Fun42c27f ;0x0042ee3e : e83cd4ffff pushd 00h ;0x0042ee43 : 6a00 push eax ;0x0042ee45 : 50 call Fun42c2be ;0x0042ee46 : e873d4ffff mov edi , dword ptr [ ebp - 4 ] ;0x0042ee4b : 8b7dfc mov ebx , eax ;0x0042ee4e : 8bd8 add esp , 08h ;0x0042ee50 : 83c408 test ebx , ebx ;0x0042ee53 : 85db jne Label42eeaa ;0x0042ee55 : 7553 mov ecx , edi ;0x0042ee57 : 8bcf call Fun42fa78 ;0x0042ee59 : e81a0c0000 xor edx , edx ;0x0042ee5e : 33d2 mov ecx , edi ;0x0042ee60 : 8bcf call Fun42f5e3 ;0x0042ee62 : e87c070000 xor eax , eax ;0x0042ee67 : 33c0 mov ecx , edi ;0x0042ee69 : 8bcf call Fun42fcb4 ;0x0042ee6b : e8440e0000 push edi ;0x0042ee70 : 57 call Fun42f725 ;0x0042ee71 : e8af080000 mov ecx , dword ptr [edi] ;0x0042ee76 : 8b0f mov ecx , dword ptr [ecx] ;0x0042ee78 : 8b09 pushd 013h ;0x0042ee7a : 6a13 pushd 00h ;0x0042ee7c : 6a00 pushd 00h ;0x0042ee7e : 6a00 pushd 00h ;0x0042ee80 : 6a00 pushd 00h ;0x0042ee82 : 6a00 push eax ;0x0042ee84 : 50 push ecx ;0x0042ee85 : 51 call SetWindowPos ;0x0042ee86 : ff1550739100 mov edx , dword ptr [edi] ;0x0042ee8c : 8b17 test byte ptr [ edx - 7 ] , 080h ;0x0042ee8e : f642f980 je Label42ee9b ;0x0042ee92 : 7407 mov eax , edi ;0x0042ee94 : 8bc7 call Fun42fa41 ;0x0042ee96 : e8a60b0000 Label42ee9b :: mov eax , dword ptr [edi] ;0x0042ee9b : 8b07 mov esi , edi ;0x0042ee9d : 8bf7 mov word ptr [ eax - 8 ] , 0Bh ;0x0042ee9f : 66c740f80b00 call Fun42fc5a ;0x0042eea5 : e8b00d0000 Label42eeaa :: mov eax , dword ptr [ Data937220 ] ;0x0042eeaa : a120729300 lea ecx , dword ptr [ ebp + 0FFFFFF58h ] ;0x0042eeaf : 8d8d58ffffff cmp ecx , eax ;0x0042eeb5 : 3bc8 jne Label5a8175 ;0x0042eeb7 : 0f85b8921700 mov edx , dword ptr [ Data937220 ] ;0x0042eebd : 8b1520729300 mov eax , dword ptr [ edx + 76 ] ;0x0042eec3 : 8b424c cmp dword ptr [ ebp - 64 ] , eax ;0x0042eec6 : 3945c0 mov dword ptr [ Data937220 ] , eax ;0x0042eec9 : a320729300 jne Label5a817f ;0x0042eece : 0f85ab921700 test ebx , ebx ;0x0042eed4 : 85db jne Label5a8189 ;0x0042eed6 : 0f85ad921700 mov eax , dword ptr [ ebp - 72 ] ;0x0042eedc : 8b45b8 mov esi , dword ptr [ ebp + 8 ] ;0x0042eedf : 8b7508 push eax ;0x0042eee2 : 50 push esi ;0x0042eee3 : 56 push edi ;0x0042eee4 : 57 call Fun42fd21 ;0x0042eee5 : e8370e0000 test eax , eax ;0x0042eeea : 85c0 je Label5a819c ;0x0042eeec : 0f84aa921700 Label42eef2 :: test edi , edi ;0x0042eef2 : 85ff je Label42ef13 ;0x0042eef4 : 741d test byte ptr [ esi + 4 ] , 02h ;0x0042eef6 : f6460402 je Label42ef03 ;0x0042eefa : 7407 mov eax , edi ;0x0042eefc : 8bc7 call Fun437d03 ;0x0042eefe : e8008e0000 Label42ef03 :: test dword ptr [ Data9370f4 ] , 010000h ;0x0042ef03 : f705f470930000000100 jne Label5a81ad ;0x0042ef0d : 0f859a921700 Label42ef13 :: mov eax , edi ;0x0042ef13 : 8bc7 pop edi ;0x0042ef15 : 5f pop esi ;0x0042ef16 : 5e pop ebx ;0x0042ef17 : 5b mov esp , ebp ;0x0042ef18 : 8be5 pop ebp ;0x0042ef1a : 5d ret 08h ;0x0042ef1b : c20800 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. IMPORTANT NOTE: Some extended window styles can only be supported on some new Windows versions, recommend to check the OS() function first, for example, IF VAL(OS(3))>6 OR (VAL(OS(3))=6 AND VAL(OS(4))>=2) && Windows 8 or later =SYS(9056,0x00200000) && WS_EX_NOREDIRECTIONBITMAP ENDIF 5. REFERENCE WEBSITES: 1, baiyujia.com: http://www.baiyujia.com http://www.baiyujia.com/vfpdocuments/f_vfp9fix163.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix161.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix162.asp 2, microsoft.com: https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-createwindowexa https://docs.microsoft.com/en-us/windows/win32/winmsg/extended-window-styles https://docs.microsoft.com/en-us/archive/msdn-magazine/2014/june/windows-with-c-high-performance-window-layering 3, stackoverflow.com: https://stackoverflow.com/questions/40576394/setwindowlong-with-gwl-exstyle-and-ws-ex-noredirectionbitmap 6. OTHER: For reference only, there is no guarantees. Any questions or suggestions, please send me an email at ccb2000@163.com. |