Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Размер панели задач, Как получить размер панели задач 
V
    Опции темы
ProgrammerForever
Дата 22.2.2007, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 16.11.2006

Репутация: -1
Всего: нет



Добрый день! Я пишу программку, и мне надо сделать так, чтобы при перемещении окно "прилипало" к краю экрана. Я делаю так:
Код

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
        If Form1.Top <= Screen.Height * 0.1 Then
            Form1.Top = 0
        End If
       If Form1.Top + Form1.Height >= Screen.Height * 0.9 Then
            Form1.Top = Screen.Height - Form1.Height
        End If
        If Form1.Left <= Screen.Width * 0.1 Then
            Form1.Left = 0
        End If
       If Form1.Left + Form1.Width >= Screen.Width * 0.9 Then
            Form1.Left = Screen.Width - Form1.Width
        End If
    End If
End Sub

Но есть проблемка: снизу окошко прилипает к краю монитора, а мне надо, чтобы оно находилось на панели задач.
Надо сделать как-то так:
Код

      If Form1.Top + Form1.Height >= (Screen.Height - ВЫСОТА_ПАНЕЛИ_ЗАДАЧ) * 0.9 Then
            Form1.Top = Screen.Height - Form1.Height - ВЫСОТА_ПАНЕЛИ_ЗАДАЧ
        End If

Где мне взять эту самую ВЫСОТУ_ПАНЕЛИ_ЗАДАЧ?
PM MAIL   Вверх
~FoX~
Дата 22.2.2007, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 10
Всего: 68



ProgrammerForever
http://vingrad.ru/DELPHI-DLP-000655
Если понадобиться описание АПИ-х, милости просим сюда....

Это сообщение отредактировал(а) ~FoX~ - 22.2.2007, 22:11


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
ProgramerForever
Дата 22.2.2007, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 2
Всего: 5



Я примерно смысл понял, но т.к. я не очень хорошо знаю Delphi, могу не разобраться. Спасибо.
PM MAIL WWW ICQ   Вверх
~FoX~
Дата 23.2.2007, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 10
Всего: 68



Объявляешь три апихи
Код

Private Declare Function GetClientRect Lib "user32" Alias "GetClientRect" (ByVal hwnd As Long, lpRect As RECT) As Long

Private Declare Function GetWindowRect Lib "user32" Alias "GetWindowRect" (ByVal hwnd As Long, lpRect As RECT) As Long

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

С помощью них получаешь RECT - эт структура такая. 
Описание констант, например ABM_GETSTATE, найдешь в МСДН-е.


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Dexx
Дата 23.2.2007, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 292
Регистрация: 13.6.2005

Репутация: 5
Всего: 7



Код

Private Type Rect
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As Rect) As Long

Sub main()
Dim Wnd As Long
Dim r As Rect

Wnd = FindWindow("Shell_TrayWnd", "")
GetWindowRect Wnd, r
MsgBox "Высота Tackbar в координатах экрана " & r.Bottom - r.Top


End Sub


Но это только если Tackbar внизу.



--------------------

PM   Вверх
Akina
Дата 23.2.2007, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Dexx @  23.2.2007,  15:41 Найти цитируемый пост)
это только если Tackbar внизу

Но по значениям .Top, .Left так просто определить, куда его прилепили...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ProgramerForever
Дата 23.2.2007, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 2
Всего: 5



 С         В        Р
  П         С        А
   А          Ё        Б
    С                   О
     И                   Т
      Б                    А
       О                    Е
         -                     Т
 smile 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0935 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.