狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美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视频
亚洲激情精品| 在线免费观看一区| 成人性生交大片免费看中文| 一区二区激情小说| 日韩一区中文字幕| 国产精品日产欧美久久久久| 久久久久久久久久久久久女国产乱| 欧美喷潮久久久xxxxx| 欧美日韩亚洲另类| 欧美午夜影院一区| 欧美日韩亚洲综合| 欧洲精品一区二区| 欧美日本视频在线| 91精品国产综合久久香蕉的特点| 69久久夜色精品国产69蝌蚪网| 欧美色图免费看| 在线电影院国产精品| 欧美一区二区三区啪啪| 精品毛片乱码1区2区3区| 精品少妇一区二区三区日产乱码 | 国产精品麻豆网站| 亚洲欧洲一区二区在线播放| 亚洲男人天堂av| 亚洲在线视频一区| 日本免费新一区视频| 精品一区二区三区在线观看| 国产电影一区在线| 91年精品国产| 夜夜嗨一区二区三区| 久久午夜电影| 欧美电影在线免费观看| 26uuu久久天堂性欧美| 国产精品欧美经典| 亚洲高清免费视频| 国内精品在线播放| 99久久精品国产麻豆演员表| 国内精品美女在线观看| 性色av一区二区怡红| 欧美女孩性生活视频| 国产亚洲欧美色| 亚洲一区av在线| 国产91精品在线观看| 亚洲手机视频| 老牛国产精品一区的观看方式| 欧美一区二区三区四区久久| 亚洲国产精品精华液2区45| 婷婷成人激情在线网| 东方aⅴ免费观看久久av| 亚洲国产免费看| 欧美日韩在线电影| 国产精品国产三级国产a| 五月婷婷激情综合网| jlzzjlzz亚洲日本少妇| 亚洲一区二区精品在线观看| 欧美一区二区二区| 一区二区三区四区在线| 国产精品一区二区x88av| 亚洲视频福利| 欧美精品日韩精品| 一区二区三区在线免费播放| 国产一区二区三区黄视频| 好看的av在线不卡观看| 717成人午夜免费福利电影| 亚洲免费观看高清完整版在线观看熊| 国内精品视频一区二区三区八戒| 激情视频一区二区| 日韩一区二区三区四区五区六区| 最近日韩中文字幕| 懂色av中文字幕一区二区三区| 国产一区二区三区奇米久涩| 精品国产sm最大网站免费看| 日本色综合中文字幕| 欧美午夜欧美| 日韩一二在线观看| 日本中文字幕一区| 一级成人国产| 国产欧美一区二区精品秋霞影院| 经典三级视频一区| 午夜宅男久久久| 国产网站一区二区| 国产成人啪免费观看软件| 香蕉视频成人在线观看| 国产精品久久久久一区| 懂色av中文一区二区三区| 欧美在线一区二区| 亚洲丰满少妇videoshd| 国产一区高清视频| 久久久777精品电影网影网| 国产精一品亚洲二区在线视频| 免费看亚洲片| 玉米视频成人免费看| 欧美日韩成人一区二区三区| 国产精品久久福利| 成人午夜电影网站| 91精品国产91热久久久做人人| 日韩av中文字幕一区二区| 亚洲综合社区| 亚洲制服丝袜av| 亚洲高清123| 中文字幕日韩欧美一区二区三区| 99久久精品国产一区| 亚洲精品在线网站| 99久免费精品视频在线观看| 欧美电影免费观看高清完整版在 | 色噜噜夜夜夜综合网| 图片区小说区国产精品视频| 国产视频精品网| 日韩一区在线播放| 99热这里只有精品8| 亚洲精品免费在线| 国产精品毛片在线| 一区二区三区精品在线| 国产精品久久久久9999高清| 亚洲一区二区三区四区五区黄| 一区二区三区欧美在线| 亚洲一区二区av电影| 久久精品日产第一区二区 | 精品一区二区三区欧美| 欧美日韩久久不卡| 国产成人免费9x9x人网站视频| 欧美一区二区三区思思人 | 欧美日韩国产一区| 国产成a人亚洲精品| 国产亚洲精品精华液| 欧美天天在线| 亚洲一区免费在线观看| 91国产成人在线| 亚洲一区二区三区欧美| 久久成人久久爱| 97久久超碰精品国产| 欧美性生活大片视频| 国产精品一区二区久激情瑜伽| 精品少妇一区二区三区视频免付费| 91在线国产福利| 国产精品免费网站在线观看| 噜噜噜久久亚洲精品国产品小说| 九一九一国产精品| 国产女同互慰高潮91漫画| 亚洲日韩成人| 激情av综合网| 国产日韩v精品一区二区| 亚洲一区三区视频在线观看 | 亚洲人成免费| 麻豆成人久久精品二区三区小说| 欧美大片拔萝卜| 精品成人一区| 久久se精品一区精品二区| 久久久亚洲高清| 国产精品嫩草99av在线| 国产乱人伦偷精品视频免下载| 亚洲国产精品v| 色88888久久久久久影院野外| 不卡的av网站| 亚洲超丰满肉感bbw| 日韩欧美国产1| 国产日韩欧美一区二区三区在线观看 | 国产色综合久久| 久久精品中文字幕一区二区三区| 高清日韩电视剧大全免费| 亚洲男人的天堂av| 欧美一区二区高清| 国产九区一区在线| 成人高清免费在线播放| 亚洲动漫第一页| 26uuu亚洲| 欧美怡红院视频| 亚洲视频高清| 国产一区二区女| 亚洲精品久久久蜜桃| 欧美一区二区三区在线视频| 国产精品免费一区二区三区在线观看| 成人激情动漫在线观看| 日本成人在线不卡视频| 中文字幕亚洲电影| 精品国产一区久久| 欧美三区免费完整视频在线观看| 亚洲精品偷拍| 91亚洲国产成人精品一区二三| 久久99精品国产.久久久久久| 亚洲国产中文字幕在线视频综合 | 激情深爱一区二区| 亚洲成av人片一区二区三区 | 午夜精品网站| 成人性色生活片| 久久精品国产99国产精品| 亚洲三级视频在线观看| 久久久不卡网国产精品二区| 777a∨成人精品桃花网| 日本韩国精品在线| 国产精品久久久久久模特| 欧美一区二区三区久久精品| 蜜臂av日日欢夜夜爽一区| 国产精品日本一区二区| 国内精品久久久久国产盗摄免费观看完整版 | 亚洲综合偷拍欧美一区色| 欧美男男青年gay1069videost| 久久综合九色综合久99| 亚洲国产网站| 国产精品一区免费视频| 国产在线一区观看|