Re: [WIN] drop-down lists stay in same place when window moved

new topic     » goto parent     » topic index » view thread      » older message » newer message

Dan Moyer wrote:

> In my "Templates Handler", any drop-down list that
> is "open" (dropped down) neglects to move with the
> window if it's moved or resized.  Can anyone tell
> me how to make an open dropped down list move with
> the window?

This was a bug for a long time in Win32Lib. I finally got around to fixing
it, but I don't see it in the latest release of Win32Lib. Perhaps I never
released the code, or something. I can't vouch that it will work in the
current version of Win32Lib - there have been so many changes, I don't
really know the all the ins and outs of the code anymore.

First, I created a variable to hold the ID of the currently open dropdown,
if any:

   -- constants
   constant
       WM_WINDOWPOSCHANGING    = 70,
       CB_SHOWDROPDOWN         = 335

   integer
       theDropList
       theDropList = 0

(You can tell the code is old, since the two constants weren't defined!)

When a combo is opened (CBN_DROPDOWN), set openComboId to the open combo.
When the combo closes (CBN_CLOSEUP), set openComboId to zero. This code
lived in WndProc:

     -- dropdown opened?
     elsif event = CBN_DROPDOWN then
         -- save droplist id
         theDropList = myControl

      -- dropdown closed?
     elsif iMsg = CBN_CLOSEUP then
         -- clear droplist
         theDropList = 0

     end if

On a window resize/moving event, check if openComboId is nonzero. If it is,
a close combobox event (CB_SHOWDROPDOWN, I think) was sent to the open
combo, and the flag was cleared. This also lived in WndProc. I think that
WM_WINDOWPOSCHANGING 'magically' handles both of those events:

    -- handle dropdown
    elsif iMsg = WM_WINDOWPOSCHANGING then
        if theDropList then
            -- close the list
            result = sendMessage( theDropList, CB_SHOWDROPDOWN, 0, 0 )
            -- clear the droplist
            theDropList = 0
        end if

I hope this helps. The list 'hanging' there is certainly a *weird* behavior!

-- David Cuny

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu