powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / А как грамотно вычислить реальную высоту API-ребар и понять visible ли он?
3 сообщений из 3, страница 1 из 1
А как грамотно вычислить реальную высоту API-ребар и понять visible ли он?
    #36679540
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раньше был VB-Toolbar (TOP), под ним ListView
было просто и понятно в на всех стилях.
Код: plaintext
ListView1.Top = Toolbar1.Height * Abs(CInt(Toolbar1.Visible))

Теперь, значит, решился на API-ребар.
Хорошо, я понял как скрывать/показывать.
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub CheckVisible_Click()
    If CheckVisible.Value = vbChecked Then
        ShowWindow g_hwndRebar, SW_SHOW
    ElseIf CheckVisible.Value = vbUnchecked Then
        ShowWindow g_hwndRebar, SW_HIDE
    End If
End Sub
А как по простому понять Visible/Not Visible?

И где расположить ListView1.Top если Visible?

По идее
Код: plaintext
1.
    hRebar = SendMessage(g_hwndRebar, RB_GETBARHEIGHT,  0 ,  0 )
    ListView1.Top = hRebar
Но оно наезжает на Rebar, особенно на классике (границы рисую).
Ну можно конечно опытным путем забабахать что-то типа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    Dim hRebar As Long
    hRebar = SendMessage(g_hwndRebar, RB_GETBARHEIGHT,  0 ,  0 )
    If IsIDEApp Then
        ListView1.Top = hRebar +  5  '* Screen.TwipsPerPixelY
    Else
        If ThemesEnabled(g_hwndRebar) Then
            'If IsWinVista Then
            '    ListView1.Top = hRebar
            'Else
                ListView1.Top = hRebar +  1  '* Screen.TwipsPerPixelY
            'End If
        Else
            ListView1.Top = hRebar +  5  '* Screen.TwipsPerPixelY
        End If
    End If
    TreeView1.Top = ListView1.Top
Но что-то мне этот метод не нравится... Или это так и надо?

RB_GETBARHEIGHT -мож это высота band-ов, а не контрола???...
Да вроде "русским" языком написано:
http://msdn.microsoft.com/en-us/library/bb774455(VS.85).aspx
Retrieves the height of the rebar control.
...
Рейтинг: 0 / 0
А как грамотно вычислить реальную высоту API-ребар и понять visible ли он?
    #36679574
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77А как по простому понять Visible/Not Visible?
Код: plaintext
1.
2.
3.
Private Declare Function IsWindowVisible Lib "user32" (ByVal hWnd As Long) As Long
Private Sub CommandGetVisible_Click()
    MsgBox IsWindowVisible(g_hwndRebar)
End Sub
Ну по крайней мере хоть это.
...
Рейтинг: 0 / 0
А как грамотно вычислить реальную высоту API-ребар и понять visible ли он?
    #36679620
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот так вроде путем и без выяснения стилей:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    Dim rRB As RECT, pt As POINTAPI
    GetWindowRect g_hwndRebar, rRB
    pt.X = rRB.Right
    pt.Y = rRB.Bottom
    ScreenToClient Form1.hWnd, pt
    'Me.Caption = pt.Y
    If IsWindowVisible(g_hwndRebar) Then
        ListView1.Top = pt.Y +  1 
    Else
        ListView1.Top =  0 
    End If
    TreeView1.Top = ListView1.Top
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / А как грамотно вычислить реальную высоту API-ребар и понять visible ли он?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]