Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.149.229.253] |
|
Сообщ.
#1
,
|
|
|
Окна
Окно - это объект, занимающий прямоугольный участок экрана. Он может содержать другие окна, называемые дочерними. Запомните: всё, что находится на экране, представляет собой окно. Формы, элементы управления, кнопки, полосы прокрутки, текстовые поля - являются окнами. Классы окон Но возникает вопрос. Как такие разные объекты, как кнопки, формы и текстовые поля, могут быть окнами? Каким образом система различает их? Дело в том, что каждое окно относится к какому-то классу: Например кнопка относится к классу BUTTON, текстовое поле относится к классу EDIT, полоса прокрутки относится к классу SCROLLBAR и т.д. Таким образом, система различает окна, определяя класс, к которому относится окно. Манипуляторы окон (hWnd) С помощью API функций вы можете производить различные операции с окнами (Скрытие/показ окон, изменение заголовка(текста) окна, изменять различные атрибуты ), но для этого вам нужно понять, что такое манипулятор. Манипулятор это способ идентификации окна(и вообще любого объекта, но в данной статье рассматриваются только манипуляторы окон) в системе. У каждого окна в системе имеется манипулятор окна, который обычно обозначается сокращением hWnd. Visual Basic предоставляет возможность получить манипулятор окна, через его свойство hWnd. Запомните: графические элементы, такие как label и image не являются окнами и поэтому не имеют манипулятора окна и следовательно с графическими элементами нельзя проводить различные операции используя API функции. Получение информации об окнах Далее приведу примеры, получения манипулятора окна с помощью API функций: Способ №1 Поиск окна по его заголовку Это делается с помощью функции FindWindow: 'Объявляем функцию 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 Поиск окна по его классу 'Объявляем функцию 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 Поиск дочернего окна 'Функция для получения окна первого уровня 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/ |