На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: SCINER, B.V.
  
    > Что такое окно , основные понятия
      Окна
      Окно - это объект, занимающий прямоугольный участок экрана. Он может содержать другие окна, называемые дочерними.
      Запомните: всё, что находится на экране, представляет собой окно. Формы, элементы управления, кнопки, полосы прокрутки, текстовые поля - являются окнами.

      Классы окон
      Но возникает вопрос. Как такие разные объекты, как кнопки, формы и текстовые поля, могут быть окнами? Каким образом система различает их?
      Дело в том, что каждое окно относится к какому-то классу:
      Например кнопка относится к классу BUTTON, текстовое поле относится к классу EDIT, полоса прокрутки относится к классу SCROLLBAR и т.д.
      Таким образом, система различает окна, определяя класс, к которому относится окно.

      Манипуляторы окон (hWnd)
      С помощью API функций вы можете производить различные операции с окнами (Скрытие/показ окон, изменение заголовка(текста) окна, изменять различные атрибуты ), но для этого вам нужно понять, что такое манипулятор. Манипулятор это способ идентификации окна(и вообще любого объекта, но в данной статье рассматриваются только манипуляторы окон) в системе. У каждого окна в системе имеется манипулятор окна, который обычно обозначается сокращением hWnd. Visual Basic предоставляет возможность получить манипулятор окна, через его свойство hWnd.
      Запомните: графические элементы, такие как label и image не являются окнами и поэтому не имеют манипулятора окна и следовательно с графическими элементами нельзя проводить различные операции используя API функции.

      Получение информации об окнах

      Далее приведу примеры, получения манипулятора окна с помощью API функций:

      Способ №1 Поиск окна по его заголовку
      Это делается с помощью функции FindWindow:
      ExpandedWrap disabled
        'Объявляем функцию
        Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
        (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
         
        'Процедура для получения манипулятора окна по его заголовку
        Public Function GetHwnd(Caption As String) As Long
        Dim hwnd As Long
        hwnd = FindWindow(vbNullString, Caption) 'Caption - заголовок окна
        GetHwnd = hwnd
        End Function


      Способ №2 Поиск окна по его классу
      ExpandedWrap disabled
        'Объявляем функцию
        Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
        (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
         
        'Процедура для получения манипулятора окна по его классу
        Public Function GetHwnd(ClassName As String) As Long
        Dim hwnd As Long
        hwnd = FindWindow(ClassName, vbNullString)
        GetHwnd = hwnd
        End Function


      Способ №3 Поиск дочернего окна
      ExpandedWrap disabled
        'Функция для получения окна первого уровня
         
        Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
        (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
         
        'Функция для получения дочернего окна
         
        Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
        (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
         
        'Разместите на форме кнопку (Command1)
         
        Private Sub Command1_Click()
        Dim hwnd As Long
        hwnd = FindWindow("Класс родителя", "Заголовок родителя") 'Поиск родителя
        hwnd = FindWindowEx(hwnd, 0, "Класс дочернего окна", "Заголовок дочернего окна") 'Поиск дочернего окна
        End Sub

      информация взята с сайта http://www.vbkoders.net.ru/
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0175 ]   [ 17 queries used ]   [ Generated: 26.04.24, 06:16 GMT ]