Помогите!! Как найти дескриптор дочернего диалогового окна?
Добавлено: 13 авг 2006, 13:09
Помогите разобраться с данной проблемой:
Имеется программа со множеством дочерних окон типа edit button и т.д.
Я написал маленькую програмку получающую дескриптор каждого дочернего окна.
Все было бы хорошо, но когда открываешь какое-нибудь окно типа About или propertis,
которые вроде как тоже являются дочерними к главному окну, моя програмка их не
не обнаруживает. Так как эти окна модальные я взял их дескриптор с помощью
функции GetNextWindow. Теперь программа проверяет родителя диалогового окна
и выясняется что родителем является то самое главное окно.
ВОПРОС: ПОЧЕМУ НИЖЕ ПРИВЕДЕННЫЙ КОД НЕ ВОСПРИНИМАЕТ ДИАЛОГОВОЕ ОКНО КАК ДОЧЕРНЕЕ???
Имеется программа со множеством дочерних окон типа edit button и т.д.
Я написал маленькую програмку получающую дескриптор каждого дочернего окна.
Все было бы хорошо, но когда открываешь какое-нибудь окно типа About или propertis,
которые вроде как тоже являются дочерними к главному окну, моя програмка их не
не обнаруживает. Так как эти окна модальные я взял их дескриптор с помощью
функции GetNextWindow. Теперь программа проверяет родителя диалогового окна
и выясняется что родителем является то самое главное окно.
ВОПРОС: ПОЧЕМУ НИЖЕ ПРИВЕДЕННЫЙ КОД НЕ ВОСПРИНИМАЕТ ДИАЛОГОВОЕ ОКНО КАК ДОЧЕРНЕЕ???
Код: Выделить всё
#include <windows.h>
#include <iostream.h>
HWND hMain;
LPARAM lParam;
HWND hOverWindow;
HWND hTemp;
char lpString[100];
//----------Обработчик дочерних окон-----------\\
BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam){
GetWindowText(hwnd,lpString,100);
cout<<lpString<<hwnd<<endl;
return true;
}
//-------------------------------------------------------\\
int main(int argc, char* argv[])
{
if((hMain=FindWindow("BuddyMain",NULL))!=NULL){ //Дескриптор главного окна
EnumChildWindows(hYahooMain,EnumChildProc,lParam);//Определяем дочерние окна
hOverWindow=GetNextWindow(hYahooMain,GW_HWNDPREV);//Определяем дескриптор модального диалогового окна
GetWindowText(hOverWindow,lpString,100);
cout<<lpString<<hOverWindow<<endl;
hTemp=GetParent(hOverWindow);
if(hYahooMain==hTemp) cout<<"nichego ne ponimayu";// выясняем родителя диальгового окна
}
}
return 0;
}