狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當前位置:系統之家 > 技術開發教程 > 詳細頁面

VB中運用API函數完成特殊窗體的2種辦法

VB中運用API函數完成特殊窗體的2種辦法

更新時間:2024-04-10 文章作者:未知 信息來源:網絡 閱讀次數:

---- 在VB集成開發環境(IDE)中,設計程序時所新建、添加的窗體都是矩形的。如果出于某種需要,想讓窗體在運行時呈現出特殊的形狀,就必須借助API函數編寫相應的代碼。

---- [方法一]使用區域創建函數

---- 常用的區域創建函數有:

---- CreateEllipticRgn ‘創建一個橢圓或圓形區域

---- CreateRoundRectRgn ‘創建一個圓角矩形區域

---- CreatePolygonRgn ‘創建一個由一系列點圍成的區域

---- CombineRgn ‘將兩個區域組合為一個新區域

---- SetWindowRgn ‘設置新的窗口區域。

---- 通過CombineRgn可以取兩個區域的并集、交集等組合,從而創建出復雜形狀的窗體。

---- 例程1得到的窗體是兩個相連的月牙形:

---- ‘例程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 x1, x2
    x1 = CreateEllipticRgn(100, 100, 400, 400)
    x2 = CreateEllipticRgn(200, 100, 500, 400)
    CombineRgn x1, x1, x2, RGN_XOR
    SetWindowRgn hWnd, x1, 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生成一個宋體的“國”字形的窗體:

---- ‘例程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
Private Const 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.特殊窗體的使用必須得當,用的好自然錦上添花,否則給人以嘩眾取寵之感。 

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
国产美女在线精品免费观看| 亚洲一级片在线观看| 国产精品进线69影院| 日韩专区中文字幕一区二区| 国产精品1024| 亚洲成人自拍视频| 欧美高清dvd| 一区二区三区欧美日韩| 国产成人在线看| 亚洲欧美精品| 久久久久久97三级| 日本不卡视频一二三区| 午夜精品一区二区在线观看| 亚洲影院一区| 亚洲www啪成人一区二区麻豆| 中文字幕欧美日韩一区| 国产精品私人影院| 午夜久久电影网| 91一区二区三区在线观看| 久久精品中文| 国产精品午夜在线观看| 国产精品12区| 精品综合久久久久久8888| 国产成人精品一区二| 欧美日韩hd| 日韩一级大片在线观看| 午夜久久久久久久久| 国产精品hd| 制服丝袜在线91| 午夜视黄欧洲亚洲| 亚洲东热激情| 欧美激情综合在线| 国产一区二区按摩在线观看| 久久精品视频免费观看| 久久美女艺术照精彩视频福利播放| 日韩av电影免费观看高清完整版在线观看| 972aa.com艺术欧美| 欧美狂野另类xxxxoooo| 三级久久三级久久久| 国产精品vip| 精品99久久久久久| 国产福利91精品一区二区三区| 美女尤物久久精品| 一区二区三区在线观看动漫| 欧美日韩精品免费观看视一区二区| 欧美一区二区三区在线视频| 日本成人在线电影网| 精品免费视频.| 久久国内精品视频| 欧美中文字幕久久| 日日骚欧美日韩| 亚洲一区免费| 亚洲成a人片在线不卡一二三区 | 亚洲一区亚洲| 亚洲另类在线一区| 亚洲理伦在线| 亚洲久本草在线中文字幕| 最新日韩av| 亚洲欧美一区二区视频| 影音先锋在线一区| 亚洲视频在线一区| a91a精品视频在线观看| 亚洲精选免费视频| 亚洲女同在线| 亚洲一二三区视频在线观看| 先锋影音久久| 天天操天天综合网| 欧美亚洲综合色| 国产一区二区三区最好精华液| 欧美丝袜自拍制服另类| 国产一区二区在线观看免费| 制服丝袜亚洲色图| 99久久综合99久久综合网站| 国产亚洲综合av| 在线看片日韩| 调教+趴+乳夹+国产+精品| 色94色欧美sute亚洲线路二| 久久疯狂做爰流白浆xx| 日韩午夜av电影| 91麻豆国产福利在线观看| 国产精品乱人伦中文| 国产精品一区二区三区四区五区| 亚洲免费在线观看| 欧美日韩亚洲综合在线| 粉嫩蜜臀av国产精品网站| 97精品超碰一区二区三区| 日韩视频在线观看一区二区| 免费看日韩精品| 久久九九电影| 日韩制服丝袜av| 国产精品永久入口久久久| 亚洲特级片在线| 亚洲一级特黄| 综合欧美一区二区三区| 欧美三级网页| 日韩理论片网站| 伊人久久大香线蕉综合热线| 国产精品乱人伦中文| 国内视频精品| 亚洲欧洲综合另类| 最新成人av网站| 亚洲宅男天堂在线观看无病毒| 亚洲国产免费| 亚洲一区二区三区中文字幕| 国产情侣久久| 日韩经典中文字幕一区| 在线日韩国产精品| 日本不卡视频在线观看| 欧美日韩一卡二卡三卡| 国产专区综合网| 欧美成人vps| 91免费在线视频观看| 国产女人18毛片水真多成人如厕 | 制服诱惑一区二区| 亚洲成人av一区二区| 在线亚洲免费视频| 国产麻豆精品theporn| 日韩精品在线一区| 欧美日韩一区二区三区在线视频| 亚洲区小说区图片区qvod| 国产精品制服诱惑| 国产在线视频不卡二| 日韩情涩欧美日韩视频| 亚洲欧美一区在线| 亚洲综合在线免费观看| 欧美中文字幕一区二区三区 | 亚洲国产精品一区二区第四页av| 亚洲精品综合在线| 欧美亚洲国产一区二区三区| 国产麻豆视频一区| 国产精品久久久久国产精品日日| 亚洲经典在线看| 久久99最新地址| 久久久不卡网国产精品二区| 亚洲欧洲精品一区二区| 日本不卡在线视频| 久久精品人人爽人人爽| 亚洲一区免费| 成人激情免费视频| 亚洲女与黑人做爰| 51精品久久久久久久蜜臀| 欧美日韩在线不卡一区| 欧美aaaaa成人免费观看视频| 日韩欧美在线网站| 亚洲一区二区毛片| 成人精品视频一区| 艳妇臀荡乳欲伦亚洲一区| 在线成人小视频| 在线亚洲伦理| 成人成人成人在线视频| 亚洲国产另类av| 久久这里只精品最新地址| 久久成人一区| 91麻豆精品秘密| 国内外成人在线| 自拍偷拍亚洲综合| 日韩免费性生活视频播放| 国产欧美日韩综合一区在线观看| 国产电影精品久久禁18| 一区二区成人在线视频| 久久只精品国产| 欧美丝袜丝交足nylons| 一区二区久久| 牛人盗摄一区二区三区视频| 麻豆91精品视频| 亚洲激情一二三区| 欧美精品一区二| 欧美亚洲综合久久| 亚洲一区日韩在线| 国内精品福利| 91免费看片在线观看| 极品少妇xxxx精品少妇偷拍| 亚洲综合色婷婷| 亚洲国产精品v| 欧美成人video| 欧美日韩成人在线一区| 男人的天堂亚洲| 激情欧美国产欧美| 色综合天天性综合| 岛国精品一区二区| 经典三级一区二区| 日韩一区精品视频| 亚洲无线码一区二区三区| 国产精品理伦片| 久久新电视剧免费观看| 欧美一级高清片在线观看| 91成人免费在线视频| 国产精品有限公司| 国产亚洲在线观看| 亚洲欧洲综合| 亚洲福利国产| 亚洲视频一区| 精品动漫3d一区二区三区免费版| 91欧美激情一区二区三区成人| 懂色一区二区三区免费观看 | 日韩欧美一二区| 日韩欧美高清dvd碟片| 日韩一区二区三区视频在线| 91麻豆精品国产91久久久 | 亚洲第一av色|