注册 登录
编程论坛 VFP论坛

【求助】:VFP环境编中编写的程序上,更改Windows屏幕显示分辨率问题

bilimyar 发布于 2025-08-05 18:19, 224 次点击
【求助】:VFP环境编中编写的程序上,更改Windows屏幕显示分辨率问题
我有一个宽度为1019,高度为700的Form1表单(1019*700);

Form1表单上两个commandbutton 控件,command1.caption="满屏放大模式"、command2.caption="恢复正常模式",
我想要为我的表单Form1满屏放大,要使Windows屏幕显示分辨率更改为最大极限1024*768。
当Windows屏幕显示分辨率更改为最大极限 1024*768 的时候,我的表单Form1才恰好完全满屏(这时避免我的表单Form1上的所有对象超出屏幕外面)。


我想要通过两个个commandbutton 控件,(如:command1、command2)实现这个目的:
当单击command1时,实现当前Windows屏幕显示分辨率更改到1024*768,同时保存到更改1024*768之前当前Windows屏幕显示分辨率
当单击command2时,取消1024*768的分辨率,恢复到更改1024*768之前当前Windows屏幕显示分辨率。

为此,command1(满屏放大模式)的Click事件要写什么代码?
      command2(恢复正常模式)的Click事件要写什么代码?

请高手指教,谢谢
2 回复
#2
kangss2025-08-05 19:43
命令:SYSMETRIC( ) 函数
返回操作系统屏幕元素的大小

表单:WindowState 属性 (Visual FoxPro)
指定表单窗口在运行时刻显示为最大化、最小化 还是普通

程序代码:

lcDevMode=REPLICATE(CHR(0),156)
DECLARE INTEGER EnumDisplaySettings IN user32 INTEGER,INTEGER,STRING @
DECLARE INTEGER ChangeDisplaySettings IN user32 STRING @,INTEGER
*获取当前的显示模式
EnumDisplaySettings(0,4294967295,@lcDevMode)
*改变已获取的显示模式中的分辩率(宽、高)
lcDevMode=STUFF(lcDevMode,109,8,CHR(m._X%256)+CHR(m._X/256)+CHR(0)+CHR(0)+CHR(m._Y%256)+CHR(m._Y/256)+CHR(0)+CHR(0))
*使改变生效
ChangeDisplaySettings(@lcDevMode,1)
CLEAR DLLS "EnumDisplaySettings","ChangeDisplaySettings"
#3
hsfisher2025-08-06 08:26
学习学习
1