Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > FindWindow и окно "3го уровня"


Автор: chaos 31.8.2007, 09:31
здрасте!!!
столкнулся с проблемкой. есть такая иерархия окон
TMainWindow
        |
        |_________TCoolBar
                                   |
                                   |_________TToolBar

необходимо получить HWND TToolBar'а.
делаю так

Код

hMainWnd = ::FindWindowEx(NULL, NULL, _T("TFormMain"), NULL);
HWND hToolBar = ::FindWindowEx(hMainWnd, NULL, _T("TCoolBar"), NULL);



Вопрос: как дальше искать?


Заранее благодарен!

Автор: NiJazz 31.8.2007, 09:52
chaos, попробуй EnumChildWindows.

Вот примерчик:
Код

#include <windows.h>

BOOL CALLBACK enum_proc( HWND hwnd, LPARAM lParam )
{
    int len = ::GetWindowTextLength( hwnd ) + 1;

    if ( !(len - 1) && !!::GetLastError() )
        return FALSE;

    TCHAR * buf = new TCHAR[len];
    ::GetWindowText( hwnd, buf, len - 1 );
    
    if ( !_tcscmp( buf, _T( "TToolBar" ) ) )
    {
        // do something here
    }

    delete[] buf;

    return TRUE;
}

int _tmain(int argc, _TCHAR* argv[])
{
    hMainWnd = ::FindWindowEx(NULL, NULL, _T("TFormMain"), NULL);
    HWND hToolBar = ::FindWindowEx(hMainWnd, NULL, _T("TCoolBar"), NULL);

    if ( !!hToolBar )
        ::EnumChildWindows( hToolBar , enum_proc, 0 );

    return 0;
}

Автор: chaos 31.8.2007, 10:21
NiJazz, thx

Добавлено через 3 минуты и 12 секунд
темка закрыта

Автор: HappyLife 31.8.2007, 16:29
chaos, А попростому, этого не сделать?
Код

TToolBar->Handle


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)