Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: FindWindowEx  (Прочитано 10411 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Tr3rum
Гость
« : 27-02-2005 15:01 » 

Хай всем! тут такой вопрос...на форме имеется 3 кнопки(Button1 Button 2 Button 3)..как мне словить одну из этих кнопок? Если на форме одня кнопка то ясно...а вот 2 и более... :?
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 27-02-2005 15:50 » 

Находиш Handle главного окна, а затем вызываещ функцию
Цитата
The EnumChildWindows function enumerates the child windows that belong to the specified parent window by passing the handle of each child window, in turn, to an application-defined callback function. EnumChildWindows continues until the last child window is enumerated or the callback function returns FALSE.

BOOL EnumChildWindows(

    HWND hWndParent,   // handle to parent window
    WNDENUMPROC lpEnumFunc,   // pointer to callback function
    LPARAM lParam    // application-defined value
   );   
 

Parameters

hWndParent

Identifies the parent window whose child windows are to be enumerated.

lpEnumFunc

Points to an application-defined callback function. For more information about the callback function, see the EnumChildProc callback function.

lParam

Specifies a 32-bit, application-defined value to be passed to the callback function.

 

Return Values

If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero.

Remarks

The EnumChildWindows function does not enumerate top-level windows owned by the specified window, nor does it enumerate any other owned windows.
If a child window has created child windows of its own, this function enumerates those windows as well.
A child window that is moved or repositioned in the Z order during the enumeration process will be properly enumerated. The function does not enumerate a child window that is destroyed before being enumerated or that is created during the enumeration process.

This function is more reliable than calling the GetWindow function in a loop. An application that calls GetWindow to perform this task risks being caught in an infinite loop or referencing a handle to a window that has been destroyed.
,где
Цитата
The EnumChildProc function is an application-defined callback function that receives child window handles as a result of a call to the EnumChildWindows function.

BOOL CALLBACK EnumChildProc(

    HWND hwnd,   // handle to child window
    LPARAM lParam    // application-defined value
   );   
 

Parameters

hwnd

Identifies a child window of the parent window specified in EnumChildWindows.

lParam

Specifies the application-defined value given in EnumChildWindows.

 

Return Values

To continue enumeration, the callback function must return TRUE; to stop enumeration, it must return FALSE.

Remarks

The callback function can carry out any desired task.
An application must register this callback function by passing its address to EnumChildWindows. EnumChildProc is a placeholder for the application-defined function name.

т.е даеш на перечисление все chield окна главного окна. Виндовс выдает данные в твою функцию такого вида
BOOL CALLBACK EnumChildProc(

    HWND hwnd,   // handle to child window
    LPARAM lParam    // application-defined value
   );   
Если тебе не нужно дальше просматривать, возрашаеш False.  Нужно True.
Функция выдает тебе хэндл окон. По ним ты можеш узнать к какому классу принадлежит окно при помоши функции
Цитата
The GetClassName function retrieves the name of the class to which the specified window belongs.

int GetClassName(

    HWND hWnd,   // handle of window
    LPTSTR lpClassName,   // address of buffer for class name
    int nMaxCount    // size of buffer, in characters
   );   
 

Parameters

hWnd

Identifies the window and, indirectly, the class to which the window belongs.

lpClassName

Points to the buffer that is to receive the class name string.

nMaxCount

Specifies the length, in characters, of the buffer pointed to by the lpClassName parameter. The class name string is truncated if it is longer than the buffer.

 

Return Values

If the function succeeds, the return value is the number of characters copied to the specified buffer.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Tr3rum
Гость
« Ответ #2 : 27-02-2005 16:54 » 

а можно на примерчике?)))
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #3 : 28-02-2005 22:14 » 

Код:
BOOL CALLBACK EnumChildProc(

    HWND hwnd, // handle to child window
    LPARAM lParam // application-defined value
   )
{
 char Buf[25]={0};
  GetClassName(hwnd, Buf, 25);
 return true;

}


BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
 char Buf[25]={0};
 GetClassName(hwnd, Buf, 25);
  EnumChildWindows(hwnd, (WNDENUMPROC)EnumChildProc,0);
 return true;
}

void MyFunc(void)
{
EnumWindows((WNDENUMPROC)EnumWindowsProc,0);
}
Код писался для Билдера. В переменной Buf ты получиш название всех класов Окон, которые запушены в данный момент.
« Последнее редактирование: 28-02-2005 22:18 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Tr3rum
Гость
« Ответ #4 : 01-03-2005 08:29 » 

спасиб
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines