none
A real challenge for you !! (Menu border)

    Question

  • Can anyone suggest a way to display a popup menu that has no 3D
    borders and looks flat like a listbox?  I have tried owner drawn menus
    but they only let you draw on the menu items and not the border.  I
    can't find an option to turn off the 3D effects for a menu.


    BTW, I need solution that doesnt use C++, MFC or any libs (only pure API)

    Monday, October 10, 2005 10:34 AM

Answers

  • No chance to do that.
    Even the TrackPopupMenu function has no flag to control the shadow.

    AFAIK you can only use SPI_SETDROPSHADOW to switch off shadows on a global base. But this can't be a solution. Even I am not sure that this flag is used for menus.
    Monday, October 10, 2005 12:04 PM
    Moderator
  • Why do you think that in a MFC program it is different?
    If a program might have no manifest for the ComCtl32 6.0 the visual appearance might be different at all.
    But AFAIK there is no seperate switch if you use the standard menus.

    I use the bcg library. They draw their own menus, like Word and Office products. There is a switch to handle this.

    Monday, October 10, 2005 3:52 PM
    Moderator

All replies

  • No chance to do that.
    Even the TrackPopupMenu function has no flag to control the shadow.

    AFAIK you can only use SPI_SETDROPSHADOW to switch off shadows on a global base. But this can't be a solution. Even I am not sure that this flag is used for menus.
    Monday, October 10, 2005 12:04 PM
    Moderator
  • If it was not possible, then how they could do that in MFC ??
    Monday, October 10, 2005 2:32 PM
  • Why do you think that in a MFC program it is different?
    If a program might have no manifest for the ComCtl32 6.0 the visual appearance might be different at all.
    But AFAIK there is no seperate switch if you use the standard menus.

    I use the bcg library. They draw their own menus, like Word and Office products. There is a switch to handle this.

    Monday, October 10, 2005 3:52 PM
    Moderator
  • If you want draw the border by yourself:

    use WM_NCPAINT, WM_NCCALCSIZE

    these message be send before WM_DRAWITEM
    Thursday, November 24, 2005 6:20 AM