Toon posts:

[win32] Krijg alle "bars" van een window

Pagina: 1
Acties:

Verwijderd

Topicstarter
Wat ik heb is "HWND hWnd"... Nu zou ik hier door gewoon puur Win32 API te gebruiken alle "bars" willen krijgen (dit is toolbar(s), menubar, statusbar, ...)

In MFC is dit simpel:
((CFrameWnd*)hWnd)->m_listControlBars


Maar hoe lost zich dat op in puur Win32 API? (en ik weet niet van op voorhand hoeveel bars een hWnd heeft :S)


Welke API zou ik misschien nader moeten bestuderen?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:24

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ten eerste vind ik geen m_listControlBars in CFrameWnd, maar dat maakt ook niet uit, want die bars zijn slechts MFC wrappers om normale windows. Je kunt dus niet "alleen de bars" opvragen, je kunt wel gewoon alle child windows van een window opvragen

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Inderdaad...

Had ik dus ook gedaan... Resultaat:

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
BOOL CALLBACK EnumChildProc( HWND hwnd, LPARAM lParam );

inline void * GetAllBars( HWND hWnd )
{
  std::vector<HWND> vWindows;

  ::EnumChildWindows(hWnd, EnumChildProc, (LPARAM)&vWindows);

  TCHAR name[256];
  for ( size_t i = 0; i < vWindows.size(); i++ )
  {
    ::GetClassName( vWindows[i], name, WXSIZEOF(name) );
    wxLogDebug( wxT("%02d: 0x%X (%s)"), i, vWindows[i], name );
  }

  return NULL;
}


Geeft terug:
19:23:52: 00: 0xF0378 (wxWindowClassNR)


Wat eigenlijk niet meer is als mijn frame (hoofd-window waarvan ik de hwnd heb meegegeven aan deze functie).