[winapi] hWnd активного контрола

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by FunOfGun, 15 Nov 2012.

  1. FunOfGun

    FunOfGun Elder - Старейшина

    Joined:
    5 Sep 2012
    Messages:
    388
    Likes Received:
    71
    Reputations:
    124
    Есть hWnd активного в данный момент окна, нужно получить текст активного контрола. Текст можно получить с помощью GetWindwText, насколько я понимаю, но ему нужен hWnd окна(ведь контролы тоже окна, верно?). Как его получить? Заранее благодарен.
    П.С. прошу сильно не пинать, только начинаю осваивать WinАpi. Если вдруг знаете толковый справочник, буду очень благодарен.
     
  2. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    getwindowhandle не подойдет?
     
  3. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Получаешь список Chield елементов и у нужного бреш хэндл и береш нужное значение.
     
    1 person likes this.
  4. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    контролы разные бывают, и не у каждого текст можно получить с помощью GetWindwText (контролы аля TLabel из delphi), а так перечисляй через EnumChildWindows дочерние элементы и получай нужный тебе текст
     
  5. tester_new

    tester_new Elder - Старейшина

    Joined:
    12 Feb 2012
    Messages:
    300
    Likes Received:
    45
    Reputations:
    24
    hWnd окна:

    Code:
    HWND GetConsoleHwnd(void)
       {
           #define MY_BUFSIZE 512 
           HWND hwndFound;     
           char pszNewWindowTitle[MY_BUFSIZE]; 
           char pszOldWindowTitle[MY_BUFSIZE]; 
           GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);
           wsprintf(pszNewWindowTitle,"%d/%d",
           GetTickCount(),
           GetCurrentProcessId());
           SetConsoleTitle(pszNewWindowTitle);
           Sleep(40);
           hwndFound=FindWindow(NULL, pszNewWindowTitle);
           SetConsoleTitle(pszOldWindowTitle);
           return(hwndFound);
       }
    
     
  6. SEWERN

    SEWERN Elder - Старейшина

    Joined:
    9 Jan 2009
    Messages:
    20
    Likes Received:
    35
    Reputations:
    26
    HWND hWnd_Button = GetDlgItem(hWnd,id); // id - id контрола