首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

多边形窗口API的有关问题

2012-01-19 
多边形窗口API的问题以下代码为正解,能用..问题是红色那几行看不懂,,在 CreatePolygonRgn(PolyPoint(0), n

多边形窗口API的问题
以下代码为正解,能用..
问题是红色那几行看不懂,,在 CreatePolygonRgn(PolyPoint(0), num,1)明明只要1个PolyPoint坐标,为什么声明一个数组,再取其中一个点呢?但是我试过只放一个点进去,结果窗体没变化..  

 Public Structure POINTAPI
  Dim x As Integer
  Dim y As Integer
  End Structure
  '定义POINTAPI类型
  Declare Function CreatePolygonRgn Lib "gdi32" (ByRef lpPoint As POINTAPI, _
  ByVal nCOUNT As Integer, _
  ByVal nPolyFillMode As Integer) _
  As Integer
  Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Integer, _
  ByVal hRgn As Integer, _
  ByVal bRedraw As Boolean) _
  As Integer
  Declare Function GetActiveWindow Lib "user32" () As Integer
  '声明API函数


  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Dim i, FormPoly, num, myhwnd As Integer
  num = CInt(Me.TextBox1.Text)
  '将多边形的边数存入变量num  
 Dim PolyPoint(num) As POINTAPI
For i = 0 To num - 1 Step 1
PolyPoint(i).x = CInt(Int(Rnd() * 500))
PolyPoint(i).y = CInt(Int(Rnd() * 500))
  Next
  '为多边形各点坐标随机赋值  
 FormPoly = CreatePolygonRgn(PolyPoint(0), num, 1)

  myhwnd = GetActiveWindow()
  SetWindowRgn(myhwnd, FormPoly, False)

[解决办法]

引用于API中文手册:
【VB声明】
Private Declare Function CreatePolygonRgn Lib "gdi32" Alias "CreatePolygonRgn" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long

【说明】
创建一个由一系列点围成的区域。windows在需要时自动将最后点与第一点相连以封闭多边形

【返回值】
Long,执行成功为创建的区域句柄,失败则为0

【备注】
不用时一定要用DeleteObject函数删除该区域

【参数表】
lpPoint -------- POINTAPI,nCount个POINTAPI结构中的第一个POINTAPI结构

nCount --------- Long,多边形的点数

nPolyFillMode -- Long,描述多边形填充模式。可为ALTERNATE 或 WINDING常数。参考SetPolyFillMode函数对多边形填充模式的解释

[解决办法]
探讨
引用于API中文手册:
【VB声明】
  Private Declare Function CreatePolygonRgn Lib "gdi32" Alias "CreatePolygonRgn" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long

【说明】
  创建一个由一系列点围成的区域。windows在需要时自动将最后点与第一点相连以封闭多边形

【返回值】
  Long,执行成功为创建的区域句柄,失败则为0

【备注】
  不用时一定要用DeleteObject函数删除该区域

【参数表】
  lpPoint --------  POINTAPI,nCount个POINTAPI结构中的第一个POINTAPI结构

  nCount ---------  Long,多边形的点数

  nPolyFillMode --  Long,描述多边形填充模式。可为ALTERNATE 或 WINDING常数。参考SetPolyFillMode函数对多边形填充模式的解释

这下明白了吧.

热点排行