MAG
MAG

Reputation: 3075

Tiling menuItems in win32 as per particular design

I am creating a pop up menu item in win32 . I was able to create a popup menu item and then I added few icons to it. This is how its looking

enter image description here

sameple code

HMENU Controls = CreatePopupMenu();
    InsertMenu(Controls, 0 , MF_STRING, 1, L"FirstMenu00");;

    static HBITMAP bmpSource = NULL;
    bmpSource = (HBITMAP)LoadImage(NULL, L"C:\\Users\\mac\\bit.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

    MENUITEMINFO mii{};
    mii.cbSize = sizeof(mii);
    mii.fMask = MIIM_ID | MIIM_BITMAP | MIIM_DATA;
    mii.wID = 1;
    mii.hbmpItem = bmpSource;// &paHbm[i];

    bool st = InsertMenuItem(Controls, 10, TRUE, &mii);
    std::string errSTr = GetLastErrorAsString();


 TrackPopupMenuEx(Controls, TPM_LEFTALIGN | TPM_BOTTOMALIGN | TPM_LEFTBUTTON | TPM_HORPOSANIMATION, xPos, yPos, hwnd, NULL);

I am trying to arrange the menu icons in the following fashion Ie I am trying to create a pattern where first row has 2 icons and the next row has 3 icons .

How can I achieve the same ?

enter image description here

Upvotes: 0

Views: 147

Answers (1)

YangXiaoPo-MSFT
YangXiaoPo-MSFT

Reputation: 2130

You can use MF_MENUBREAK or MF_MENUBARBREAK flag in AppendMenu function to create a multi-column menu item. It seems that each raw has the same columns.
Here is a sample you can refer to:\

HMENU hmenuPopup = CreatePopupMenu();
// Add the bitmap menu items to the menu. 
bool st = AppendMenu(hmenuPopup, MF_BITMAP, uID, (LPCWSTR)paHbm);
if (!st)
{
    ErrorExit(L"AddBitmapMenu");
}
st = AppendMenu(hmenuPopup, MF_BITMAP | MF_MENUBARBREAK, uID + 1, (LPCWSTR)LoadBitmap(g_hInstance, MAKEINTRESOURCE(IDB_BITMAP2)));
if (!st)
{
    ErrorExit(L"AddBitmapMenu");
}

More reference: Menu Item Separators and Line Breaks, Displaying menu items in multiple columns

Upvotes: 1

Related Questions