投稿日 | : 2003/07/29(Tue) 12:53 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : 代替案 |
> Win2000以降限定でよければレイヤードウィンドウでも可能かと・・・。
Layered Windowって、コントロール単位ではなく、
フォーム単位でしか適用できなかったような気がします。(未確認)
で、オーナードローに対する代替案を考えて見ました。
ListBoxの替わりに、ListViewコントロール(Ver.6)を利用しています。
これならば、APIを使わずに済むかも。
'===================
Option Explicit
Private Sub Form_Load()
Me.AutoRedraw = True
Me.ClipControls = False
With Me.Picture1
.AutoRedraw = True
.Visible = False
.BorderStyle = 0
.ScaleMode = vbPixels
End With
With Me.ListView1
Me.Picture1.Move -.Width, -.Height, .Width, .Height
.View = lvwReport
.FullRowSelect = True
.HideSelection = False
.HideColumnHeaders = True
.ForeColor = vbWhite
.ColumnHeaders.Add().Width = .Width - Screen.TwipsPerPixelX * 4
.ListItems.Add Text:="第1の項目"
.ListItems.Add Text:="第2の項目"
.ListItems.Add Text:="第3の項目"
.ListItems.Add Text:="第4の項目"
End With
End Sub
Private Sub Paint()
Dim H As Long
Me.Scale (0, &H0)-(1, &H100)
For H = &HFF To 0 Step -1
Me.Line (0, H)-(1, H + 1), RGB(&H22, &H11, H), BF
Next
Me.ScaleMode = vbPixels
With Me.ListView1
Me.Picture1.PaintPicture _
Me.Image, _
0, 0, Me.Picture1.Width, Me.Picture1.Height, _
.Left, .Top, .Width, .Height
End With
Set Me.ListView1.Picture = Me.Picture1.Image
End Sub
Private Sub Form_Resize()
Paint
End Sub