♣
共同研究PB在不同分辩率运行的问题,怎么样自适应分辩率
我有一函数,但是有两个数据窗口的时候和线条是会出错啊
请大家帮看一看这个代码啊
函数如下:
/*功能:自动适应分辩率
函数名:f_windowscreen
返回值:public integer
参数 readonly window arwin 窗口名称
value integer arx 分辩率值 如:800*600
value integer ary 分辩率值
调用格式:f_windowscreen(arwin,800,600)
说明:以800*600的分辩率运行
*/
environment env
int ii_screenwidth,ii_screenheight
double wradio,hradio,radio
int ii_winbolderwidth,ii_winbolderheight
getenvironment(env)
ii_winbolderwidth=arwin.width - arwin.workspacewidth()//取得窗体边框的宽度
ii_winbolderheight=arwin.height - arwin.workspaceheight()
ii_screenwidth=env.screenwidth
ii_screenheight=env.screenheight
//************************************************************************//
//获取需要调整的计算机分辨率**********************************************//
wradio=ii_screenwidth/arx //标准认为屏幕分辨率为arx*ary
hradio=ii_screenheight/ary//计算出屏幕相对arx*ary分辨率的变化
radio=min(wradio,hradio)
if radio=1.0 then //如果分辨率是arx*ary
return 0
end if
if (arwin.windowtype=mdihelp!) or (arwin.windowtype=mdi!) then
arwin.resize(arwin.workspacewidth()*radio,arwin.workspaceheight()*radio)
return 0
else
arwin.hide()
arwin.width=(arwin.width - ii_winbolderwidth)*radio + ii_winbolderwidth
arwin.height=(arwin.height - ii_winbolderheight)*radio + ii_winbolderheight
int i
dragobject temp//用于取各种控件
windowobject song[]
song[]=arwin.control[]
for i=1 to upperbound(song)
temp=arwin.control[i]//调整控件大小和位置
temp.width=temp.width*radio
temp.x=temp.x*radio
temp.height=temp.height*radio
temp.y=temp.y*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!//get datawindow zoomen
datawindow dw
dw=temp
dw.object.datawindow.zoon=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
arwin.show()
return 0
end if
· 网友精彩回答:
頂,看不懂,我是一個初學者,想看看你們的代碼。
还是参考一下pfc的resize服务吧。
参考深蓝
pb例子上也有,挺好用的,又不出错,楼主可以参考一下。
接分.
搂主,您解决了,可以把如何解决告诉大家一下吗?以后可能有有遇到您这个问题的人,让他们也可以查到解决的方法吧。
.- 更多问题:
- · 对MFC生成的文件,应如何分析
- · 求一用C#编写的Web Servies的例子
- · 问几个asp.net综合性的简单问题
- · 第二个外部IP如何通过宽带路由器映射到本地局域网地址.
- · 公司局域网,怎样进入别人机器?比如c$
- · 好多问题哦???
- · 能引用其他窗体中定义的变量吗?
- · 点击左边框架的链接后,在右边框架显示页面?
- · ◆◇◆ 如何可以使得弹出提示框,点击确定以后继续执行后面的代码? ◆◇◆
- · 请教高手一个关于文本框事件触发的问题
- · 最后80分送出!在多文档界面中怎样调用自己另外定义的视图类对应的序列化函数Serilize()
- · Global.asax 中怎么得到当前网站的物理路径??
- · 如何让字符串包含0值而不是将其作为字符串结束符?可能实现吗?
- · 请教高手:vb连接Excel,如何合并单元格????
- · 请教一关于DRM的问题
- · 放分!

