说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在VB中利用API实现窗体的平滑显示

HTML文档下载 WORD文档下载 PDF文档下载
在VB中利用API实现窗体的平滑显示


 Win98的一个新功能是窗体能够平滑显示,那我们是否能编程来实现这种功能呢?答案是肯定的。首先讲述一下原理,其实我并没有让窗体本身平滑地显示,而是在窗体显示之前在窗体的位置上画一系列的矩形,利用视觉暂留让人以为是窗体在从小变大。
  下面就用VB来实现这种功能。
  建立两个窗体form1和form2,在form1上添加如下控件:由五个optionbutton控件组成的控件数组,index为0-4,caption属性分别为“从中间扩散”、“右上到左下”、“左上到右下”、“右下到左上”和“左上到右下”,一个commandbutton,caption属性为“显示窗体”, 添加一个模块其中代码如下:
   Option Explicit
  `声明所用的API函数、常量和变量
  Public Declare Function GetDC Lib “user32” (ByVal hwnd As Long) As Long
   Public Declare Function Rectangle Lib “gdi32” (ByVal hdc As Long, _
   ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2_
   As Long) As Long
   Public Declare Function SelectObject Lib “gdi32” (ByVal hdc As Long, _
   ByVal hObject As Long) As Long
   Public Declare Function DeleteObject Lib “gdi32”(ByVal hObject As _
   Long) As Long
   Public Declare Function ReleaseDC Lib “user32” (ByVal hwnd As Long,_
   ByVal hdc As Long) As Long
   Public Declare Sub Sleep Lib “kernel32” (ByVal dwMilliseconds As Long)
   Public Declare Function CreateSolidBrush Lib “gdi32” (ByVal crColor As_
   Long) As Long
   Public Declare Function GetBkColor Lib “gdi32” (ByVal hdc As Long) As Long
   Public hbrush As Long, hdc5 As Long
   Public dx As Long, dy As Long
   Public rx1 As Long, rx2 As Long, ry1 As Long, ry2 As Long
   Public i As Long, j As Long, bcolor As Long
   Public ind As Integer
   Public DispCnt As Long
  
  Public Sub showform(win As Form, ind)
   DispCnt = 60 `画几个矩形后显示窗体
   `下面这段代码用来获得窗体颜色,不用me.backcolor的原因是窗体颜色不一定是系统调色板的颜色,如果用me.backcolor的话颜色可能会不准。
   hdc5 = GetDC(0)
   bcolor = GetBkColor(win.hdc)
   hbrush = CreateSolidBrush(bcolor)`设定刷子颜色
   Call SelectObject(hdc5, hbrush)
   dx = win.Width \ (DispCnt)
   dy = win.Height \ (DispCnt)
   j = 1
   Select Case ind
   Case 1
   dx = dx \ 2; dy = dy \ 2
   For i = DispCnt To 1 Step -1
   rx1 = (win.Left + dx * (i - 1)) \ Screen.TwipsPerPixelX
   ry1 = (win.Top + dy * (i - 1)) \ Screen.TwipsPerPixelY
   rx2 = rx1 + dx * 2 * j \ Screen.TwipsPerPixelX
   ry2 = rx1 + dy * 2 * j \ Screen.TwipsPerPixelY
   j = j + 1
   Call Rectangle(hdc5, rx1, ry1, rx2, ry2)
   Sleep (1); Next i
  Case 2
   For i = DispCnt To 1 Step -1
   rx1 = (win.Left + win.Width - dx * j) \ Screen.TwipsPerPixelX
   ry1 = win.Top \ Screen.TwipsPerPixelY
   rx2 = (win.Left + win.Width) \ Screen.TwipsPerPixelX
   ry2 = (win.Top + dy * j) \ Screen.TwipsPerPixelY
   j = j + 1
   Call Rectangle(hdc5, rx1, ry1, rx2, ry2)
   Sleep (1); Next i
   Case 3
   For i = DispCnt To 1 Step -1
   rx1 = win.Left \ Screen.TwipsPerPixelX
   ry1 = win.Top \ Screen.TwipsPerPixelY
   rx2 = rx1 + dx * j \ Screen.TwipsPerPixelX
   ry2 = rx1 + dy * j \ Screen.TwipsPerPixelY
   j = j + 1
   Call Rectangle(hdc5, rx1, ry1, rx2, ry2)
   Sleep (1); Next i
   Case 4
   For i = DispCnt To 1 Step -1
   rx1 = (win.Left + dx * (i - 1)) \ Screen.TwipsPerPixelX
   ry1 = (win.Top + dy * (i - 1)) \ Screen.TwipsPerPixelY
   rx2 = (win.Left + win.Width) \ Screen.TwipsPerPixelX
   ry2 = (win.Top + win.Height) \ Screen.TwipsPerPixelY
   j = j + 1
   Call Rectangle(hdc5, rx1, ry1, rx2, ry2)
   Sleep (1); Next i
   Case 5
   For i = DispCnt To 1 Step -1
   rx1 = (win.Left) \ Screen.TwipsPerPixelX
   ry1 = (win.Top + win.Height - dy * j) \ Screen.TwipsPerPixelY
   rx2 = (win.Left + dx * j) \ Screen.TwipsPerPixelX
   ry2 = (win.Top + win.Height) \ Screen.TwipsPerPixelY
   j = j + 1
   Call Rectangle(hdc5, rx1, ry1, rx2, ry2)
   Sleep (1); Next i
   End Select
  Call ReleaseDC(0, hdc5)`释放设备描述表
  Call DeleteObject(hbrush)`删除刷子
  End Sub
  在form1中输入如下代码
  Private Sub Command1_Click()`显示窗体
  Unload Form2
  Load Form2
  Form2.Show
  End Sub
  
  Private Sub Form_Load()
   ind = 1`初始化参数
  End Sub
  
  Private Sub Option1_Click(Index As Integer)
  Select Case Index
   Case 0
   ind = 1
   Case 1
   ind = 2
   Case 2
   ind = 3
   Case 3
   ind = 4
   Case 4
   ind = 5
   Case 5
   ind = 6
   End Select
  
  End Sub
  在form2中输入如下代码
  Private Sub Form_Load()
   Call showform(Me, ind)
  End Sub
  本程序调用了一些有关系统和绘图的API函数,有利于大家进一步了解API函数的功能。本程序在vb5企业版,Win98中运行通过。
多盟总设计师邢开捷:四两设计拨千金 Cocos2d-x游戏《Monster Strike》终结《智龙迷城》霸榜神话 高通物联网技术解决方案:从汽车到智慧城市 Arduino携手Atmel 发布Arduino Zero开发板 以色列玫瑰:细数十位科技创新领域的女性佼佼者 8款最佳的开源在线学习CMS系统 在发布站点前,Web开发者需要关注哪些技术细节? TOCC、中航信、高德、北斗平台重磅专家登场 邀您共享ITS技术盛宴 腾讯大数据之TDW计算引擎解析——Shuffle AMD APU14 BEIJING技术创新大会精彩看点 这是云整合时代开始的节奏吗?Rackspace考虑退出 一周热点:如何使用15美元每月的机器实现百万文档检索 黑客获取数据信息的目的和进攻手段及应对之策 Surface Pro 3遭大曝光:799$起、四色可选、12寸屏幕 当软件遇上设计,浅谈敏捷UX VS.精益UX DIY“物联网”——自己动手处理传感器数据 AMD成首家X86+ARM双架构计算 欲寻新蓝海 锤子手机发布:Smartisan T1与其背后的开发团队 第六届中国云计算大会在北京隆重举行 替代笔记本的Surface Pro 3:800g、9.1mm,极致轻薄 PWorld2014:畅谈企业软件向“大平台”+“微应用”变革 微软公司全球资深副总裁张亚勤:云计算引领互联网物理化 亚马逊网络服务全球市场副总裁Ariel Kelman:亚马逊AWS云服务推动创新 终超苹果,谷歌成全球最有价值品牌 高通业务拓展总监沈周全:以软件为基础建立差异化优势 设计你所需要的,而不是你想要的 疯狂谷歌建广告天网:电冰箱、汽车仪表盘、恒温器、眼镜和手表 开发者眼中的编程语言…… 寻下一突破口?黑莓推Project Ion项目,正式进军物联网 无人驾驶汽车真的要来了:飞思卡尔研制视觉芯片 支持物联网开发! Qt发布5.3版与嵌入式企业版 调用存储过程出错,如何解决,在线等,谢谢! 怎么使用(MultiPage,TabStrip)这2个控件来实现界面分多页的操作功能。 给我这样的代码,我给你100分(在线等,急用,我快疯了!) 我的JSP的WEB服务器oracle公司的ias,数据库是oracle,中文显示乱码,请教转换??? 立即加分!!帮忙up也送分!调用COM程序时,出现“在单一线程模式下,试图在一个以上线程进行呼叫”错误,如何是好? b/s模式下如何读取sql,oricle等关系型数据库中的数据? 急!!很菜的问题!NT4下的设备管理器在哪? oracle 在linux上的性能问题? 关于manifest.tmp文件(大侠帮忙!) 请帮我的忙,好吗!!! 系统怎么不是很稳定? 请问一下各位,哪里有可下的lotus 认证教材和试题,多谢多谢!! 寻求控件编写技术下载网址。 谜语:请问CLP和CLS是什么汉语的简写? up有分!★关于《网络编程〉中的问题★:如何设计udp/ip的完成端口模式,udp协议不需要accept.... 关于重定项问题? are there any software in linux, just as netant,office etc in windows? ASP的中文問題 请问:测试工程师的工作是什么?主要测试软件的哪些项目? (100分征集)如何做使得访问JSP服务器时不用加端口号(当然不能用80)?? 菜鸟求助:关于句柄的问题。请高手多多指教 请问什么是存储过程(在SQL 2000SERVER中)? 1000分的大问题!***************怎么突破内存禁区读写的权限 java学什么?怎么学? java学什么?怎么学? 高分急救:Oracle安装完成后,服务可以启动,数据库不与服务一起启动,要手动启动 如何让启动时不自动进入x windows? 下载问题 如何得到CPU的序列号(编程) 向ActiveX控件是否可以传递数组参数 can i read or copy files in windows OS to linux? 什么错误? 将SYBASE数据库移植到SQL SERVER 过程中遇到的问题。急!help session问题 为什么我的web不能进断点? SO_REUSEADDR的疑问 关于web数据库的问题 怎么解??? 再送100分,求jtable例子! 怎样清除在image上画出的线,矩形(在运行时画上去的)?? 寻找在杭州文三路创业大厦11楼上班的朋友 where can i download simsun, and how can i use it? IIS与Apache一起工作,访问Apache时有什么办法不用指定端口? 是不是微软的一个低级漏洞? 谢谢zheng017给你的win2k superuser password的源程序。 在access2000的开发中,text框中如果只输入了空格,用text1.value取数据返回值却是null,如何能够返回空格呢? 强烈推荐:Robocode! 为了全体中国人!请回答我的问题!现在该如何访问google??????????????? =======请大家帮我介绍几个比较好的,LOTUS做的WEB网站。====== 为什么我在 M$ Win2000 使用钩子拦截键盘鼠标消息就那么困难 请问在datagrid里面如何增加记录??? (答题形式)铝合金的表面处理的方法及原因 为什么用很少的能量却能产生很大的能量,这不是不符合能量守恒定律吗比如用1焦的能量扣动手枪,子弹产生的能量却远远大于1焦.能量不是不守恒了吗?这是为什么?从能量守恒定律角度回答, 安塞腰鼓怎么打鼓 已知数列{an},{bn}满足:a1=3,当n>=2时,a(n-1)+an=4n;对于任意的正整数n,b1+2b2+…+2^(n-1)bn=nan.设{bn}的前n项和为Sn.(1)计算a2,a3,并求数列{an}的通项公式;(2)求满足13 油页岩概念股有哪些 压力容器设计时板厚计算方式 奶牛的能量单位NND 和DCP具体指什么 也就是他的中文解释是什么? 已知数列an中,a1=-1,an+an-1+4n+2=0,若bn=an+2n(n∈N*),求证,1:数列bn是的等差数列2:求an的通项公式 油页岩概念股有哪些?油页岩概念股龙头股解析(名单) 环丙烷和丙烯谁的支链多? 已知数列{an}{bn}满足a1=3,当n≧2时,an-1+an=4n,对于任意的正整数n,b1+2*b2+…+2^(n-1)bn=n*an设﹛bn﹜的前n项和为Sn(1)求数列{an}的通项公式 (2)求满足13<Sn<14的集合 油页岩属于什么能源,急紧急! 硫易溶于哪种溶液中? 塑料的导电性如何测试?是测试体积电阻率吗?单位是Ω·cm吗?可是资料给出的结果是E12,E3,E12 E3是体积电阻率的等级吗?和Ω·cm如何换算呢? 反渗透用膜壳包括玻璃钢和不锈钢膜壳属于压力容器吗?需要提供压力容器证吗? 汽车皮带(同步带)这些规格分别是什么意思?MR,RU,ZA,ZBS,S8M,YM,YU 177MR25,130MR25,129MR31,88ZA19 请多多指教! 问题:做地砖用的原料有毒或对身体有害吗吗? 五年级灯说明文急! 物理力学;如果两个力的夹角大于90度而小于180度,则合力一定随着其中的一个力增大而增大吗 五年级苹果说明文200怎么写 请问戴南地区的不锈钢圆棒,不锈钢钢片和不锈钢钢板,哪里的价格合理,质量比较好,售后服务比较好? 为什么力与速度的夹角大于90度小于180度就做减速运动why 地理的等高线地图中三角形符号代表“山峰”还是“山顶”? 不锈钢结构压力容器3.3立方米 ,承压 1.25mpa,壁厚大概多少?圆柱筒体,椭球封头,紧固方式用法兰,压力1.25MPa,温度260℃ 真空砖机的真空原理 如何提高真空砖机的真空原理 以苹果为题,尽快! 关于灯的说明文 初中说明文,关于灯的.500字左右 真空砖机与普通砖机有什么区别 高中地理什么是河流集水方向?在等高线地形图上方向表示为垂直于等高线么? 铁锅是纯铁还是金属氧化物? 真空砖机哪个牌子好用想买真空砖机,不知道哪个牌子好呢 将一定质量的铁铝铜合金加入1L一定浓度的硝酸中完全溶解测得溶液(忽略溶液体积的变化) c(H+)=0.5mol/ L c(Cu2+)=0.3mol/L c(Al3+)=0.2mol/L c(NO3-)=2mol/L 则混合物中铁的质量为6g 安塞腰鼓一文表演前写什么表演时写什么表演后写什么 请给我一张生物进化图(从原始生物到人类)要清晰、中文、字体大还要有史前生物简介 我的意思是请大家自己弄来简介,麻烦了!在这里先谢谢各位 做自由落体运动的物体,最后5S内的位移恰好是前一段时间位移的3倍,求物体开始下落的位置距面的高度H和物体着地时的S速度V 《安塞腰鼓》第七自然段从哪些表演来描写安塞腰鼓的宏面场面?有什么作用?《安塞腰鼓》第七段:一捶起来就发狠了,忘情了,没命了!百十个斜背响鼓的后生,如百十块被强震不断击起的石头, 哪家的真空砖机好?哪家便宜? 某物体做自由落体运动,则A:第2s的平均速度为15m/s````B:第7S的位移为65m````C:后一秒的位移总比前一秒的位移多5m`````D:前一秒的平均速度总比后一秒的平均速度小10 m/s.``````````可能有多个答案. 人死之后,意识是否会随之消失?根据能量守恒定律,会去哪里了呢?我听到的一种说法是,肉体是意识的载体,肉体没有了,意识还在,会寻求其他地方继续. 在6140车床上把32圆的不锈钢加工到20圆的台阶轴怎么选择主轴转速背吃刀量进给量 基坑超过几米的土方开挖工程,应单独编制安全专项施工方案 红砖和水泥砖哪个隔音效果好 加工阶梯轴时,刀具主偏角如何选取 物体做自由落体运动.经过A.B两点的速度分别是20m/s和50m/s,则A.B两点的距离为多少? 用泡沫砖和钢筋混凝土做梁盖民房还是用红砖盖的好,东北地区好像没有这么干的,我倒觉得保暖好,就是不知道强度到底够不够 烷烃能不能溶于四氯化碳? 物体做自由落体运动,则( )A.第2s内的位移是9.8mB.第2s内的位移是14.7mC.第2s内的平均速度是9.8m/sD.第2s内的平均速度是14.7m/s 能量守恒定律不是说,能量从一种形式可以转变成另一种形式,那为什么我烧水做饭没有看到,壶里的水温度越来越低,而煤却越来越旺,或者我家的手电出现灯光越来越暗,电池电量却不断增加的 烷烃易溶于什么? 在线等 粉煤灰标准砖和实心红砖哪个硬度强那我要投资一个 个人免烧砖厂要花多少钱? 海底的矿物...要关于海里的矿物质的介绍,字数要在400~500之间 四氯化碳算是烷烃吗? 红砖的规格 没有摩擦,就没有能量的转换吗.根据能量守恒定律,能量是不是转化为其他形式的能 问一个有关自由落体的题……要详细步骤……越详细越好……跳伞员从360m的高空自由下落一段距离后才打开伞,设打开伞之后以2m/s2的加速度减速下降,到达地面时的速度为4m/s,求他下降的总时 一个从里面量棱长是10厘米是正方体容器,装着5厘米深的水玻璃球浸没水中,这时量的水深是6.5厘米,玻璃球的 安塞腰鼓 作者为什么在开篇的位置要描写后生们打鼓前的场面 物体做自由落体运动时是不是就等于处在完全失重状态中?请解释一下完全失重状态, 能量守恒定律 为什么说 举一个例子,给一辆汽车加满油 等跑到汽油都没有了 能量不就消失了吗? 根据能量守恒定律可知:能量既不会凭空产生,也不会凭空消灭.这也就意味着,在能量的转化和转移之前,一定已经有了一些能量存在.那么这些能量又是从何而来的呢?这是否违背了能量守恒定律
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘