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

VB利用API函数实现VB特殊窗体的两种方法

HTML文档下载 WORD文档下载 PDF文档下载
VB利用API函数实现VB特殊窗体的两种方法

   在VB集成开发环境(IDE)中,设计程序时所新建、添加的窗体都是矩形的。如果出于某种需要,想让窗体在运行时呈现出特殊的形状,就必须借助API函数编写相应的代码。
  [方法一]使用区域创建函数
  常用的区域创建函数有:
  CreateEllipticRgn
  '创建一个椭圆或圆形区域
  CreateRoundRectRgn
  '创建一个圆角矩形区域
  CreatePolygonRgn
  '创建一个由一系列点围成的区域
  CombineRgn
  '将两个区域组合为一个新区域
  SetWindowRgn
  '设置新的窗口区域。
  通过CombineRgn可以取两个区域的并集、交集等组合,从而创建出复杂形状的窗体。例如,以下程序得到的窗体形状为两个相连的月牙形:
  '例程1
  Option Explicit
  'API声明
  Private Declare Function CreateEllipticRgn Lib“gdi32" _
  ByVal x1 As Long, ByVal Y1 As Long, _
  ByVal x2 As Long, ByVal Y2 As Long) As Long
  Private Declare Function CombineRgn Lib “gdi32" _
  (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, _
  ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
  Private Declare Function SetWindowRgn Lib “user32" _
  (ByVal hWnd As Long, ByVal hRgn As Long, _
  ByVal bRedraw As Boolean) As Long
  '常数声明
  Const RGN_XOR = 3
  Private Sub Form_Load()
  Dim Rgn1, Rgn2
  Rgn1 = CreateEllipticRgn(100, 100, 400, 400)
  Rgn2 = CreateEllipticRgn(200, 100, 500, 400)
  CombineRgn Rgn1, Rgn1, Rgn2, RGN_XOR
  SetWindowRgn hWnd, Rgn1, 1
  End Sub
  [方法二]使用BeginPath、EndPath、TextOut、PathToRegion等函数
  BeginPath函数调用启动一个路径分支,在这个命令后执行的GDI绘图命令会自动成为路径的一部分,Windows95中合法的路径函数有文本绘图函数TextOut、绘制多边形函数Polygon等。
  EndPath函数用于结束定义一个路径,如果调用成功,BeginPath函数和它之间发生的所有绘图操作都将在指定设备场景的路径中生效。BeginPath函数一般与EndPath函数成对出现。
  PathToRegion函数调用将当前选定的路径转换到指定区域中。
  TextOut函数的声明如下:
  Declare Function TextOut Lib “gdi32" Alias“TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
  参数说明如下:
  hdc :设备场景的句柄 ;
  x,y :绘图的起点,采用逻辑坐标 ;
  lpString:欲绘制的字串 ;
  nCount:字串中要绘制的字符数量,一个汉字的字符数量为2 。
  以下程序生成一个宋体的“国”字形的窗体:
  '例程2
  Option Explicit
  '类型声明
  Private Type RECT
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
  End Type
  'API声明
  Private Declare Function BeginPath Lib “gdi32" _
   (ByVal hdc As Long) As Long
  Private Declare Function TextOut Lib “gdi32" _
  Alias“TextOutA" (ByVal hdc As Long, _
  ByVal X As Long, ByVal Y As Long, _
  ByVal lpString As String, _
  ByVal nCount As Long) As Long
  Private Declare Function EndPath Lib “gdi32" _
  (ByVal hdc As Long) As Long
  Private Declare Function PathToRegion Lib“gdi32" _
  (ByVal hdc As Long) As Long
  Private Declare Function GetRgnBox Lib“gdi32" _
  (ByVal hRgn As Long, lpRect As RECT) As Long
  Private Declare Function CreateRectRgnIndirect Lib “gdi32" _
  (lpRect As RECT) As Long
  Private Declare Function CombineRgn Lib“gdi32" _
  (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, _
  ByVal hSrcRgn2 As Long, _
  ByVal nCombineMode As Long) As Long
  Private Const RGN_AND = 1
  Private Declare Function DeleteObject Lib“gdi32" _
  (ByVal hObject As Long) As Long
  Private Declare Function SetWindowRgn Lib “user32" _
  (ByVal hwnd As Long, ByVal hRgn As Long, _
  ByVal bRedraw As Boolean) As Long
  Private Declare Function ReleaseCapture Lib“user32" _
  () As Long
  Private Declare Function SendMessage Lib “user32" _
  Alias “SendMessageA" (ByVal hwnd As Long, _
  ByVal wMsg As Long, ByVal wParam As Long, _
  lParam As Any) As Long
  PrivateConst WM_NCLBUTTONDOWN = &HA1
  Private Const HTCAPTION = 2
  '窗体代码
  Private Sub Form_Load()
  Dim hRgn1, hRgn2 As Long
  Dim rct As RECT
  With Me
  .Font.Name = “宋体"
  .Font.Size = 200
  .FontTransparent=true
  '读者可设置为False观察其效果
  End With
  BeginPath hdc
  '为窗体形状产生路径
  TextOut hdc, 10, 10,“国", 2
  EndPath hdc
  hRgn1 = PathToRegion(hdc)
  '将指定路径转换为区域
  GetRgnBox hRgn1, rct
   '获取完全包含指定区域的最小矩形
  hRgn2 = CreateRectRgnIndirect(rct) '创建rct确定的矩形区域
  CombineRgn hRgn2, hRgn2, hRgn1, RGN_AND
   DeleteObject hRgn1
  '删除GDI对象,释放占用的系统资源
  SetWindowRgn hwnd, hRgn2, 1
  End Sub
  Private Sub Form_MouseDown(Button As Integer, Shift _
  As Integer, X As Single, Y As Single)
  '移动窗体
  ReleaseCapture
  SendMessage hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0
  End Sub
  Private Sub Form_DblClick()
  '卸载窗体
  Unload Me
  End Sub
  如果想得到各种图案窗体,可以将窗体字体属性设置为Webdings、Wingdings、Wingdings1、Wingdings2、Wingdings3、Monotype Sorts等,这些字体中包含大量的图形字符,例如,Webdings字体下,代码“TextOut hdc, 10, 10, ‘J’, 1”可以得到风景画轮廓的窗体;Windings字体下,代码“TextOut hdc, 10, 10, ‘(’, 1 ” 可以得到电话形状的窗体。通过Windows附件中的字符映射表能够方便地浏览或选择、复制适用的字符。需要提醒的是,程序运行的机器中必须装有该字体。
  对比两种方法,方法一适合于创建几何形状简单的窗体,复杂的窗体理论上虽然可以实现,但操作起来比较困难。方法二简单易行,虽然有一定的局限性,但能够使窗体具有各种字体中各个字符的形状(你甚至可以利用造字程序自己“画”一些图形),还是很令人兴奋的。
  创建特殊窗体时,需要注意以下几点:
  1.如果窗体的Borderstyle属性没有设置为None,即使运行时标题栏不可见,但相应的键盘操作,如“Alt+空格键”、“Alt+F4”等依然有效;如果Borderstyle属性为None,最小化、窗体移动、退出等功能必须编写相应的代码来实现。当然,使用特殊窗体制作软件封面就不需要考虑那么多了。
  2.因为没有常规矩形窗体的立体边框效果,窗体的背景色应尽量采用醒目的颜色。
  3.特殊窗体的使用必须得当,用得好自然锦上添花,否则给人以哗众取宠之感。(北京 冯新强)
美国最大婚恋网站eHarmony利用Hadoop、OpenStack重构自己 每个Java开发者都应该知道的5个JDK工具 异构计算应用研讨暨OpenCL编程培训在上海和西安成功举行! APIs.io:用来发布和发现API的利器 偏爱MySQL,Nifty使用4个Web Server支撑5400万个用户网站 直接拿来用!十大Material Design开源项目 初探WatchKit,开发者必须知道的6件事! 【MDCC专访】环信CEO刘俊彦:音视频即时通讯将成为技术壁垒 第十七届全国工程建设计算机应用大会在京召开,AMD受邀详解GPU Computing! 哪一门开发语言薪水最高? 借助ArangoDB,带你玩转Google图算法引擎Pregel 【最具价值CTO评选秀】MediaV CTO胡宁:技术女神的自我奋斗 豌豆荚邓草原:如何实现实时响应式平台 必须谨记!Node.js安全开发技巧 聚焦新平台新应用 IBM 2014技术峰会上海站顺利落幕 《近匠》NAGA娜迦信息:移动安全加固定制化 棱镜、飞流、TalkingData三方解读:手游如何高效运营 【MDCC秀场】枕戈待旦——秉持移动开发大潮下的主角思想 Netflix的首席产品官Neil Hun谈推荐系统打造和AWS实践 微信开放WiFi接口,醉翁之意在乎O2O还是大数据? 软硬整合:基于云的微型智能防丢设备Linquet 【MDCC专访】AppCan CTO赵庆华:助力企业快速移动化 使用Bluemix中的Rules服务构建一个酒店预订应用程序 基于IBM Bluemix开发微信公共账号应用 用Cloudant在Bluemix上构建一个简单的文字游戏应用程序 IBM Bluemix是什么? 【最具价值CTO评选秀】纷享销客CTO刘晨:企业移动的技术挑战 【最具价值CTO评选秀】能做存储的超级计算机——任宇翔和以色列团队的创业故事 OpenStack Swift存储策略 分享5个可视化的正则表达式编辑工具 在iOS程序中使用Bluemix云推送服务 如何用struts实现阴阳色列表? 怎么用vb建立一个数据库呀?注意,不是一个表,是一个数据库! 如何调用系统默认打印机的属性! 一个很老很过时的数码相机。 郁闷,超级简单题目 初学ASP,请教学习心得 我的机器怎么老死机?? 两级表单动态联接?急,急,急!!!!!????? ---见了鬼了,Jre不好用!!!--- 寻求把中文字符串转换为十六进制的串的ORACLE函数? 电力学院惊魂 一條語句 數據庫日誌就寫滿了 怎样获得系统的字体!急!谢谢了! 谁有用java做的聊天系统程序(当作业)分不够可再给 在CB中如何动态的管理窗体 如何调用系统默认打印机的属性! API动态调用问题(很奇观) 好久没有发帖子了,现在心情奇好,兄弟们来接分! 在CB中如何动态的管理窗体 求C#网络编程书籍下载~ 简单问题,在线等待。可以在加分。 请教一题目! thanks sdany java 中能不能实现一个数字键盘 关于重定位 菜菜问题:让VB画出sin(x)和log(x)的函数图象怎么做?刚学VB的,x可以取任意的值! thanks sdy 模拟鼠标键???? 弱智问题,请原谅 我需要帮助~~~~!!!!! 请教:用LoadImage()载入的光标资源,当光标尺寸大于32*32时,显示不正常? cls 怎么用??? 请问<%=type2(RS("qi_type2"))%> 是什么意思? 招ASP程序员,工作地点杭州. ORACLE9i中的storage怎么不起作用了? 评评<<离散数学及其应用>>.我有些题目不会做呀.比如和费马小定理有关的.呵呵 谁能告诉我程序员考试是每年的什么时候啊?? 声音设备问题? 关于字符串输出 利用VB写SQL语句的问题(实现删除功能) 太岁灭城 晋中鬼事之二 (书雅) 有关上传数据库的问题? asc码为13的在jsp里用什么表示? GetCurSorPos声明在哪里? 信誉值怎么升高?怎样提高可用分?我的分太少了! help:中文字段update出错 用VB写SQL语句实现删除功能的问题。 请问怎么发布带有Query组件的odbc引擎的activex程序?急 EXCEL里某一行的行高是100,这个100是什么意思? 有没有办法调试delphi控件的源代码? 可否用ID1读取ID2的归档邮件? 霞霞不听话好看的繁体字 求具体过程及答案 题目是这样的 一辆汽车的发动机的额外功率为6*10^4W 水平面匀速行驶受到的阻力是1800N 在额外功率下 当汽车匀速行驶时 求:1 发动机所提供的牵引力大小?2 行驶速度的大小?3 行驶5min牵引力 The man had had an uncomfortable trip.He was very hungry.(not only……but……as well)用括号中的连词改写上面的句子,具体说啊, 支离破碎这个词语有什么样意思!代表什么!它的意思 已知数列an的通项公式为an=以(n+1)为底(n+2)的对数.则它的前n项之积为? 画一张画,和一篇作文! 急死了不知道到明天晚上有没有回答,所以先放20分,有人回答,并且我满意的加50!言归正传,我所学的是哲学基础知识(第二版),高等教育出版社的.都是辨析题,然你说明下面的是否正确.1:追 为什么当车轮高速运转是你会觉得它是在倒转? the man had had an uncomfortable trip.he was very hungery (not only-but-as well)he had not eaten anything for thirteen hours.he had not drink anything for thirteen hours(neither-nor)wollen goods cannot be eaten.at least they are soft.the man had had 二 马克思主义哲学产生的自然科学前提有(  ) (5.0 分) 能量守恒和转化定律 达尔文生物进论     康德星云假说     细胞学说     2.费尔巴哈唯物主义哲学的主要缺陷有( 德语复数的若变化动词是不是都变成-en? 假如说我今天用望远镜看见10E光年一个星球爆炸,那是10E光年钱的事情吗? modest dividend是什么意思 芒山盗临刑 一物生来真奇怪,它是世界一盘菜,娘死以后它才生,它死以后娘还在.(打一微生物) 哲学基础作业00081.划分唯物主义和唯心主义的唯一标准是( ).A.对思维和存在何者为第一性的回答B.是否承认世界只有一个本原 C.有否高尚的理想D.是否信仰上帝或菩萨 满分:2 分2.现代科技 德语里边阳性名词的第四格为什么要加en呢?那第三格要不要加,复数要不要加? “一切恩爱会,无常难得久.生世多畏惧,命危于晨露.因爱故生忧,因爱故生怖.若离于爱者,无忧亦无怖. dividend smoothing是什么意思 这个田野花是什么花.如题 由爱故生忧,由爱故生怖.若离于爱者,无忧亦无怖. 美国独立战争介绍 一年级语文下册田野里开的都有什么花 求求你们了一根电阻丝的电阻为R=16欧姆,将他做成正方形求(1)A B两点间电阻R AB为多少欧姆?(2)AC两点之间电阻RAB为多少欧姆? 什么是支离破碎? 汽车快速经过栏杆时,越过栏杆看车轮,为什么看上去倒转或停止 假如战斗机在飞行当中突然爆炸,此时的飞行员没有来得及跳伞,那么这个飞行员还有没有生还的可能了?XIE XIE HUI DA. 要详细过程和答案,谢谢啦! 第一次世界大战对主要资本主义国家有什么影响 有关光电效应的一个问题什么是光电效应的阻遏电位(即stopping potential)啊?谁能给解释下. 求解答,要详细过程,谢谢! 第一次世界大战后,资本主义国家发生经济危机,我感到很奇怪,那些资本家生产过剩的牛奶为什么不施舍给那些穷人而要倒进大海,那些资本家真狠毒. 小丽每分钟跳绳160下,小李每分钟跳的数量比小红少九分之一,比小华多七分之一.求小红和小华每分钟各跳多少下 多项选择,本大题共10个小题,每小题 4.0 分,共40.0分.在每小题给出的选项中,有一项或多项是符合题目要求的.1.下列命题中属于主观唯心主义的有:( ) A.物是感觉的复合B.宇宙便是吾心,吾心 could you tell me _____ e-mails?A.hou send B.hao sending C.how to send请说明原因! bonus和dividend的区别?请不要复制词典的内容!最好给出一些例子来, 方程组2x+3y=k,3x+5y=k+2,中x与y的和为12,求k an中,a1=2,a(n+1)=3an+3(n+1)次方-2n次方,求an 如何区分INTEREST的两种意思INTEREST什么时候表达利益的意思,什么时候表达兴趣~以前老师也说单复数,但我在书上看到一句不同的兴趣是"DIFFERENT INTERESTS".对了,还有,表达兴趣的INTEREST一定是不可 英语翻译:谁知道:Dividend equivalent A1等于1 An+1等于An+ 二的n次方减n 求An等于? dividend与divedent的区别equals 与equal,equation的区别 ( )田野里( )盛开着( )鲜花 an-bn=? a的n次方减去b的n次方等于什么?推导过程?a的n次方减去b的n次方等于什么?推导过程?叫什么公式? 可变成本与不可变成本的含义 课程的名子叫做《毛泽东思想、邓小平理论和“三个代表”重要思想概论》!就是我们平时说的“毛、邓、三”.作业的要求是这样的:字数1500字左右!大标题:中国特色社会主义建设的关键--- 请举例简述3种常见蛋白质二级结构元件? 固定成本和可变成本的问题当产量增加时,单位产量上摊销的固定成本就会减少,而可变成本不发生变化,其总成本将减少? ()在田野里()盛开着()的鲜花 已知a1=3,an=3an+1,求an 关于光电效应的一道题“若激光束射入玻璃球之前能使某种金属发生光电效应现象,通过玻璃球时由于有能量损失,穿越玻璃球后射出就有可能不能使该金属发生光电效应现象”这句话为什么 以下哪些是可变成本,哪些是固定成本?外购原材料,外购燃料及动力,工资及福利,修理费,折旧费,摊销费,财务费用,其他费用哪些是可变成本,哪些是固定成本?如果折旧和摊销都采用直线折旧法 大学物理实验数据处理问题 测量值是,200.5.不确定度是0.04.求实验结果该怎么表示? 霞用韩国文字怎么写 总成本包括固定成本和可变成本, 一道物理题-关于汽车的汽车在加速的时候受的是平衡力吗?还有在功率一定的条件下 P=F牵引·V 那么汽车的牵引力和摩擦力是一对平衡力吧汽车的摩擦力大小没变 汽车走动不是靠二力平衡吗? 天上的彩虹,什么万丈,好看极了.用霞组词 支离破碎的意思 一道物理题,关于车的= =!甲乙两列火车,甲长120米,乙长80米,两车同向行驶时的超车时间为40秒,两车相向行驶时的错车时间为8秒,如果甲快乙慢.求甲乙两车的速度各是多少?PS:要有过程啊...最好 温州中院首倡“低碳诉讼” 接收电子版黄坤明辞去杭州市人大常委会主任职务《马约》走过20年专家:7天退换货遇节日顺延 邮费一般国内汽油价格每升下调5分 幅度创10金砖五国官员学者:加强合作建立公平合国防部回应土耳其弃购红旗9:商业竞争11月1日起 杭州地铁1号线周末末班浙江会稽山区形成我国首个虞舜文化圈克罗地亚第一副总理兼外长将访华福布斯全球影响力榜安倍位居第57位 成品油价迎十年最小降幅 90号汽油降日本一女大学生因在公园拍摄成人视频被日本一男子弑母弃尸 藏尸冰箱月余终败阿萨德与卜拉希米会晤 称叙命运由本国克罗地亚第一副总理兼外长将访华制造长沙黄花机场恐怖信息的犯罪嫌疑人39岁女子当选日本年度\"美魔女\"十八大后10次集体学习 新领导层施政一线城市房价居高不下 中央勾勒住房问首都机场进出港航班正常 未提升安保等遇重污染橙红预警 取消燃放与其看广告,不如看新款斯柯达晶锐试驾时尚这个东西真的好难懂?故宫成立宫廷戏曲研究所沪指震荡为更猛上涨,下周重点关注京津升级IOS9后,最重要的一件事,设置病急乱投医?三星或与Facebook中国好项目APP,为好项目提供更全方提前祝大家,国庆节快乐!动真格的 “真人秀”来了ARC水龙头为我们提供了一种新型的喝《赤壁之战》开启最强转职 化身玩法全他们红成这样,都是拍了这些剧!直击李宇春why me大连演唱会 看兰比尔当选WNBA年度最佳教练如何利用好职业优势?这些电影成就了独一无二的德普胡歌:要推倒我是很容易的阿尼-坎德:卢比奥看起来很健康盘面风水轮流转,关注3大受益板块中国好声音,你还记得谁?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘