MCPcopy Create free account
hub / github.com/BeneficialCode/WinArk / AddSubMenu

Method AddSubMenu

WinArk/OwnerDrawnMenu.cpp:76–116  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

74}
75
76void COwnerDrawnMenuBase::AddSubMenu(CMenuHandle menu) {
77 UpdateMenu(menu);
78 auto count = menu.GetMenuItemCount();
79 MENUITEMINFO mii = { sizeof(mii) };
80 WCHAR text[64];
81 for (decltype(count) i = 0; i < count; i++) {
82 mii.fMask = MIIM_TYPE | MIIM_DATA;
83 mii.fType = 0;
84 if (menu.GetMenuItemInfo(i, TRUE, &mii) && mii.fType == MFT_SEPARATOR)
85 mii.dwItemData = Separator;
86 else
87 mii.dwItemData = 0;
88 if (mii.fType & MFT_OWNERDRAW)
89 continue;
90
91 mii.fType |= MFT_OWNERDRAW;
92 ATLVERIFY(menu.SetMenuItemInfo(i, TRUE, &mii));
93 if (mii.dwItemData == Separator)
94 continue;
95
96 mii.fMask = MIIM_SUBMENU | MIIM_ID;
97 if (menu.GetMenuItemInfo(i, TRUE, &mii) && mii.hSubMenu) {
98 AddSubMenu(mii.hSubMenu);
99 }
100 else {
101 if (menu.GetMenuString(i, text, _countof(text), MF_BYPOSITION)) {
102 ATLASSERT(text[0]);
103 ATLASSERT(mii.wID);
104 auto it = m_Items.find(mii.wID);
105 if (it != m_Items.end())
106 it->second.Text = text;
107 else {
108 ItemData data;
109 data.Text = text;
110 data.Image = -1;
111 m_Items.insert({ mii.wID,data });
112 }
113 }
114 }
115 }
116}
117
118void COwnerDrawnMenuBase::SetCheckIcon(HICON hIcon) {
119 m_CheckIcon = m_Images.AddIcon(hIcon);

Callers

nothing calls this directly

Calls 1

endMethod · 0.45

Tested by

no test coverage detected