TOP > カテゴリ > Visual Basic >

矩形に3D効果を与える

矩形に3D効果を与えるサンプルです。

サンプルの実行画面

APIの宣言

[DrawEdge .bas]

'DrawEdge =>矩形に3D効果を与える

'<引数>
'hDC:       デバイスコンテキストのハンドルル
'qrc:       RECT構造体
'edge:     定数(EDGE_××参照)
'grfFlags: 定数(BF_××参照)

'@戻り値@
'正常終了0以外



Public Declare Function DrawEdge Lib "user32" (ByVal hDC As Long, qrc As RECT, ByVal edge As Long, ByVal grfFlags As Long) As Long

Public Type RECT
  Left As Long   '左上隅のX座標
  Top As Long    '左上隅のY座標
  Right As Long  '右下隅のX座標
  Bottom As Long '右下隅のY座標
End Type

 
Public Const BF_BOTTOM = &H8    '矩形の下辺
Public Const BF_LEFT = &H1      '矩形の左辺
Public Const BF_RIGHT = &H4     '矩形の右辺
Public Const BF_TOP = &H2       '矩形の上辺
Public Const BF_RECT = (BF_LEFT Or BF_TOP Or BF_RIGHT Or BF_BOTTOM)

Public Const BDR_SUNKENINNER = &H8  '内側が凹
Public Const BDR_SUNKENOUTER = &H2  '外側が凹
Public Const BDR_SUNKEN = &HA       '
Public Const BDR_RAISED = &H5       '
Public Const BDR_OUTER = &H3        '
Public Const BDR_INNER = &HC        '
Public Const BDR_RAISEDINNER = &H4  '内側が凸
Public Const BDR_RAISEDOUTER = &H1  '外側が凸

Public Const EDGE_BUMP = (BDR_RAISEDOUTER Or BDR_SUNKENINNER)   '枠表示
Public Const EDGE_SUNKEN = (BDR_SUNKENOUTER Or BDR_SUNKENINNER) '凹表示
Public Const EDGE_RAISED = (BDR_RAISEDOUTER Or BDR_RAISEDINNER) '凸表示

APIの呼び出し

[DrawEdge .frm]

Dim Flag As Boolean  'マウスが押されたのか判別するフラグ
Dim nRECT As RECT    'Rect構造体

Private Sub Form_Load()

Form1.ScaleMode = 3

End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

nRECT.Left = X
nRECT.Top = Y

Flag = True

End Sub


Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Flag = True Then

nRECT.Right = X
nRECT.Bottom = Y

Ret = DrawEdge(hDC, nRECT, EDGE_RAISED, BF_RECT)

Flag = False

'強制的に更新する
Refresh

End If

End Sub

ソースコード一式のダウンロード

vbapi_drawedge.zip 2.08 KB (2,130 バイト)

このサンプルの動作環境について

このサンプルは 「Windows98」及び「Microsoft Visual Basic 5.0 Professional Edition」で確認しております。環境が異なる場合は正常に動作しない場合もございますのでご了承下さい。





関連記事



公開日:2015年03月04日
記事NO:00348