----------------------------------------------------------------------------------------
[ENHANCED] VFP 9.0 FIX - THE EXTENDED WINDOW STYLE OF THE WINDOW BEING CREATED
January 2026
----------------------------------------------------------------------------------------
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.
|