On 30/06/06, Thomas Kho <[EMAIL PROTECTED]> wrote:
I'm not 100% clear what the problem is. My interpretation of your
first email was that there was a necessary distinction in type between
user/gdi handles as stored in the server, but now my understanding is
that you're concerned gdi objects in MENUITEM/MENUITEMINFO should not
be mutable by external processes. Is that right?
The basic problem is that if you create a HBITMAP in one process, then
pass the handle to another process, you can't read the contents of the
bitmap in that other process.

So suppose you create a menu item in one process and set a custom
bitmap on the menu item. Should the menu then display correctly in
another process if you pass it the menu handle?

I did some probing and was able to change the values of the four gdi
objects (MENUINFO.hbrBack, and bitmap, (un-)check bitmaps in
MENUITEMINFO) from an external process. Specifically, I changed the
brush to one returned by GetStockObject(WHITE_BRUSH), changed the
bitmap to one of the predefined handles, and set (un-)check bitmaps to
an invalid value that was correctly returned upon a GetMenuItemInfo
query. So, I think regardless of the scope of gdi objects, it's the
right behavior for the menu code to blindly set and get the gdi
handles.
Stock objects are somewhat special, since they're not created / owned
by the current process.


Reply via email to