------------------------------------------------------------ [ENHANCED] VFP 9.0 FIX - THE PRINT PREVIEW TOOLBAR January 2024 ------------------------------------------------------------ CCB 1. BUG: In vfp9 (and vfp6, vfp7, vfp8), it will ALWAYS show the Print Preview toolbar. 2. CAUSE: There are some BUGs in the following code. 3. RESOLUTION: We can write some code to fix the BUG. Fun62673d :: ; proc near push ecx ;0x0062673d : 51 push edi ;0x0062673e : 57 mov edi , 0FFFFBC00h ;0x0062673f : bf00bcffff push edi ;0x00626744 : 57 call Fun49ec74 ;0x00626745 : e82a85e7ff test eax , eax ;0x0062674a : 85c0 jne Label626799 ;0x0062674c : 754b mov ecx , 0915h ;0x0062674e : b915090000 call Fun42c583 ;0x00626753 : e82b5ee0ff ; ; ------------------------------------------------- ; VFP 9.0 FIX - THE PRINT PREVIEW TOOLBAR ; October 2018 ; ------------------------------------------------- ; CCB ; ; In vfp9, it will ALWAYS show the Print Preview toolbar. ; In VFP Advanced, it can show or hide the Print Preview toolbar. ; ; 2018/10/9, by ccb ; mov dword ptr vfpa_showprintpreview_iscreatewindow,01h mov dword ptr vfpa_showprintpreview_hwnd,00h push eax ;0x00626758 : 50 mov edx , 024Dh ;0x00626759 : ba4d020000 mov ecx , edi ;0x0062675e : 8bcf call Fun40f96f ;0x00626760 : e80a92deff \r\n ; ; ------------------------------------------------- ; VFP 9.0 FIX - THE PRINT PREVIEW TOOLBAR ; October 2018 ; ------------------------------------------------- ; CCB ; ; In vfp9, it will ALWAYS show the Print Preview toolbar. ; In VFP Advanced, it can show or hide the Print Preview toolbar. ; ; 2018/10/9, by ccb ; mov dword ptr vfpa_showprintpreview_iscreatewindow,00h pushd 01h ;0x00626765 : 6a01 mov eax , 01000h ;0x00626767 : b800100000 call Fun41114e ;0x0062676c : e8dda9deff cmp dword ptr [ esp + 12 ] , 00h ;0x00626771 : 837c240c00 jne Label62678d ;0x00626776 : 7515 pushd 0800h ;0x00626778 : 6800080000 call Fun43b78b ;0x0062677d : e80950e1ff test eax , eax ;0x00626782 : 85c0 je Label62678d ;0x00626784 : 7407 call Fun8f8dba ;0x00626786 : e82f262d00 jmp Label626799 ;0x0062678b : eb0c Label62678d :: ; ; ------------------------------------------------- ; VFP 9.0 FIX - THE PRINT PREVIEW TOOLBAR ; October 2018 ; ------------------------------------------------- ; CCB ; ; In vfp9, it will ALWAYS show the Print Preview toolbar. ; In VFP Advanced, it can show or hide the Print Preview toolbar. ; ; 2018/10/9, by ccb ; mov dword ptr vfpa_showprintpreview_isshowwindow,01h xor edx , edx ;0x0062678d : 33d2 pushd 00h ;0x0062678f : 6a00 inc edx ;0x00626791 : 42 mov ecx , edi ;0x00626792 : 8bcf call Fun8f890c ;0x00626794 : e873212d00 ; ; ------------------------------------------------- ; VFP 9.0 FIX - THE PRINT PREVIEW TOOLBAR ; October 2018 ; ------------------------------------------------- ; CCB ; ; In vfp9, it will ALWAYS show the Print Preview toolbar. ; In VFP Advanced, it can show or hide the Print Preview toolbar. ; ; 2018/10/9, by ccb ; mov dword ptr vfpa_showprintpreview_isshowwindow,00h mov dword ptr vfpa_showprintpreview_hwnd,00h Label626799 :: pop edi ;0x00626799 : 5f pop ecx ;0x0062679a : 59 ret 04h ;0x0062679b : c20400 Now In VFP Advanced, it can show or hide the Print Preview toolbar. In vfp9 and VFP Advanced, if we set ReportBehavior 90, we can also use the ReportPreview.ToolbarIsVisible property to show or hide the Print Preview toolbar. 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_vfp9fix50.asp 2, foxite.com: https://www.foxite.com/archives/hiding-print-preview-toolbar-0000050256.htm https://www.foxite.com/archives/code-in-displaying-print-preview-toolbr-0000028805.htm 6. OTHER: For reference only, there is no guarantees. Any questions or suggestions, please send me an email at ccb2000@163.com. |