見た目は面倒そうだが、実は簡単。
APIを使う必要は無く、VBの機能だけで実装する。フォームに picSplitBar という名前のピクチャーボックスを貼り付けて、以下のコードを書けばよい。 Private IsSplitbarCapture As Boolean Private Const SPLITBAR_HEIGHT As Long = 6 Private Const SPLITBAR_BG_COLOR_NORMAL As Long = vbActiveBorder Private Const SPLITBAR_BG_COLOR_CAPTURE As Long = vbButtonShadow Private Sub Form_Load() 'フォーム設定(背景色は分かりやすいように白にしている) With Me .ScaleMode = vbPixels .BackColor = vbWhite End With 'スプリットバー設定(Sub Main に書いても良い) With picSplitBar .ScaleMode = vbPixels .BackColor = SPLITBAR_BG_COLOR_NORMAL .Left = 0 .Height = SPLITBAR_HEIGHT .BorderStyle = 0 .MousePointer = vbSizeNS End With End Sub Private Sub Form_Resize() picSplitBar.Width = Me.ScaleWidth End Sub Private Sub picSplitBar_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) If Button And vbLeftButton Then IsSplitbarCapture = True picSplitBar.BackColor = SPLITBAR_BG_COLOR_CAPTURE End If End Sub Private Sub picSplitBar_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) Dim SplitbarTop As Long If IsSplitbarCapture Then SplitbarTop = picSplitBar.Top + y If SplitbarTop < 0 Then SplitbarTop = 0 If SplitbarTop > Me.ScaleHeight Then SplitbarTop = Me.ScaleHeight - SPLITBAR_HEIGHT picSplitBar.Top = SplitbarTop End If End Sub Private Sub picSplitBar_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) If IsSplitbarCapture Then picSplitBar.BackColor = SPLITBAR_BG_COLOR_NORMAL Form_Resize 'リサイズ IsSplitbarCapture = False End If End Sub本当はスプリットバーの上下に何らかのコントロールがあり、Form_Resize にそれらのリサイズ処理を書かなければならないがここでは省略する。そんなに難しくないんで大丈夫でしょ。 |