3

我想将托盘图标的上下文菜单中的第一项设为粗体。这应该很容易,但我在任何地方都找不到答案。有人可以指出我正确的方向吗?这是我用来呈现项目的代码:

void MenuItemWin::CreateNative(
    LPMENUITEMINFO itemInfo, HMENU nativeParentMenu, bool registerNative)
{
    ZeroMemory(itemInfo, sizeof(MENUITEMINFO)); 
    itemInfo->cbSize = sizeof(MENUITEMINFO);
    itemInfo->wID = ++UIWin::nextItemId;
    itemInfo->dwItemData = (ULONG_PTR) this;
    itemInfo->fMask = MIIM_ID | MIIM_FTYPE | MIIM_DATA;

    HMENU nativeSubmenu = 0;
    if (this->IsSeparator())
    {
        itemInfo->fType = MFT_SEPARATOR;
    }
    else
    {
        itemInfo->fMask = itemInfo->fMask | MIIM_STRING | MIIM_SUBMENU | MIIM_STATE;
        itemInfo->fType = MFT_STRING;
        itemInfo->fState = this->IsEnabled() ? MFS_ENABLED : MFS_DISABLED;
        itemInfo->dwTypeData = (LPWSTR) this->wideOldLabel.c_str();

        AutoPtr<MenuWin> wsubmenu = this->submenu.cast<MenuWin>();
        if (!wsubmenu.isNull())
            nativeSubmenu = wsubmenu->CreateNative(registerNative);

        itemInfo->hSubMenu = nativeSubmenu;

        if (this->IsCheck())
        {
            itemInfo->fState |= this->GetState() ? MFS_CHECKED : MFS_UNCHECKED;
        }
        else if (!this->iconPath.empty())
        {
            HBITMAP bitmap = UIWin::LoadImageAsBitmap(iconPath,
                GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON));
            if (bitmap)
            {
                itemInfo->fMask = itemInfo->fMask | MIIM_BITMAP;
                itemInfo->hbmpItem = bitmap;
            }
            else
            {
                std::string error = Win32Utils::QuickFormatMessage(GetLastError());
                Logger::Get("UI.MenuItem")->Error("Could not load icon (%s): %s",
                    iconPath.c_str(), error.c_str());
            }
        }
    }

    if (registerNative)
    {
        NativeItemBits* bits = new NativeItemBits;
        bits->id = itemInfo->wID;
        bits->parentMenu = nativeParentMenu;
        bits->submenu = nativeSubmenu;
        this->nativeItems.push_back(bits);
    }
}
4

0 回答 0