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

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.特殊窗体的使用必须得当,用得好自然锦上添花,否则给人以哗众取宠之感。(北京 冯新强)
平板优先:Supercell游戏公司日收入100万美元 Mootools实现具有排版功能的页面拖拽 2012:云计算的春天 直击Strata+Hadoop World:百万雄师过大江 能携带的网络 Anyfi 150万建网络虚拟热点 又将颠覆产业?传苹果正开发蓝牙智能手表 JavaScript社区开发者调查结果 欢乐淘、求PS大神获腾讯开放平台应用创新大赛年度金奖 2012是响应式设计之年 12月28日:1903年计算机之父冯&#183;诺依曼出生 Android木马病毒:伪装成Google Play图标进行DDoS攻击 IE10 CSS Hack 程序员技术分享:训练机器学习 SVM算法解析 2013,谷歌的数据科学家都将干什么呢? Facebook“也”对服务器进行浸泡冷却 日本最大电脑商:Windows 8表现并不好 日均新增415个应用,Windows 8应用总数突破35000 百度推出图像搜索引擎“百度识图” 可基于图像实现全网人脸搜索 解决专利纠纷 RIM向诺基亚预付6500万 巨头的得意与失落:2012移动游戏十大收购案 Mozilla或许将发布iOS平台浏览器Junior Mozilla:Facebook手机将采用Firefox OS Anonymous2013年将放慢脚步,McAfee预测遭质疑 一周消息树:Facebook公布2012年Hackathon大赛顶级“黑客作品” HTML+CSS+JS 开发 Firefox OS 应用编程实战 前端开发工程师如何在2013年里提升自己 Java受Objective-C影响很大 而不是C++ Instagram回击报告指责:用户仍保持增长态势 回顾:2012年科技行业十大败笔 苹果地图入选 Amazon CEO Jeff Bezos:好年景,大挑战 2012年度盘点:移动互联网大事件回顾 窗口自动关闭 救命啊!严重问题!怎么老是显示E2316:TempSongList::PlayFirstSong()is not a member of 'TempSongList'? 关一个小笨蛋生存的困惑,还请各位GG、JJ一定要帮帮忙呀~~~~ Interface中添加方法的问题,请高手指教!再线讨论!! c#访问FOXPOR数据库问题 WORD求源代码加分之四 怎么样获得一个 EDIT 的 句柄 ?? 请问嵌入网页中的Activex如何调整自身的大小?请各位高手帮忙!谢谢! Oracle和SQLSERVER中5用户10用户到底是什么意思? 我身边的一个PLMM说,她想找一个成熟、幽默、聪明的程序员。 一个局域网内访问odbc数据源的问题 对女孩子不能太热情了! 一个easy 的question 请精通C#与VB.net的大虾帮忙翻译一下 在异地拷贝一个文件(200M以上)到本地,如何做 《C++程序语言》(特别版)怎么样 getContentPane()是什么意思? 高手请进!嵌入网页中的Activex如何获取加载它的浏览器对象?谢谢! i am 24 year old ,but i have nothing 请问哪里有exchange2000 server??? XP,IE 6 SP1,安装JRE 1.4无数次,<APPLET>标签下的东西仍不能看,<OBJECT>可以,为什么??!!求救!! Socket发送接收的问题! c++ builder6的盘 mapx 问题? partition magic 8.0 一个既包含静态图象又包含视频播放的视频,怎样把它抓屏下来??? SOS!!!一个有关全文检索,以及文档的数据库存储的问题,急急!各位大侠出招啊,在线等候 请问如何在程序中将CEdit控件设为只读或取消只读, Java认证问题 请问你们认为哪种操作系统更好用和稳定? 关于mfc dll wizard 做出来的dll 的内存泄漏问题!! vc++与C++Builder有何本质的区别? 能否做个象Media Play的ACTIVEX查件,既有动画窗口,又有按钮??? 高手,关于数据库转换的问题 给分:谁有关于“从网卡取得数据”方面的论文 大家好,有一个关于拔号、专线系统的IP地址问题 SAX的问题 表单传递后,如何判断用户是否填入了内容的? 请教 请教各位大侠 各位好,小弟初学Oracle,请各位指点哪有相关电子书下载,多谢! 辞职,不知是对是错?(第一次散分,请版主高台贵手) 关于vb在com编程的几个问题! 请教如何用C#取网卡MAC的地址?? 那位大侠做过数据加密解密的程序呀! 询问一个关于组件安装的问题 Windows2000网上邻居里没有任何东西 我要的form控件在哪里? 有谁用过windows.net server 2003? 有关于结合JBuilder介绍XML的书籍吗? treeview的一个问题 能量的定义是什么?既然E=mc^2,那么是不是物质可以完全转化为能量而消失?物质转化为能量,那组成物质的分子,原子,原子核,电子跑到哪里去了呢? 物质的第五态、第六态是什么样的? 8.0 g Cu2S和CuO的混合物中含有铜原子数为0.3NA, 税收对市场经济的作用税收对社会主义市场经济发展的作用 石墨烯什么时候才能普及使用?用在手机上什么时候能够实现?据说可以把手机做到很薄 元素是一个宏观概念,他只有_________,没有___________ 物体的静止能量是E=mc^2.它包括物体的内能吗?为什么? 高性能石墨烯动力电池什么时候能量产? 浪琴手表军旗系列跟瑰丽系列区别在哪?就机芯看不见的区别?军旗 L4.774.4.72.6跟瑰丽L4.760.4.72.6 ,那个好? 简单商品经济条件下,使经济危机具有形式上的可能性的货币职能是?A,价值尺度 B 流通手段 C 贮藏手段 D 支付手段 E 世界货币答案是BD.谁知道原因,麻烦解释下吧. 槭树果的旅行方法是什么呢? 盐湖卤水模拟怎样在实验室模拟盐湖卤水化学物质体系 计算反物质湮灭的能量能用E=mc^2吗? 怎样才能完成作业?做完作业在能玩,在监督下. 青海盐湖卤水可以泡脚吗 飞亚达石英手表G270怎样,求评论? 槭树果旅行的方法昰什么 我要用ICS-1500型离子色谱仪测定盐湖卤水中锂的含量,请问离子色谱仪使用条件是什么,卤水需要什么预处理 如果所有物质都有溶解度的话,那么爱的溶解度是多少 槭树有哪些特征 氯气能导电吗 高一化学2跪求解析.石墨有没有自由移动的电子 导电性不知道怎么判断 我怎么样才能完成作业呢?请心里专家帮我分析一下!最近喜欢上了电脑游戏,表面不迷的样子~其实心里已经迷上了游戏~你们说说咋办啊?还有怎么样才能坚持! 下列所描述的二氧化硫的一些化学性质中,体现二氧化硫作为还原剂的是A.溶于水形成不稳定的亚硫酸 B与碱液反应生成硫酸根离子C通过溴水溶液使溴水褪色 D通入品红溶液中,使品 物质的第六态是辐射场态还是费米子凝聚态?请具体点 槭的果实主要是通过哪种方式传播种子的? 国产地平线摩托车跑车怎么样?宗申250小链发动机机. 制备细胞膜为什么不用原核细胞 一种单质和水反应,生成另一种单质和化合物,反应物和生成物中的元素都是短周期的,水是还原剂. 不同民族的教育具有不同的传统和特点说明了教育的() A民族性 B历史继承性 C生产性 D阶段性 飞亚达和天梭哪个品牌更好呢?同等价位谁更好些啊?听说飞亚达的机芯都是进口的,还不怎么好.天梭本身就是瑞士产的.请懂行的给详细说说.哪个更好些呢?哪款比较经典呢,价位在四千左右的 浪琴军旗系列手表,浪琴 瑰丽 实践的基本形式包括( ) A生产实践 B处理社会关系的实践 C教育医疗实践 D科学实验 E艺术实践 (多选)E是否正确 飞亚达手表好还是天梭手表好?RT,飞亚达手表好还是天梭手表好.. 浪琴军旗系列的机械手表,精仿的到哪买 学会合作()A.是教育的目的 B.才能适应竞争 C.是成功的要素 D.目的是受人欢迎 E.目的是改善人际关系 E=mc^2 能量岂不是很大?金由235 这个代入公式没问题 这个我不怀疑毕竟他弄死了很多人 但是其他材料 我就怀疑了 比如木头 代入这个公式 我自己也觉得很可笑 有谁帮我解答这个难题我没懂你 天梭 飞亚达哪个好 化学实验电解水前后水是怎么变化的?误差产生的原因都有什么?就是水的体积前后有变化么? 光的能量是E=mc^2还是E=1/2mc^2根据爱因斯坦质能方程,物质的能量应该是E=mc^2,但是光子不是没有静止质量的吗?那是不是不能通过质量来求得其能量?而且根据经典力学理论,Ek=1/2mv^2,那光速是c,它 天梭、依波、天王、飞亚达.相对来说哪个品牌的表好一些? 低温杀菌的温度.我要杀除那些在不锈钢板上的细菌,密封,要低温,要多少时间+几度最好,..by the way,我要烘干80cm2的不锈钢板上的积水,密封,要多少时间+温度最好?,谢谢,for godforsaked, 钠在空气中的变化写一下方程式 24小时什么时候开始啊新季的 财政赤字什么意思 15.已知a和b相距20个图距单位,从杂交后代测得的重组值为19%,则两基因间的双交换值为:A.0.5% B.1% C.2% D.4%怎么算的没分了 7*24小时是多少时间 浪琴军旗有几种机芯 a基因的片段与b基因的片段发生互换属于什么变异 从4点过24小时是几点啊 使用高压灭菌器时如锅内有空气,会影响到灭菌效果吗? 杂合体AbC/aBc与abc/abc测交,后代双交换型为aabbC_和A_B_cc,则其连锁基因顺序为答案是B为什么啊 怎样设置时间24小时制 高压灭菌器怎么选择?ALP高压灭菌器怎么样? 下列各项中不属于税收作用的是( ).A.实现国家职能 B.稳定经济 C.收入再分配 D.配置资源作用4个财政收入的主要形式调节国民经济的重要手段维护国家政权保障国际社会的国家利益我想选的是 蒸馏高锰酸钾溶液会留下来吗? 电路图和线路图有什么区别 如何检验基因在染色体上呈线性排列?A基因分离B基因交换.选哪个? 东京名古屋和大阪有什么好玩的地方?求推荐 为什么元素是宏观概念?宏观概念不就是指看不见的么,我度娘了很多次,有人说像金属元素金银铁什么的是宏观概念我也能理解,但我记得我在哪看见说Na和Na+是钠元素,是同种元素,像这样的一 未来两年国际天然气市场仍供应紧俏印度急着发射火星探测器纽约曝华裔灭门血案 5人士丧生中国赴美名校留学生 每4人就有1人退“创新之国”芬兰经验启迪中国企业加大加拿大北极地区气温或创4.4万年新高日本首相出访土耳其 欲游说其勿购中国美监管机构调查房地产信托投资基金澳媒称中国买家推动悉尼当地房价升高2美媒:部分美联储官员主张制定债券“退日本首相出访土耳其 欲游说其勿购中国日本拟上调育儿休假补贴发放比例 增加奥巴马医保网站再次瘫痪 众院将举行听美国一醉酒男子被捕后拿总统奥巴马为自澳洲农民呼吁设“全澳产”通道 为本地今秋首次暴风强势登陆法国 数万户家庭统计显示韩国火葬率为74% 比20年美国一男子为取啤酒冒险重返失火房屋险德国政界对美监听默克尔愤怒 欲传唤斯报告称全美国一年有500名少年儿童死韩国反导系统正式开建 被指应避免刺激“为自己的所爱而死”因设备故障,宁杭高铁大面积晚点老将哈斯勒姆漂二代幼升小最炫UGC“向未来生长”不断重复错误的练兵,白练了启动“时间银行”模式为了几元钱的停车费将亮相央视“如果一次捐献不够,我们愿再捐”网传“万名考试作弊猖狂”不实北京开机早知今日 何必当初31岁IT男得了“心慌症”林更新配音小嗝嗝私有化完成花花和湉湉,相视一笑爬在后面的小伙子再也没上来香港投资公司买下福布斯传媒控股权超强台风威马逊已致琼粤桂三省8人死亡要“喷灌”“滴灌” 不搞“大水漫灌”
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘