VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2005/01/27(Thu) 12:07
投稿者花ちゃん
Eメール
URL
タイトルこれもお気に召しませんか?

> > 非表示でもいいのですが、画面がずれない方法はないでしょうか?
> それを実現したら次の要求が出てくるでしょう。
> (メニューの高さ分だけコントロールを移動させれば画面がずれないですが)

Option Explicit
'メニューを設定・削除する(P138)
Private Declare Function SetMenu Lib "user32" _
    (ByVal hwnd As Long, ByVal hMenu As Long) As Long
'メニューオブジェクトのハンドルを取得する(P124)
Private Declare Function GetMenu Lib "user32" _
    (ByVal hwnd As Long) As Long
Private hwndMenu As Long
Private hFlag As Boolean
Private Hbar  As Long
Private Sub Command1_Click()
'メニューを削除(非表示)
    Dim sh  As Long
    Dim sh1 As Long
    sh = Me.ScaleHeight
    Call SetMenu(Me.hwnd, 0)
    sh1 = Me.ScaleHeight
    If sh <> sh1 Then
        hFlag = True
        Hbar = sh1 - sh
        Dim i As Long
        On Error Resume Next
        'メニューバーが消えてコントロールのTopが変った分だけ補正
        For i = 0 To Controls.Count - 1
            Controls(i).Top = Controls(i).Top + Hbar
        Next i
    End If
End Sub
Private Sub Command2_Click()
'メニューを設定(表示)
    Call SetMenu(Me.hwnd, hwndMenu)
    If hFlag = True Then
        hFlag = False
        Dim i As Long
        On Error Resume Next
        'コントロールのTopを元の位置に戻す
        For i = 0 To Controls.Count - 1
            Controls(i).Top = Controls(i).Top - Hbar
        Next i
    End If
End Sub
Private Sub Form_Load()
    'メニューのハンドルを取得
    hwndMenu = GetMenu(Me.hwnd)
End Sub


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -