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

在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中运行通过。
GDK仍未发布 谷歌鼓励Glass开发者可提前用Android SDK开发 Adobe发布PhoneGap 3.0 支持命令行工具 初级vs.高级开发者 哪个性价比更高? 一周观察:Cloud Foundry生态圈渐成型 数据分析中的10个注意点,让你更了解用户体验、行为及需求 压不垮就奋行!Dropbox Datastore API给初创NimbusBase带来的启示 史上14大最具创新意义的科技发明 亚马逊应用商店:给应用开发者一个国际舞台 白帽黑客英年早逝:R.I.P,Barnaby Jack 苹果发布支持iTunes Radio服务的iTunes 11.1测试版 诺基亚将发布Treasure Tag配件 让你再也不怕丢东西 从三大互联网巨头布局,看移动时代的商业逻辑 亚马逊应用商店:一个开发者走向世界的机会? 企业级App探索:开发者们的正途在哪里? 如何有效地在海外市场推广产品? 网站转化率统计分析及优化方案 从资深设计师那我们能学到什么? 原作者使用Go开发memcached替代版,现已扎寨谷歌多个项目 像证券一样交易云资源,Zimory一年内收入翻两番并获德国证交所青睐 移动SDK崛起:未来会不会整合成一大坨? 关于 VS2010 异常捕获 在线编程教育平台Treehouse推免费iPad应用 微软发布Windows 8.1企业预览版 功能更强劲 如何管理和优化日益增长的代码复杂度? SDCC 2013大会讲师名单议题更新 8月1日前3.8折优惠截止 IBM Rational首席技术官:DevOps是一门哲学 Mozilla联手黑莓推进Web安全技术,推出开源测试平台Minion 苹果如何培养SOHO一族高效工作 再造Ruby:CryENGINE 3.5游戏引擎特性详解 Eclipse基金会涉足物联网,M2M标准是否已获东风? SDN部署前必须考虑的7个事项 关于APPLICATION里放WAV文件的问题~超简单,送分 JB8.0开发 javabean问题(初级) 数据库建模用什么软件? *.xmf是什么文件呀!用什么软件才能打开! 事到如今,我依然最喜欢听郑智化的歌~~ 怎么用php做站内搜索? 什么是硬盘的序列号,它是怎么来的 有谁写过医务室药品进销存方面的程序的,请指点一下!提点建议! jbuilder中说找不到路径,该怎么配置啊 如何彻底删除DBF中的记录 _ConnectionPtr 对象在 Close()之前怎么判断它是否已经关闭?高分相送 请教linux下omniORB CORBA服务器的问题 如何旋转控件 无法正确显示ACCESS数据的问题 索尼爱立信t68ie 有 和弦铃声吗??????????????????? 当把htm页群发邮件,如何能实现对方用文本格式浏览什么都不显示,只有超文本才正常显示? 如何判断自己的程序窗口的坐标位置 请问:关于POINT与LODWORD之间的转换方法? 急!!!!tomcat服务器,linux系统下的JSP文件如何解决中文乱码问题?必有重谢! 急,string的如何插入到access数据库中memo类型的字段 怎么生成动态数组? 有谁给个下载Visual C++ 的地址,因为机器没光驱,不好买盘装(谢谢) GUI高手请进 [转]今年高考首例满分作文(爆笑)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> <<delphi6开发者指南一书中的小问题 呜呜呜!!没人回答,再提!!怎么读出上传的文件内容,(根据文件路径/文件名链接打开)? bmp 图形格式转化成 jpg格式? 在Domino中,Notes命名域、Notes网络域、TcpIp网络域有什么区别,如何进行设置? 菜鸟提问 刚用JB就受挫!!!! 表名、列名都用中文会影响效率吗??? 我删除自己发的帖子怎么也会被扣信誉分? PHP3如何向ACCESS数据库增加一个记录! 第一次编译通过,再编译就一直报错。。 想了解一下上海交通大学软件学院软件工程硕士的情况,读过的或了解的请联系msn:w__j76@hotmail.com 请问如何读出某一指定point点的 颜色RGB值? 有八楼的程序员吗?给分! [讨论]滚动条的秘密 人邮或清华的高程试题分析,哪里有下载!! DirectX,OpenGL 是什么呀?是用于什么方面的呀? 请大家帮帮我吧。我快闷死了。 用BDE连接,程序在其它机子上不能运行 一个关于查询效率的探讨! 如何获取当前机器中注册的控件? 用gprs拨号上网,不能成功。 消息队列能否应用在Internet上?有没有这方面的例子? WinGate安装问题? .net中的并发在实际中的运用! 请问怎样控制行距? 终端服务许可证的问题(100分) c++绝对值的函数是什么?包含什么头文件? 什么叫做元电荷麻烦详细点、谢咯. 吉利金刚发动机下水管没温度怎么办 在开灯时水温高请高手指点 当x=_____时,代数式x^2+1/2-3x的值为负数 一个平行四边形拉成长方形后,长方形的面积是48平方分米,求平行四边形的面积. 元素周期表、六十四卦、圆周率派等,像这类东西你还知道哪些圆周率、自然对数等都归入无理数一类。再比如我国历代纪元表、美国历任总统动物(十二生肖等) 植物(十二月花等) 病毒 当x=()代数式3x+1/2想值是负数 下图的长方形面积是48平方分米,求平行四边形的面积! 在Mathematica中输入f[x_]=x*Sin[x]+x2得到什么? 函数的值域有哪几种解法请举几个例子, 下图中长方形的面积是48平方分米.求出平行四边形的面积. 如果A(-2a,b-2)与点B(4,3)关于原点对称,求a.b的值并判断A在第几象限? 糸 这个字怎么读啊?拼音?急糸 这个字怎么读啊?拼音?急 用1-20号元素符号或微粒符号填空最外层电子数等于次外层电子数的元素最外层电子数等于电子层数的元素有最外层电子数为电子层数的两倍的元素与氖原子具有相同电子层结构的微粒有与氩 若点A(a+b ,-2)与点B(4 ,b-2)关于原点对称,则点C(a ,b+1)在第几象限? 糸采 这个字怎么读啊 3a-2b+c=-2 2a-b+c=-1 a+b+c=2 THE RESTAURANT AT THE CHEDI怎么样 如何反解法求这个函数的值域~!@f(x)=5x-1/4x+2 我不认识你马来语怎么写 一道高一化学题20101221日提问-----请求讲解某无色溶液中加入少量氧化铝粉末,氧化铝粉末迅速溶解,则该溶液中一定能够大量存在的离子组是( )A、K+、Ba2+、NO3-、Cl- B、Na+、NH4+、SO42 什么字含有土的意思 什么是光速不变?真空,c相对c还是c 棕色皮包沾上了一块油迹,擦不掉.去护理店重新刷一遍油能不能解决?请提供一些好办法, 什么字带有土的意思 描写读书不求上进的俗语有那些? 同样长的铁丝折成的平行四边形的面积一定相等吗? 英语语法题(19)____friends Betty had made there were all invited to her birthday party.A.Few of B.Few C.The few D.A few答案+思路,3Q 为什么双曲线x^2/a^2-y^2/b^2=1与直线mx+ny+c=0相切的充要条件是a^2*m^2-b^2*n^2=c^2? 热能可以完全转化成电能吗? 英语语法题 虚拟语气19题目为图片,请解释答案+翻译句子,最好能写出解题的思考过程, a THE CHEDI CHIANG MAI怎么样 英语语法题 名词性从句19题目为图片,请解释答案+翻译句子,最好能写出解题的思考过程, jiega 用英语怎么拼写 THE GARDEN CHIANG MAI怎么样 言子旁右边一个虎怎么念 元电荷一定为正? THE OLD CHIANG MAI CAFE怎么样 英语语法问题13请写出判断依据 元电荷是电荷最小的单位,那一个电荷有多少个元电荷?一个电子又有多少个元电荷?元电荷分正电负电的吗? 判断2x²-x-2=0的一个取值范围一个解X的范围 f(x)=sin(2x-π/4)-2√2sin²x的最小正周期是 马来语怎么写”圣诞快乐”?还有新年快乐 如果点A的坐标为(-a的二次方-3,B的二次方+2)那么A在第几象限?试说明理由 f(x)=sin(2x-π/4)-2√2sin²x的最小正周期注:2√2sin²x,sin²x不在根号下 什么是元电荷?我要具体的意义,概念,用法 如果点A的坐标为(-a的平方-3,b的平方+2),那么点A在第几象限,说说你的理由 诗与词有哪些区别 元电荷的概念是谁提出的?我要准确的!概念是谁提出的?密利根只是个做实验的把 cos(x+1)½-cosx½→-2sin{[(x+1)½+x½]/2}*sin{[(x+1)½-x½]}如何转化 当x为何值时,代数式6分之3x—2的值是负数 请用(不同)的方法计算出下面平行四边形的面积(注意:是不同的方法) 重为50N的物体放在水平地面上,物体的底面积为100cm²,求物体对水平地面的压强. 不带脏字的损人方法!对于没口德的男生,老是用脏话开玩笑,怎么样说才能让他们觉得既不好意思又不用说脏话?让他们以后不敢再轻易和女生开过分的玩笑? 高邮招聘中学数学教师考什么 程序框图中的判断框的取值范围如何判断?比如给个题目.给了程序框图.给出了输出结果.让你求判断框中的取值范围. 当x=________时,代数式-5/(3x+1)的值是负数guocheng 15@16求解答 判断2次不等式的值的取值范围比如12x^2-6x-18>0 最后算出2个数1和3\2.那x是大于1,大于3\2,还是1 当x=________时,代数式-5/3x+1的值是负数 美媒:美国公布核弹更新计划 强化核威日本原子弹爆炸外籍幸存者要求安倍\"中方将与各方一道加大打击“三股势力”港媒:中央楼市思路初显 透露多点政策日本麦当劳就“禁流浪汉入店”道歉外交部就打击恐怖主义、叙利亚销毁化武世界主要城市11月2日天气预报英内政部报告称非法移民给英国带来沉重外交部:对目前阶段有关销毁叙化武决定律师称斯诺登可在俄境内就德国遭美监听报道称美通过澳驻华使馆监听中国 中方“免费”医疗让俄罗斯进退两难俄按揭购房方式未成功普及 专家称与银旧金山地方检察院举行反家暴妇女维权座澳大利亚赏鲸季来临 民众目睹2600日本学生12万粒杏仁膏立体再现法国印澳夫妇因非法改建房屋供学生住宿被罚3美国50州首富名单出笼 盖茨巴菲特仍墨尔本赛马节下周将开始 预报称天气状联合国首次主动攻击非洲叛军 或抛弃被叙总统要求西方为日内瓦会议停止资助叙国务院食安办等部门通知为群众提供星级服务新郑招商引资呈现新态势身份证登记免费乘地铁2014年民政工作重点做好10件事植物园举办“双节”迎春花展新港产业集聚区富平贩婴案公审的警示意义上街区订单式培训促就业心理援助打开一扇澄明的心窗外交部谈中日关系未来郑州市社会保险局世界草地滚球赛落户新乡全国政协举行新年茶话会美丽新区一大批惠民措施今起实施“我们入队啦!”文庙撞钟 节俭迎新百余幅油画展太行之美加强顶层设计 彰显改革魄力贺卡荒,喜兮忧兮?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘