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

在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中运行通过。
无缘CEO Stephen Elop将执掌微软硬件业务部门 又一API聚集地 3scale成立API Codex 你应该放弃的八大设计元素 Tropo与华为达成合作 Tropo API首次可供中国电信客户使用 抢先看:2014即将召开的Web Design大会 小米盒子2视频推送测试及解决播放优酷视频卡的问题 《近匠》UPYUN——从开发者变为服务者 移动开发者必须了解的10大跨平台工具 不差钱:30+收购案,170亿美元投资,IBM再度出手收购Cloudant 微软反击谷歌:Windows授权费降七成+硬件要求减少一半 [测试] 你的HTML5知识够金质吗? 基于OpenStack的虚拟机在线迁移 当64bit遇上8核心:高通发布Snapdragon 615 深圳Maker Faire创客市集:国内外创客组团来参展 腾讯正式发布QQ浏览器微信版 摩托罗拉今年推智能手表,有望提高续航能力 众筹未来必拥抱众智 果合报告:iOS趋势及手游开发六大核心策略 无视OpenStack的前车之鉴,SAP等毅然支持Cloud Foundry 轻松搞定TB级数据,开源GraphLab突破人类图计算“极限值” 英特尔至强E7 v2处理器:2倍性能提升,3倍内存容量,4倍I/O带宽 著名工业设计师Yves Béhar:“我们并不需要三星智能手表。” 跨平台的.NET运行环境 Mono 3.2.7发布! Google石博盟:抓住全球化和移动化的机遇 ShareSDK针对Unity发布社交化组件 2014 CocoaChina开发者大会将公布触控奖学金等高校合作计划 中低端智能手机热销,未来市场或主打价格战 Facebook开源flint:一个用D语言编写的C++静态代码分析器 AMD携手BlueStacks,下半年推出零售版双操作系统 历时6年 Github发布基于Web的桌面文本编辑器:Atom Ratchet:构建移动应用原型,新版支持Android ciscoworks 各位大哥大虾,VC下如何用ADO连SQL SERVER?(急) ShellExecute和CreateProcess有什么区别? 关于海量数据、最有效率的排序、硬盘缓冲与映射、专业数据库的讨论 如何用VB编启动是可以带参数的程序呢?(例如:我自定义了一种文件,双击用我的程序打开,程序自动会打开这个文档 昨天我过生日,今天分蛋糕给大家 请问哪有《java图形设计2Swing篇》可以下? 我要用一个数据库去实时访问另一个据库,我该怎么办 URLghj1976@csdn.net----别吓我,有请您老人家! 谁给我介绍一下sql server7.0教材的比较好的下载网站,我给他20分。 我都急死了,到搜索引擎里搜到的好几个站点都不能用,到底哪儿可以当到3DMAX? 谁有写的比较好的邮件收发程序? 一个微软证书的私钥问题 微软证书的私钥问题 求助,简单问题 男人最快乐的十个瞬间! solaris下装oracle8.1.6遇到jre环境问题 怎抹加分?我准备给别人加40分,可我最多只能加20,请问另外20分怎末加分,为此我可能已得罪了一些人了。 请教下载的问题 如何在运行时动态修改Quick Report的打印机设置? 怎样做一个接受拽拖的LISTBOS(例如,把资源管理器里的文件拖到上面,就自动增加一项 ,就是拖的文件名) 怎样才能隐藏在ctrl+atl+del中进程列表中的项目啊 用C写DLL 请问:airhorse(编程至尊宝),infopower3000的注册码可以用于商业目的吗? 结构化异常处理 linux下如何配置内置Mondem? red hat linux7.0下安装oracle8.1.6遇到问题 我是菜鸟,问一个关于类的问题 问题:TWebbrower中,InnerHtml和OuterHtml以及InnerText和OuterText之间的区别 (加急)我要傻了,快救命啊!高分求救!!(回答正确者尽管开口要分!) ==============VC中怎样调试控制台程序=============? 再问:MS SQL6.5 的.DAT文件怎么恢复,请高手帮忙,(100分绝对对线) 白桦林 我需要自定义一个鼠标按下的事件,可我不知道该去那个参数?有人能告诉我吗? 有谁有比较好的javacript教学方面的电子文本? 两个关于数据库的问题(上次写的不太清楚),我的分快用完了,只能随便给点意思意思了! DotNet时代真正来临了/VB.NET/Beta2正式版下载地址/大家要就快点/如果FTP停了/可不要怪我 那里有DIRECTX编程的书或资料呢?(用VB编) @_@````兄弟们!!有在WIN2K下用VC6搞开发OR学习的吗? 该是到了绝望的时侯了 DotNet时代真正来临了/VS.NET/Beta2正式版下载地址/大家要就快点/如果FTP停了/可不要怪我 在用户登录后,她要更改密码或用户信息,怎么实现?用cookie吗? 建议增加UNIX开发板块! 寻VB好书 用N-Up样式的数据窗口,检索出的数据有 1,2,3,4,5类数据,1类的有1行,2类的有2行, 在应用程序和DLL中如何永久保留用户的一些设置,在程序从新启动后仍然有上次的设定 怎么样用WHERE进行日期查询呀? 大家帮帮我!!! 怎么加进度显示???????? VFP与HP等打印机冲突问题试解决 热插拔刷新CMOS时,两台机器主板型号可以不同吗? 整式的加减,以去括号和合并同类项为基础,化简后的结果不含( )和( ). 有理数的乘除法仍与加减法类似应先定符号再定什么? 一个英语语法问题,括号里应该怎么填They often take children on day-trips,< >(bring) along with them all kinds of food for the kids to enjoy. 初一数学整式的加减怎样去括号= =.我是傻× 去括号后该怎样变符号要详细说明哦~~~~~~~~~~ 英语语法题9(括号内是错的)-Did you give him the book?-Yes.I gave it to him (once) I saw him.参考时directly 我觉得是答案错了吧? 解一元一次方程(去括号),已知x=2是关于x的方程(2m-1)x=8的解,则m的值是--------------.方程2(12+x)=4的解是-----------.(1)3x-2(1-2x)=5;(2)3(2x-5)-(4x+2)=1;(3)5(x+2)=1+2(3x-2);(4) 去括号与添括号的法则 英语语法题1(括号内是错的)To my great surprise,there are two pages (missed) in the new dictionary.正确的是missing,为什么 解用一元一次方程 去括号 用添括号法则做, 加减乘除都可以,括号也可以怎么算等于24 用括号解一元一次方程! 运用添括号法则解, 必采纳,要做出来才算 用去括号法和去分母法解一元一次方程四道题带过程 添括号法则 假设法计算.商店阿姨收了一些20元和50元的人民币,共值2990元,其中20元的张数是50元的张数的4倍,你知道商店阿姨收了多少张50元的人民币吗?注意假设法 去括号+去分母的一元一次方程~快·····今天(2007.12.08)帮我找道题目者,加赏分50~ 0添括号法则,想弄清楚点,半夜啊TQT 用简便放法计算. 用去分母法解一元一次方程 :(1)2y-1/6=5y+1/8 ,(2) x-1/2+1=x-1 ,(3) 1+3-x/2=x+4/3-2 ,(4)1/2(x+1)-x+1/6=1 ,(5)1/3x+1/2=2/3 (6)3(2x+1)/4-1=2(2x-1)/3 (7)4(2y+3)+5(y-2)=8(1-y) (8)如果2x^5a-4-3=0是关于x的一元一次方程,那么a=( 添括号法则,什么时候才添啊,可以随便添吗 咋做一定采纳是简便计算 一元一次方程 去括号 在什么情况下括号里面变号,整式的加减 高数75(5学分),英语71(4学分),体育82(1学分),计算机77(4学分),马原81(3学分),地图学73(2学分),普地学81(3学分),测量学70(3学分). 去括号解一元一次方程 求检查,有错的指出来.题目是关于整式的加减—去括号的. 英语翻译 一道解一元一次方程的题(去括号的)!2(10-0.5y)=-(1.5y+2)把去括号的过程写下来 数学整式的加减、去括号题目.已知:A—B=3,AB=1.求代数式(2A+2B—2AB)—(A+4B+AB)—(3AB+2B—2A)的值. 英语翻译这场暴风雪大得让人吃惊(snowstorm;astonish)那个小女孩正在奶奶耳边窃窃私语(whisper)她有幸在这部影片中出演主角(fortunate;star)我对我上学期的成绩不满意.(be content with)这个山 一元一次方程 去括号与去分母 要有格式!三分之5y+4 + 4分之y-1 = 2 -12分之5y-53分之x+6 - 5=4x3分之7x-1 — 2分之5x+1 = 1格式是:去分母,得去括号,得移项,得合并同类项,得系数化为1,得 这个英语阅读括号里应该填什么?There ones was a (w ) who was walking in a (f ) .Sunddenly he fell in a (h ) .the wolf yelled “ (h (h ”Along came a (sh ).The (s ) saved the walf .Then the wolf said ,“T will (e ) you .” The sheep ye 什么水平才算大神呢求虐 关于解一元一次方程——去括号和去分母的题七年级二班买了35张电影票,公益共用了125元,其中甲种每张8元,乙种每张6元,问甲、乙两种票各买了多少张? 设( )x张,则乙种票买(35- 英语阅读有什么窍门,或高效阅读法 用3'8'3'8,加减乘除.小括号算得24, 七年级数学整式的加减与什么什么无关的题 求解一元一次方程去括号题两道~加讲解,10(x+30)=15x,2.8(x+24)=3(x-24)去括号得 移项得 合并同类项得 系数化为一得还有啊 我想问问 怎么系数化为一呢?ps 讲一下系数化为一最好列几道题 以便明白 这篇英语阅读理解的意思大致是什么, 1.(有些东西打不出来用文字代替了,在草稿本上把式子写下来容易看懂)试说明多项式a的三次方b的三次方 + b的二次方- 1/2a的二次方b + 0.5a的二次方b - 2a的三次方b的三次方 + b的二次方 + a的 一元一次方程带括号的习题 趣味英语阅读介绍 请写出同时满足一下三个条件的两个整式:①这两个整式的和为3x2+x-1;②它们都是三次多项式;③一个多项式的系数都是正数,另一个多项式系数都是负数 去括号解一元一次方程 英语翻译 第二章 整式的加减单元检测A卷 好好好,如果你给我写出来了,我把我分全给你。 分数的乘除法法则 英语翻译As expected,administration of the GR-antagonist RU38486 prior to training in a fear conditioning paradigmimpaired contextual memory when tested 24 (but not when tested 3) h after training. 代数 整式的加减 分数的乘除法运算法则是什么, 选出括号里英文的正确意思.()1 .I know that (from A to Z)A 从A到Z B 从头到尾 C 字母表 D 距离很远()2.What's the Chinese for "(talk big)"?A 吹牛 B 说谎话 C骂人 D 很大 去括号,并合并同类项.-3(2x的二次方-xy)+4(x的二次方+xy-6)a+[2a-2-(4-2a)] 分数乘除法的运算法则是什么? 英语翻译 整式的加减以去括号和合并同类项为基础化简后的结果不含什么什么,它的依据是加法 小学整数加减法去括号时怎样变符号? 这句英语括号里的是固定还是语法?For he wished very much (to be) tall and large like other men.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn