VFP7:如何设屏幕分辩率为1024x768……

thinclient 2012-10-30 03:33:55
VFP7:如何设屏幕分辩率为1024x768后再进入主程序
在程序的退出代码中再恢复为程序执行前的分辩率?

希望使用API完成
...全文
282 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
needanothercoder 2012-11-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
1、为何不用 vfp9.0?
2、不方便换 vfp9.0 的话,用木瓜大侠的 MyFll.Fll 中的ChangEres()函数吧。
3、保存和恢复原分辨率,这个很简单,用
SYSMETRIC(1) 取得屏幕宽度
SYSMETRIC(2) 取得屏幕高度
保存给变量或字段都可以,退出时再根据这些值再设置一次就可以了。
[/Quote]
专业全面的回答,呵呵
十豆三 2012-11-02
  • 打赏
  • 举报
回复
1、为何不用 vfp9.0?
2、不方便换 vfp9.0 的话,用木瓜大侠的 MyFll.Fll 中的ChangEres()函数吧。
3、保存和恢复原分辨率,这个很简单,用
SYSMETRIC(1) 取得屏幕宽度
SYSMETRIC(2) 取得屏幕高度
保存给变量或字段都可以,退出时再根据这些值再设置一次就可以了。

taohua300 2012-11-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
引用 1 楼 的回复:
SQL code
? SetDisplayMode( '1024x768x32@70' )

*!* ---------------------------------------------------------------------------------
*!* 功能: 设置当前显示模式
*!* 入口: tcModeDesc - 显示模式描述, 格式为……
[/Quote]

豆老师代码里已经有获取当前显示设置的代码了
反过来写不就成了
thinclient 2012-11-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
SQL code
? SetDisplayMode( '1024x768x32@70' )

*!* ---------------------------------------------------------------------------------
*!* 功能: 设置当前显示模式
*!* 入口: tcModeDesc - 显示模式描述, 格式为: 宽x高x颜色位数@刷新……
[/Quote]
谢大侠不吝赐教
只是这是运行在VFP9下的,我的系统是vfp7, 有不识别的函数
再就是没有保存和恢复原分辩率的代码
十豆三 2012-10-30
  • 打赏
  • 举报
回复
另外,木瓜大侠的 MyFll.Fll 中也有相关函数

函数名:ChangEres(nWidth,nHeight)
缩写:ChEr
更改屏幕的分辨率
返回值:
数值型:

0 :更改成功
1 :需要重新启动
-1:更改失败
-2:不支持此设置
-3:无法写入注册信息
参数:
nWidth :宽度
nHeight:高度
示例代码
Set Library To myFll
If(ChangEres(800,600)==0)
MessageBox("你的屏幕已被改为800*600")
else
MessageBox("更改失败")
EndIf
Set Library To
十豆三 2012-10-30
  • 打赏
  • 举报
回复
? SetDisplayMode( '1024x768x32@70' )

*!* ---------------------------------------------------------------------------------
*!* 功能: 设置当前显示模式
*!* 入口: tcModeDesc - 显示模式描述, 格式为: 宽x高x颜色位数@刷新率
*!*    tiType - 0/1/2 ( 临时/永久/测试 )
*!* 出口: 操作结果( -1/0/1 - 失败/成功/需要重启生效 )
*!* by:dkfdtf
*!* 需要 vfp9
*!* ---------------------------------------------------------------------------------
Procedure SetDisplayMode( tcModeDesc, tiType )

#Define CDS_UPDATEREGISTRY 0x00000001
#Define CDS_TEST 0x00000002
#Define CDS_FULLSCREEN 0x00000004
#Define CDS_GLOBAL 0x00000008
#Define CDS_SET_PRIMARY 0x00000010
#Define CDS_VIDEOPARAMETERS 0x00000020
#Define CDS_NORESET 0x10000000
#Define CDS_RESET 0x40000000

#Define DM_BITSPERPEL 0x00040000
#Define DM_PELSWIDTH 0x00080000
#Define DM_PELSHEIGHT 0x00100000
#Define DM_DISPLAYFLAGS 0x00200000
#Define DM_DISPLAYFREQUENCY 0x00400000

If ( Pcount() < 1 )
Return .F.
Endif
If ( Pcount() < 2 )
m.tiType = 0
Endif

Local iWidth, iHeight, iBpp, iFreq, cDevMode, iItems, iResult

m.iWidth = Cast( Getwordnum( m.tcModeDesc, 1, 'x' ) As I )
m.iHeight = Cast( Getwordnum( m.tcModeDesc, 2, 'x' ) As I )
m.iBpp = Cast( Getwordnum( m.tcModeDesc, 3, 'x' ) As I )
m.iFreq = Cast( Getwordnum( m.tcModeDesc, 2, '@' ) As I )

m.cDevMode = Replicate( Chr(0), 4+16+5*2+32+2+( 4*3+4+4 )+8*4 )
m.cDevMode = Replicate( Chr(0), 32 + 4 ) ;
+ BinToC( Len( m.cDevMode ), 'rs' ) + m.cDevMode

*!* 获取当前显示设置
Declare Long EnumDisplaySettings In WIN32API As _dp_enumdispset ;
String lpszDeviceName, ; && specifies the display device
Long iModeNum, ; && specifies the graphics mode
String @ lpDevMode && points to structure to receive settings
_dp_enumdispset( Null, -1, @ m.cDevMode ) && -1 == ENUM_CURRENT_SETTINGS
Clear Dlls _dp_enumdispset

m.iItems = Bitor( DM_BITSPERPEL, DM_PELSWIDTH, DM_PELSHEIGHT, DM_DISPLAYFREQUENCY )
m.cDevMode = Left( m.cDevMode, 32+8 ) ;
+ BinToC( m.iItems, 'rs' ) ;
+ Substr( m.cDevMode, 1+32+8+4, 16+5*2+32+2 ) ;
+ BinToC( m.iBpp, 'rs' ) ;
+ BinToC( m.iWidth, 'rs' ) + BinToC( m.iHeight, 'rs' ) ;
+ Substr( m.cDevMode, 1+32+8+4+4*3, 4 ) ;
+ BinToC( m.iFreq, 'rs' ) ;
+ Substr( m.cDevMode, 1+32+8+4+4*3+4 )
Declare Long ChangeDisplaySettings In WIN32API As _dp_setdispmode ;
String lpDevMode, ; && graphics mode
Long dwflags && graphics mode options
m.iResult = _dp_setdispmode( m.cDevMode, Icase( ;
0 == m.tiType, 0, 1 == m.tiType, CDS_UPDATEREGISTRY, CDS_TEST ))
Clear Dlls _dp_setdispmode

Return Iif( m.iResult < 0, -1, m.iResult )
Endproc

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧