CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  基础类

该屏幕分辨率的api

楼主antoversky(antoversky)2003-11-01 21:29:11 在 PowerBuilder / 基础类 提问

该屏幕分辨率的api 问题点数:0、回复次数:5Top

1 楼lmby(鹿门布衣)回复于 2003-11-01 21:35:52 得分 0

int   li_screenH,li_screenW  
  environment   le_Env  
  GetEnvironment(le_Env)  
   
  li_ScreenH   =   PixelsToUnits(le_Env.ScreenHeight,   YPixelsToUnits!)  
  li_ScreenW   =   PixelsToUnits(le_Env.ScreenWidth,   XPixelsToUnits!)  
  if   le_env.screenheight=480   then  
  sle_1.text="目前系统分辨率为640*480"  
  elseif   le_env.screenheight   =   600   then  
    sle_1.text="目前系统分辨率为800*600"  
      elseif   le_env.screenheight   =   768   then  
      sle_1.text="目前系统分辨率为1024*768"  
  elseif   le_env.screenheight   =   864   then  
    sle_1.text="目前系统分辨率为1152*864"  
  elseif   le_env.screenheight   =   1024   then  
    sle_1.text="目前系统分辨率为1280*1024"  
  end   if  
  Top

2 楼lmby(鹿门布衣)回复于 2003-11-01 21:52:49 得分 0

sorry,你是要"该"改啊...我还以为要读呢.  
   
  做一个自适应屏幕分辨率的窗口,当成一个应用程序中所有窗体的基类。这样整个程序可以很好的适应屏幕分辨率的改变。实现的原理很简单,就是在窗口打开的时候去RESIZE窗口和窗口中的控件大小,位置。参看下面的源代码,可以很容易的看懂。  
   
  1。新建一个窗口。  
   
  为窗口写一个函数f_resize()大部分工作就在这里。  
  无输入参数  
  返回值为整形:  
   
  environment   env  
  integer   ii_ScreenWidth,ii_ScreenHeight  
  double   WRadio,HRadio,Radio  
  integer   ii_WinBolderWidth,ii_WinBolderHeight  
  getenvironment(env)  
  ii_WinBolderWidth=this.width   -   this.WorkSpaceWidth()//取得窗体的边框宽度  
  ii_WinBolderHeight=this.height   -   this.WorkSpaceHeight()  
  ii_ScreenWidth=env.screenwidth  
  ii_ScreenHeight=env.screenheight  
  //compute   the   radio   that   need   be   resize  
   
  WRadio=ii_ScreenWidth/800   //标准认为屏幕分辨率为800*600  
  HRadio=ii_ScreenHeight/600//计算出屏幕相对800*600分辨率的变化量  
  Radio=Min(WRadio,HRadio)  
  if   Radio=1.0   then   //if   the   screen   is   default   800*600  
  return   0  
  end   if    
  this.hide()  
  this.width=(this.width   -   ii_WinBolderWidth)*Radio   +   ii_WinBolderWidth  
  this.height=(this.height   -   ii_WinBolderHeight)*Radio   +   ii_WinBolderHeight    
  integer   i  
  dragobject   temp//用于取各种控件  
   
  for   i=1   to   upperbound(this.control)  
  temp=this.control[i]//调整大小,位置  
  temp.width=temp.width*Radio  
  temp.x=temp.x*Radio  
  temp.y=temp.y*Radio  
  temp.Height=temp.Height*Radio  
  choose   case   typeof(temp)  
      case   tab!  
      tab   mtab  
      mtab=temp  
      mtab.textsize   =     mtab.textsize*Radio//设置字体  
      case   commandbutton!  
      commandbutton   cb  
      cb   =   temp  
      cb.textsize   =     cb.textsize*Radio  
   
      case   singlelineedit!  
      singlelineedit   sle  
      sle   =   temp  
      sle.textsize=sle.textsize*Radio  
      case   editmask!  
      editmask   em  
      em   =   temp  
      em.textsize   =     em.textsize*Radio  
       
      case   statictext!  
      statictext   st  
      st   =   temp  
      st.textsize   =   st.textsize*Radio    
   
      case   datawindow!   //   datawindows   get   zoomed  
      datawindow   dw  
      dw   =   temp  
      dw.Object.DataWindow.zoom   =   string(int(Radio*100))//注意DATAWINDOW与其它控件的不同  
   
      case   picturebutton!  
      picturebutton   pb  
      pb   =   temp  
      pb.textsize   =     pb.textsize*Radio  
   
      case   checkbox!  
      checkbox   cbx  
      cbx   =   temp  
      cbx.textsize   =     cbx.textsize*Radio  
   
      case   dropdownlistbox!  
      dropdownlistbox   ddlb  
      ddlb   =   temp  
      ddlb.textsize   =     ddlb.textsize*Radio  
   
      case   groupbox!  
      groupbox   gb  
      gb   =   temp  
      gb.textsize   =     gb.textsize*Radio  
   
      case   listbox!  
      listbox   lb  
      lb   =   temp  
      lb.textsize     =     lb.textsize*Radio    
   
      case   multilineedit!  
      multilineedit   mle  
      mle   =   temp  
      mle.textsize   =   mle.textsize*Radio  
   
      case   radiobutton!  
      radiobutton   rb  
      rb   =   temp  
      rb.textsize   =     rb.textsize*Radio  
   
  end   choose  
  next  
  this.show()  
  return   0  
   
  函数写好以后,在窗体的OPEN事件里调用该函数即可.  
   
  Top

3 楼yanghongfeng(枫中飘叶)回复于 2003-11-02 12:19:43 得分 0

有这个更改分辨率的dll可以在www.pbdrive.com中找到,但是不能更改刷新率。Top

4 楼jdsnhan(柳荫凉)回复于 2003-11-02 12:57:33 得分 0

试试这个  
  Global     External     Function:          
  FUNCTION     ulong     GetPixel(ulong     hwnd,     long     xpos,     long     ypos)     LIBRARY     "Gdi32.dll"          
  FUNCTION     ulong     SetPixel(ulong     hwnd,     long     xpos,     long     ypos,     ulong     pcol)     LIBRARY     "Gdi32.dll"          
     
  Script:          
  long     lx,     ly          
  ulong     rtn          
  ulong     l_handle,     l_device          
  lx     =     100          
  ly     =     100          
  l_handle     =     handle(w_main)          
  l_device     =     GetDC(l_handle)          
  rtn     =     GetPixel(l_device,     100,     100)          
  MessageBox("Position     "     +     string(lx)     +     ","     +     string(ly),"Color     =     "     +     string(rtn))          
  SetPixel(l_device,     lx,     ly,     0)     //     This     call     will     set     the     pixel     at     lx,     ly     to     black.Top

5 楼dingzhaofeng(Alading)回复于 2003-11-02 20:53:48 得分 0

MARK!Top

相关问题

  • API如何获得屏幕分辨率
  • 屏幕分辨率
  • 如何更改屏幕分辨率,WINDOWS有否API提供?
  • 请问获得屏幕分辨率的API函数是什么?
  • 那个API函数能获取屏幕的分辨率
  • 用哪个API 动态改变屏幕的分辨率??(回答立即给分)
  • 如何改变屏幕的分辨率?
  • 如何取得屏幕的分辨率??
  • 关于屏幕分辨率的问题。
  • 如何得到屏幕的分辨率

关键词

  • 屏幕
  • 系统
  • 分辨率
  • screenheight
  • env
  • le
  • hradio
  • winbolderheight
  • winbolderwidth
  • lx

得分解答快速导航

  • 帖主:antoversky

相关链接

  • PowerBuilder类图书
  • PowerBuilder类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo