----------------------------------------------------------------------------------------------
[ENHANCED] VFP 9.0 FIX - SAVE NEGATIVE COORDINATES FOR THE MAIN VISUAL FOXPRO WINDOW
January 2025
----------------------------------------------------------------------------------------------
CCB
1. BUG:
In VFP Advanced 32-bit, we can set the saving negative coordinates for the main Visual FoxPro window in the Windows registry:
HKEY_CURRENT_USER\Software\Microsoft\VisualFoxPro\10.n\Options\SaveDesktopNegativeCoordinates.
In VFP Advanced 64-bit, we can set the saving negative coordinates for the main Visual FoxPro window in the Windows registry:
HKEY_CURRENT_USER\Software\Microsoft\VisualFoxPro64\10.n\Options\SaveDesktopNegativeCoordinates.
2. CAUSE:
There are some BUGs in the following code.
3. RESOLUTION:
We can write some code to fix the BUG.
Fun553dc9 :: ; proc near
push ebp ;0x00553dc9 : 55
mov ebp , esp ;0x00553dca : 8bec
sub esp , 06Ch ;0x00553dcc : 83ec6c
cmp dword ptr [ Data93bb60 ] , 00h ;0x00553dcf : 833d60bb930000
mov eax , dword ptr [ Data937090 ] ;0x00553dd6 : a190709300
mov dword ptr [ ebp - 4 ] , eax ;0x00553ddb : 8945fc
jne Label553eaf ;0x00553dde : 0f85cb000000
mov eax , dword ptr [ Data937794 ] ;0x00553de4 : a194779300
push esi ;0x00553de9 : 56
push edi ;0x00553dea : 57
lea esi , dword ptr [ ebp - 108 ] ;0x00553deb : 8d7594
call Fun54fea1 ;0x00553dee : e8aec0ffff
;
; -----------------------------------------------------------------------------------
; VFP 9.0 FIX - SAVE NEGATIVE COORDINATES FOR THE MAIN VISUAL FOXPRO WINDOW
; January 2022
; -----------------------------------------------------------------------------------
; CCB
;
; Save negative coordinates for the main Visual FoxPro window.
; If the Top property of the main Visual FoxPro window (_VFP.Top) < -28000, vfp will not save coordinates in the Windows registry.
; If the Top property of the main Visual FoxPro window (_VFP.Top) > +28000, vfp will not save coordinates in the Windows registry.
; If the Left property of the main Visual FoxPro window (_VFP.Left) < -28000, vfp will not save coordinates in the Windows registry.
; If the Left property of the main Visual FoxPro window (_VFP.Left) > +28000, vfp will not save coordinates in the Windows registry.
;
; 2022/1/4, by ccb
;
mov eax , dword ptr [ ebp - 104 ]
cmp eax , -28000
jl Label553ead
cmp eax , +28000
jg Label553ead
mov eax , dword ptr [ ebp - 108 ]
cmp eax , -28000
jl Label553ead
cmp eax , +28000
jg Label553ead
Label553df3 ::
mov edi , offset Data91d4e4 ;0x00553df3 : bfe4d49100
call Fun42e3a0 ;0x00553df8 : e8a3a5edff
mov edi , eax ;0x00553dfd : 8bf8
test edi , edi ;0x00553dff : 85ff
je Label553ead ;0x00553e01 : 0f84a6000000
mov eax , dword ptr [ebx] ;0x00553e07 : 8b03
mov eax , dword ptr [ eax + 68 ] ;0x00553e09 : 8b4044
shr eax , 03h ;0x00553e0c : c1e803
and eax , 01h ;0x00553e0f : 83e001
push eax ;0x00553e12 : 50
pushd 09418h ;0x00553e13 : 6818940000
push edi ;0x00553e18 : 57
call Fun553d4a ;0x00553e19 : e82cffffff
mov eax , ebx ;0x00553e1e : 8bc3
call Fun54fea1 ;0x00553e20 : e87cc0ffff
;
; -----------------------------------------------------------------------------------
; VFP 9.0 FIX - SAVE NEGATIVE COORDINATES FOR THE MAIN VISUAL FOXPRO WINDOW
; January 2022
; -----------------------------------------------------------------------------------
; CCB
;
; Save negative coordinates for the main Visual FoxPro window.
; If the Top property of the main Visual FoxPro window (_VFP.Top) < -28000, vfp will not save coordinates in the Windows registry.
; If the Top property of the main Visual FoxPro window (_VFP.Top) > +28000, vfp will not save coordinates in the Windows registry.
; If the Top property of the main Visual FoxPro window (_VFP.Top) < 0, vfp will set the value of the registry key "Row" to 0.
;
; 2022/1/4, by ccb
;
; push dword ptr [ ebp - 104 ] ;0x00553e25 : ff7598
mov eax , dword ptr [ ebp - 104 ]
cmp eax , -28000
jl Label553ead
cmp eax , +28000
jg Label553ead
cmp dword ptr vfpa_sys9073_data,00h
jne Label553e25
cmp eax , 00h
jge Label553e25
mov eax , 00h
Label553e25 ::
push eax
pushd 09419h ;0x00553e28 : 6819940000
push edi ;0x00553e2d : 57
call Fun553d4a ;0x00553e2e : e817ffffff
;
; -----------------------------------------------------------------------------------
; VFP 9.0 FIX - SAVE NEGATIVE COORDINATES FOR THE MAIN VISUAL FOXPRO WINDOW
; January 2022
; -----------------------------------------------------------------------------------
; CCB
;
; Save negative coordinates for the main Visual FoxPro window.
; If the Left property of the main Visual FoxPro window (_VFP.Left) < -28000, vfp will not save coordinates in the Windows registry.
; If the Left property of the main Visual FoxPro window (_VFP.Left) > +28000, vfp will not save coordinates in the Windows registry.
; If the Left property of the main Visual FoxPro window (_VFP.Left) < 0, vfp will set the value of the registry key "Column" to 0.
;
; 2022/1/4, by ccb
;
; push dword ptr [ ebp - 108 ] ;0x00553e33 : ff7594
mov eax , dword ptr [ ebp - 108 ]
cmp eax , -28000
jl Label553ead
cmp eax , +28000
jg Label553ead
cmp dword ptr vfpa_sys9073_data,00h
jne Label553e33
cmp eax , 00h
jge Label553e33
mov eax , 00h
Label553e33 ::
push eax
pushd 0941Ah ;0x00553e36 : 681a940000
push edi ;0x00553e3b : 57
call Fun553d4a ;0x00553e3c : e809ffffff
mov eax , dword ptr [ ebp - 96 ] ;0x00553e41 : 8b45a0
sub eax , dword ptr [ ebp - 104 ] ;0x00553e44 : 2b4598
push eax ;0x00553e47 : 50
pushd 0941Bh ;0x00553e48 : 681b940000
push edi ;0x00553e4d : 57
call Fun553d4a ;0x00553e4e : e8f7feffff
mov eax , dword ptr [ ebp - 100 ] ;0x00553e53 : 8b459c
sub eax , dword ptr [ ebp - 108 ] ;0x00553e56 : 2b4594
push eax ;0x00553e59 : 50
pushd 0941Ch ;0x00553e5a : 681c940000
push edi ;0x00553e5f : 57
call Fun553d4a ;0x00553e60 : e8e5feffff
lea eax , dword ptr [ ebp - 92 ] ;0x00553e65 : 8d45a4
push eax ;0x00553e68 : 50
mov edx , ebx ;0x00553e69 : 8bd3
call Fun42ea61 ;0x00553e6b : e8f1abedff
call Fun4308bf ;0x00553e70 : e84acaedff
pushd 0941Dh ;0x00553e75 : 681d940000
push edi ;0x00553e7a : 57
lea ecx , dword ptr [ ebp - 92 ] ;0x00553e7b : 8d4da4
call Fun55421e ;0x00553e7e : e89b030000
mov eax , dword ptr [ Data93b96c ] ;0x00553e83 : a16cb99300
test eax , eax ;0x00553e88 : 85c0
je Label5779f8 ;0x00553e8a : 0f84683b0200
Label553e90 ::
lea ecx , dword ptr [ ebp - 92 ] ;0x00553e90 : 8d4da4
push ecx ;0x00553e93 : 51
call Fun4308bf ;0x00553e94 : e826caedff
pushd 0941Eh ;0x00553e99 : 681e940000
push edi ;0x00553e9e : 57
lea ecx , dword ptr [ ebp - 92 ] ;0x00553e9f : 8d4da4
call Fun55421e ;0x00553ea2 : e877030000
push edi ;0x00553ea7 : 57
call Fun43d889 ;0x00553ea8 : e8dc99eeff
Label553ead ::
pop edi ;0x00553ead : 5f
pop esi ;0x00553eae : 5e
Label553eaf ::
mov ecx , dword ptr [ ebp - 4 ] ;0x00553eaf : 8b4dfc
call Fun42bf1d ;0x00553eb2 : e86680edff
leave ;0x00553eb7 : c9
ret ;0x00553eb8 : c3
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_vfp9fix201.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix131.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix132.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix133.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix134.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix135.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix136.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix137.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix138.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix395.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix396.asp
2, tek-tips.com:
https://www.tek-tips.com/viewthread.cfm?qid=1802202
https://www.tek-tips.com/viewthread.cfm?qid=1801815
3, foxite.com:
https://www.foxite.com/archives/command-window-disappeared-0000473575.htm
4, microsoft.com:
https://devblogs.microsoft.com/oldnewthing/20041028-00/?p=37453
https://social.msdn.microsoft.com/Forums/en-US/1d09b809-b60f-4140-b2e4-9ff211e5c0a3/foxpro-only-displays-command-window-not-main-window
5, west-wind.com:
https://www.west-wind.com/wconnect/weblog/ShowEntry.blog?id=836
6, stackoverflow.com:
https://stackoverflow.com/questions/1478765/location-coordinates-on-computer-showing-x-32000-y-32000
7, github.com:
https://github.com/rembound/Arena-Helper/pull/20
https://github.com/psychopy/psychopy/issues/1472
8, autohotkey.com:
https://www.autohotkey.com/boards/viewtopic.php?style=7&t=17932
9, autoitscript.com:
https://www.autoitscript.com/forum/topic/189862-is-window-minimized-off-screen-or-both/
10, codeproject.com:
https://forum.codeproject.com/topic/718009/a-place-out-of-view
11, sourceforge.com:
https://sourceforge.net/p/dev-cpp/discussion/48211/thread/5af5cfd5/
https://sourceforge.net/p/astrotortilla/discussion/issues/thread/d8053f76/
6. OTHER:
For reference only, there is no guarantees.
Any questions or suggestions, please send me an email at ccb2000@163.com.
|