- // NB: it might be somewhat easier to maintain a list of all existing
- // wxToolTip controls (put them there in ctor, delete from the list
- // in dtor) - may be it's worth doing it this way? OTOH, typical
- // application won't have many top level windows, so iterating over all
- // of them shouldnt' take much time neither...
-
- // iterate over all top level windows and send message to the tooltip
- // control of each and every of them (or more precisely to all dialogs and
- // frames)
- wxDialog *dialog = NULL;
- wxFrame *frame = NULL;
-
- wxNode *node = wxTopLevelWindows.First();
- while ( node )
- {
- wxWindow *win = (wxWindow *)node->Data();
-
- node = node->Next();
-
- if ( win->IsKindOf(CLASSINFO(wxFrame)) )
- {
- frame = (wxFrame *)win;
- dialog = NULL;
- }
- else if ( win->IsKindOf(CLASSINFO(wxDialog)) )
- {
- dialog = (wxDialog *)win;
- frame = NULL;
- }
- else
- {
- // skip this strange top level window
- continue;
- }
-
- wxASSERT_MSG( dialog || frame, _T("logic error") );
-
- WXHWND hwndTT = frame ? frame->GetToolTipCtrl()
- : dialog->GetToolTipCtrl();
- if ( hwndTT )
- {
- (void)SendTooltipMessage(hwndTT, msg, wParam, (void *)lParam);
- }
- }