(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Создание "фальшивой" строки заголовка у формы

Сделал я форму без заголовка (тип границы - отсутствует), а вместо строки заголовка нарисовал элемент Label, изображающий строку заголовка, но уже моего цвета. Кстати, этот же элемент служит по совместительству и информационной панелью. А так как я могу легко менять в этом элементе шрифты и цвет, то получается намного эстетичнее, особенно, если цветовая тематика программы не сочетается со стандартной синей строкой заголовка.

Понятно, что у пользователя возникает непроизвольное желание таскать форму по экрану за этот псевдо-заголовок, как и все стандартные формы Windows. Вот для возможности этого и предусмотрен следующий код:

' Объявляем пару функций API и пару констант
Public Declare Function SendMessage Lib "user32" _
        Alias "SendMessageA" (ByVal hwnd As Long, _
                              ByVal wMsg As Long, _
                              ByVal wParam As Long, _
                              lParam As Any) As Long

Public Declare Sub ReleaseCapture Lib "user32" ()

Public Const WM_NCLBUTTONDOWN = &HA1
Public Const HTCAPTION = 2

' а это уже процедура перемещения указателя над элементом lblInfoTips

Private Sub lblInfoTips_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Dim lngReturnValue As Long

    If Button = 1 Then
        Call ReleaseCapture
        lngReturnValue = SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, _
        HTCAPTION, 0&)
    End If

End Sub

Объявления функций API и констант лучше вынести в отдельный модуль - форм-то много может быть, нечего дублировать те же самые объявления в каждом модуле формы. Если все же решите оставить объявления в модуле формы, то все замените Public на Private.

По верхнему краю формы по всей ширине растянут элемент Label более темного цвета, чем цвет формы, симулирующий строку заголовка формы. Ему дано имя lblInfoTips, и в его событие [Перемещение указателя] вбит код.

Теперь пользователь может привычно ухватиться за панельку и перетащить форму, куда ему надо.

Кстати, если вызывать это код для события Form_MouseMove, то можно таскать форму за любую поверхность (конечно, если на форме, где Вы хотите схватиться, не нарисован какой-нибудь элемент управления). Но я предпочитаю давать пользователю возможность привычно перетаскивать форму только за псевдо-заголовок, потому, что это стандарт (обычные формы Windows тоже ведь таскаются не за любое место, а именно за панель заголовка).

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 04.10.2007 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год.
Microsoft Windows Professional 10, Электронный ключ
Microsoft 365 Business Basic (corporate)
Microsoft Office 365 Профессиональный Плюс. Подписка на 1 рабочее место на 1 год
Microsoft Office 365 Бизнес. Подписка на 1 рабочее место на 1 год
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Каждый день новые драйверы для вашего компьютера!
Новости мира 3D-ускорителей
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100