Pajama Sam's unmanaged window

Dmitry Timoshkov dmitry at baikal.ru
Thu Jan 31 21:10:25 CST 2002


"Ove Kaaven" <ovehk at ping.uio.no> wrote:

> > > > Since this is probably not the case, perhaps it's better to check for the
> > > > popup menu class in is_window_managed(), something like
> > > >
> > > >  if (GetClassLongA(win->hwndSelf, GCW_ATOM) == POPUPMENU_CLASS_ATOM) return
> > > > FALSE;
> > > 
> > > Ah ha! Exactly what I had in mind. After thinking about this, it seemed to me 
> > > that is_window_managed() should examine the window's class, as well as its 
> > > style bits, since the class will give a more accurate indication of what kind 
> > > of window we're dealing with than just the style bits.
> > 
> > Unfortunately this aproach does not work well in all cases, especially in
> > the case of subclassed windows.
> 
> Do you have any examples where it might not work... window subclassing is
> the act of using SetWindowLong to replace the window procedure, which does
> not change the class atom, as far as I know?

Here is what I did for testing a progress bar control:

GetClassInfo(0, "msctls_progress32", &wnd_class);
old_ProgressProc = wnd_class.lpfnWndProc;
wnd_class.lpfnWndProc = my_ProgressProc;
wnd_class.lpszClassName = "my_progress32";
RegisterClass(&wnd_class);

my_ProgressProc just logs all received messages and then calls an old
window procedure:
CallWindowProc(old_ProgressProc, hWnd, uMsg, wParam, lParam);

-- 
Dmitry.







More information about the wine-devel mailing list