CWnd myWnd;
myWnd.Attach(hWnd);
//....
myWnd.Detach();
получить указатель на CWnd из hwnd
У меня есть хендл окна (HWND который). Хочу по нему узнать состояние окна (всмысле скрыто оно или нет). Подскажите как.
Есть API функция - IsWindowVisible(HWND hWnd) - скажет скрытое окно или нет(если создавалось с WS_VISIBLE или без него) Это то что ты искал? ;-)
функция IsIconic определяет свернуто окно или нет.
GetActiveWindow() не подходит, т.к. иногда возвращает NULL
Мдяя... я ничего подобного не слышал, чтобы можно было как-то из второй проги получить указатель на класс в первой проге. Похоже, мне есть еще чему поучиться... :-))))
Но все-таки хотелось-бы узнать, можно по HWND получить CWnd* в MFC?
Я в MFC плохо разбираюсь... Но указатель на класс из хэндла окна врядли удастся получить. Если тебе просто нужны методы класса CWnd, так есть аналоги на API :-))))
Но все-таки хотелось-бы узнать, можно по HWND получить CWnd* в MFC?[/QUOTE]
Никак, ибо CWnd может попросту не существовать (например, элементы управления на диалоге). А вот чтобы создать CWnd по заданному HWND, используй CWnd::Attach(HWND)
Код:
вроде работает! Во всяком случае следующий мой код работает нормально:
for (int i=0; i<m_hwndArr.GetCount(); i++)
{
memset(str, 0, 255);
::GetWindowText((HWND)m_hwndArr.GetAt(i), str, 255);
if ((HWND)m_hwndArr.GetAt(i) == active)
active_index = i;
tci.pszText = str;
if (CWnd::FromHandle((HWND)m_hwndArr.GetAt(i))->GetStyle() & WS_VISIBLE)
InsertItem(i, &tci);
}
CWnd *W;
W = this;
А дальше я думаю понятно...
У меня работает всегда!