diff --git a/window.c b/window.c index 790fa1bdeb..3ff9e4b29f 100644 --- a/window.c +++ b/window.c @@ -1325,6 +1325,22 @@ void SendWindowMessage(WindowClass wnd_class, WindowNumber wnd_num, uint msg, ui if (w != NULL) SendWindowMessageW(w, msg, wparam, lparam); } +/** Send a message from one window to another. The message will be sent + * to ALL windows of the windowclass specified in the first parameter + * @param wnd_class @see WindowClass class + * @param msg Specifies the message to be sent + * @param wparam Specifies additional message-specific information + * @param lparam Specifies additional message-specific information + */ +void SendWindowMessageClass(WindowClass wnd_class, uint msg, uint wparam, uint lparam) +{ + Window *w; + + for (w = _windows; w != _last_window; w++) { + if (w->window_class == wnd_class) SendWindowMessageW(w, msg, wparam, lparam); + } +} + static void HandleKeypress(uint32 key) { Window *w; diff --git a/window.h b/window.h index 210e547973..48f3fc2046 100644 --- a/window.h +++ b/window.h @@ -607,6 +607,7 @@ void CallWindowEventNP(Window *w, int event); void CallWindowTickEvent(void); void SetWindowDirty(const Window *w); void SendWindowMessage(WindowClass wnd_class, WindowNumber wnd_num, uint msg, uint wparam, uint lparam); +void SendWindowMessageClass(WindowClass wnd_class, uint msg, uint wparam, uint lparam); Window *FindWindowById(WindowClass cls, WindowNumber number); void DeleteWindow(Window *w);