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

在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中运行通过。
【CTO俱乐部第92期】大规模存储与电商架构演化实战分享 刘黎明:PaaS是非主流业务,要与IaaS融合 个人手机游戏开发者之死 为什么苹果的应用审核是个笑话? 程序员性格怪癖是才华横溢的表现,还是危险分子的征兆? JavaScript Source Map详解 8条学习编程的可靠建议 一周消息树:亲爱的GitHub,我们怎么访问不了你? [回顾] 2012年几大编程语言就业趋势分析 研发周报:微软无视W3C 拒绝遵循WebRTC标准 移动周报:夫妻档闯江湖 事业爱情双丰收 当服务器遇见锤子:第六届AWS全球创业大赛落幕 C# DataTable 和List之间相互转换的方法 iPad如何在三年内改变世界 划时代的成果:新DNA存储技术 轻而易举装下世界 谷歌产品设计:Larry Page的魅力革命 开源移动统计工具Countly更新 支持Unity 3D DailyCost传奇设计师访谈,彰显HTML5移动应用优势 如何成为一名架构师? Apache Hadoop集群的安全性架构 Wood Camera开发者访谈:我们如何冲到榜首的 代码审查:程序员内炼之道 Twitter Q1推广告API 收入剑指10亿 Dell:在OpenStack成熟后才会推出服务 一个开源工作者对开源与赚钱的一些想法 宏碁:Windows8仍不成功 Chrome表现令人意外 雅虎发布Q4财报 净利润同比下滑8% 游戏机禁售令起风波,索尼任天堂股价大涨 国外开发者吐槽Facebook Android设计一例 Rovio转向发行业务 将发布新作Tiny Thief 上山下海 “硬汉”服务器无所不能 关于Qmail的webmail问题!急!!! 将数据导入到Excel文件中的源程序 快快快,紧急!!!!!!!!! Vb+Sql server OLAP Server 的问题,win98如何支持更新立方体? 能否安装Oracle Application Server 的问题.(欢迎参加) 请问在word2000其中一个文档关闭前后各触发什么事件?其中的参数怎样写? 高手们,能讲一下BCB的事件机制么? 讨厌,我的问题都到什么地方去了嘛~ 请帮我看一下这段代码,错在哪里?真快弄晕我了!!!! 如何抓取VB中FORM最小化事件 怎么样得到cpu的二级缓存信息? 我是新手 吉他和小提琴哪个好? 请教:如何在jsp中使用存储过程 关于串口的问题(好低级我就是不会) 有关mfc的问题 请问题在win2000p下用delphi6连sql server 2000 personal要加什么补丁? 一个奇怪的问题---应用程序为什么还出错? 怎样知道文件被哪个程序在使用? java web start实例代码COPY不了,怎么办? PowerBuilder 7.0的数据军定义在存储过程中 SQL SERVER 2000: [DBNMPNTW]拒绝纺问 从visio上考的公式,贴在word上是红叉,怎么办? 请教!!!!急阿!!关于DataGrid 大家来帮帮忙! Access中有象MS SQL Server中sysobjects一样的系统表吗? 请问delphi 里面那个控件可以控制每一行字符的颜色 有没有中文版的msdn呢 关于类的序列化的问题 怎样使用非标准的WINDOWS的ActiveX控件?非常急的问题!!! 为什么回出现这样的错误? 能否告之广州的房价? 消息处理程序? 请问如何检测一个字符串数字的有效范围?请高手大哥们帮个忙。 各位大侠帮忙! VFP的一个报表问题! sorrow_arrow(最近有点烦,有点烦) 请进来 ! 这里有个网站. 有用过WebSphere和VAJ开发EJB的老大吗?帮我看看这个简单的问题! 请问D版OFFICE XP的序列号!!! 如何才可以在网页中运行一个EXE文件,JAVA脚本能实现吗? .net环境问题~!! 一个关于BitMap背景的问题 为什么只返回一条纪录? 请问谁有《千年血后》的全文? asp能用哪些数据库? 50个人,每家养一条狗…… DataSet中数据插入到数据库的问题? 怎样返回应用程序的当前路径阿 午饭后,可否帮我看看这段代码???谢了!! 迷惑 统计表明,某种型号的汽车在匀速行驶中每小时的耗油量y(L)关于行驶速度x(km/h)的函数解析式为y=x^3/1280(1)当汽车以40km/h的速度匀速行驶时,从甲地道乙地耗油多少升?(2)当汽车以多大的 已知反比例函数y=k/x的图像经过第二象限内的点A(-2,m),AB⊥x轴于B,Rt△AOB的面积为3,若直线...已知反比例函数y=k/x的图像经过第二象限内的点A(-2,m),AB⊥x轴于B,Rt△AOB的面积为3,若直线y=ax+b经 串联电池,可以在不拆开电池组的情况下测量其中每节电池的电压吗?我有一组36V电动车电池,由三节12V串联组成,现在容量下降,我想用万用表找出有没有哪节电压下降特别快的.由于这几节电池 统计表明,某种型号的汽车在匀速行驶中每小时耗油量y(升)关于行驶速度x(千米/小时)的函数解析式可以表示为y=(1/14400)X^3-(1/360)X+3 (0 如图已知反比例函数y=k/x的图像过第二象限内的点A(-1,m),AB⊥x轴于B,直角三角形AOB的面积为2,如图已知反比例函数y=k/x的图像过第二象限内的点A(-1,m),AB⊥x轴于B,直角三角形AOB的面积为2,若 镁块放开水里对人体有害吗?老爸不知道听谁说的,把镁块放进暖壶里和烧水的壶里泡着,说是对身体健康,请问这样做对人体有害吗?镁块接触沸水会产生什么物质,起什么反应? 统计表明,某种型号的汽车在匀速行驶中每小时的耗油量y关于行驶速度x的解析式为y=1/12800x^2-3/80x+8(0 一个瓶子装满水后称得瓶子和水的总质量为500克,若在瓶中投入金属颗粒若干,称得溢水的质量为100克,此时剩余水、瓶及金属颗粒的总质量为670克,求:1.金属块的体积,2.金属块的质量,3.金属块 英语翻译是伊丽莎白雅顿这个牌子的CeramidePlump PerfectUltra All NightRepair and MoistureCream ForFace and ThroatUltra Lift and FirmMoisture Lotion SPF30Moisture CreamGold Uitra Restorative Capsules 带电粒子在磁场中运动的时间公式 小球对绳的拉力就是小球所受的重力,这句话对吗?小求所受重力的反作用力作用在细绳上,为什么? 英语翻译我朋友给送的,也没告诉我是什么,VITAMINEHYDRATING TONERAlcohol-free toning liquid with a shot ofantioxidant protection.ALL SKIN TYPES.VITAMINE ETONIQUE HYDRATANTTonique sans alcool enrichid'une protection anti-oxydation.TOUS T 手机进水了可以用阳光暴晒会不会晒坏不要 把电池和卡拆了 用电扇吹 手电筒额定电压为3.8V,那么电池盒中至少有几节干电池呢? 求英语高手翻译化妆品化装品看不懂,盒子上有以下单词,呵呵emulsion fraichepour le corpsfresh body lotion 是香奈儿的产品,谢谢了! 手机进水 吹风机会吹坏吗 已知反比例函数y=k/x图像过第二象限内的点A(-2,m)AB⊥x轴于B,Rt△AOB面积为3,若直线y=ax+b经过点A,并且经过反比例函数y=k/x的图像上另一点C(n,-3/2)(1)反比例函数的解析式为_____,m=_____,n=_____;(2)求直 化妆品的英文怎么译?眼贴膜面膜 手机进水了应该用电吹风吹吗?为什么 如图,OA垂直于OB,OD是∠AOC的平分线,∠BOC=3∠AOD,求∠DOC的度数 一节3V干电池与一节2V干电池并联后,总电压为多少?请说明一下原因 呵呵 一个平行四边形和一个三角形等底等高,这两个图像的面积的和是48平方厘米,那么这个平行四边形的面积是多是多少平方厘米 已知反比例函数y=k/x图像过第二象限内的点A(-2,m),且AB⊥x轴于B,Rt△AOB面积为3求方程kx+b-x分之m=0的解、?求不等式kx+b-x分之m大于0的解集?图在这 灭火器在夏日能否在阳光下暴晒?在公司摆放很多灭火器,但有一部分都在房屋外的 露天处摆放,这样在太阳下暴晒能否 不合理支出? 电动车的电池容量如何表示?24AH表示什么?是多少瓦?想问一下专业人员,电动车的电池容量的表示意义,我买的是脚踏式电动车,里面有4个大电池,上面标示的是DC48V-24AH,我想知道这是什么意义,用 力臂是支点到力的作用线的距离,为什么不能理解成力臂为支点到力的作用的点的长度? 矿泉水在夏天太阳底下暴晒一天还能喝吗? “12V 24AH”蓄电池容量问题这个容量是指电池以24安电流放电可达1小时.这个“1小时”指的是电池放电到0伏?还是放电到终止电压10.5伏? 英语翻译apply liberally 15 minutes before sun exposurereapply at least every two hoursuse a water resistant sunscreen if swimming or sweating 把3节相同电池并连在一起,电池组电压与每节电压有什么关系,并说明验证方法 物理 一块三角形与一个平行四边形等底等高平行四边形的面积比三角形的面积大25.5M2这两个图形的面积各是多少 英语翻译1.voile de parfum pour le corps(body perfume veil)2.caresse deparfum pour la douche(shower perfume caress)大体帮我看下1和2是怎么用的就可以,法国买的,好像是法语,有能看懂可以发邮箱wjqjason@foxmail 电池的电压与电池组的电压有什么关系?把一节电池的负极和另一节电池的正极连在一起,余下的一节正极和一节负极就是这个电池组的正极和负极.电池的电压与电池组的电压有什么关系? 一个三角形与一个平行四边形等低等高,已知平行四边形的面积比三角形的面积大25.5平方米,这两个图形的面积急11!要算式! 探究杠杆的平衡条件的结论要控制变量,比较大小,表述关系怎么算控制变量呢? 物理上,如果给你电池组,相当于给了你已知电压的电源吗? 重30N的物体由OA和OB两条绳拉住.OB始终处于水平方向OA和竖直方向成α,如果OA和OB能承受的拉力分别为20√3N和30N,试求,为了不让绳子拉断,α上网最大值是多少啊? 探究杠杆的平衡条件杠杆挂支架,调两端的平衡螺母,使他在______方向上静止.(目的:便于在杠杆上直接读出_____) 物理实验蓄电池电压 如图所示,用两根绳子把一重力为G的物体挂起来,绳子OB是水平的,绳子OA跟竖直方向间夹角为θ,求两根绳子对物体的拉力分别是多大 请问速溶咖啡用多少度的水冲好雀巢咖啡速溶饮品应该用多少度的水来冲啊?为什么我用沸水冲了上面会有一层漂浮物 不知道是什麽东西 如图所示,Rt△ABO的顶点A是双曲线y=k/x与直线y=-x+(k+1)在第四象限的交点,AB⊥x轴与点B,且S△ABO=3/2(1)求这两个函数的解析式;(2)求直线与双曲线的两个交点A、C的坐标和△AOC的面积.和△A 一个三角形与一个平行四边形等底等高,已知平行四边形等面积比三角形的面积大25.5平方米,这两个图形各是一个三角形与一个平行四边形等底等高,已知平行四边形的面积比三角形的面积大25. 冲一杯13克的雀巢速溶咖啡,需放入多少水? 如图,Rt△ABO的顶点A是函数y=k/x与函数y=-x-(k+1)的图像在第二象限的交点,AB⊥x轴于点B,且S△ABO=3/2.如图,Rt△ABO的顶点A是函数y=k/x与函数y=-x-(k+1)的图像在第四象限的交点,AB⊥x轴于点B,且S△ABO= 从" 秤砣虽小压千斤" 这一角度,杆秤是一个什么杠杆. 怎么冲雀巢速溶咖啡瓶装的雀巢速溶咖啡和雀巢咖啡伴侣,我应该怎么搭配才能是调出来的味道好一点呢?我冲的咖啡特别苦,简直比中药还难喝,可以说是无法下咽,我想应该是咖啡放的太多了, 如图,RT三角形ABO的顶点A是双曲线y=k/x与直线y=-x-(k+1)在第二象限的交点,AB垂直x轴于点B且S△ABO=1.5(1)求这两个函数的解析式;(2)求直线与双曲线的两个交点A、C的坐标和△AOC的面积.和△AOC 为什么杆秤用加重秤砣使测得的物重比实际物重小 我每天中午,午饭半小时后喝一杯雀巢速溶咖啡能减肥么?不加咖啡伴侣的.也不加糖!这样喝可以有助于减肥吗?还是会胖? 移动滑动变阻器,电压和电流同步变大或变小昨天上物理课弄的,是串联电路,一个小灯泡,一个电压表和电流表还有一个滑动变阻器.我移动滑动变阻器的时候电压和电流都是同步变大或者变小 三段不可伸长的细绳OA,OB,OC能承受的最大拉力相同,它们共同悬挂一重物,如图所示,其中OA是水平的,A端、B端固定.若逐渐增加C端所挂物体的质量,则最先断的绳( ) A.必定是OA B.必定是OB 雀巢速溶咖啡热量就是不加糖和咖啡伴侣的速溶咖啡,大概多少? 移动变阻器滑片,电流变示数变大,电压表示示数却变小,这是为什么 如图B-1所示,三段不可伸长的细绳OA、OB、OC能承受的最大拉力相同,它们共同悬挂一重物.其中细绳OB是水平的,A端、B端固定.若逐渐增加C端所挂物体的质量,则( )A.OA绳先断B.OB绳先断C.O 为什么手机电池电压是4.2V,而直流电流则测不出来.我测5号电池的电压1.5V 直流电流1.6A,正常.用数字万用表测的,用的是直流电流档(10A),用这办法测5号电池很正常. 夏天汽车暴晒后如何迅速降温 如图,已知反比例函数y=k/x图像过第二象限内的点A(-2,m),且AB⊥x轴于B,Rt△AOB面积为3如图,已知反比例函数y=k/x图像过第二象限内的点A(-2,m),且AB⊥x轴于B,Rt△AOB面积为3 若直线y=ax+b经过点A并且经过 手机电池5v怎么把电压转为1.5v .电阻分压,怎么个接法..我有1k电阻. 为什么夏天时汽车经过暴晒后里面会很热?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘