在menuiteMinfo上创建位图不会负载位图



添加了HBMPITEM后,程序甚至无法加载下拉菜单。有什么想法如何在菜单中添加小位图?已从代码中删除项目以清理此问题。

逐步浏览程序表明,位图变量的内存中没有任何内容,这对我来说意味着它无法加载。路径正确。

更新:答案请参见下文。

               MENUITEMINFO mii;
                memset(&mii, 0, sizeof(mii));
                mii.cbSize = sizeof(mii);
                mii.fMask = MIIM_BITMAP; //| MIIM_BITMAP;
                mii.fType = MFT_BITMAP;
                mii.dwTypeData = const_cast<char*>(pMenuRec->GetName());
                mii.cch = strlen(pMenuRec->GetName());
                mii.wID = pMenuRec->GetID();
                mii.hbmpItem = image;      // hBMP;  // need to add bitmap handle
                mii.dwItemData = reinterpret_cast<unsigned long>(pMenuRec->GetName());
                InsertMenuItem(hMenu, pMenuRec->GetID(), FALSE, &mii);

                memset(&mii,0,sizeof(mii));
                mii.cbSize     = sizeof(mii);
                mii.fMask = MIIM_TYPE | MIIM_DATA | MIIM_ID; //| MIIM_BITMAP;
                mii.fType = MFT_STRING;
                mii.dwTypeData = const_cast<char*>(pMenuRec->GetName());
                mii.cch        = strlen(pMenuRec->GetName());
                mii.wID        = pMenuRec->GetID();
                //mii.hbmpItem =  image;      // hBMP;  // need to add bitmap handle
                mii.dwItemData = reinterpret_cast<unsigned long>(pMenuRec->GetName());
                InsertMenuItem(hMenu,pMenuRec->GetID(),FALSE,&mii);

使"C:mybitmap.bmp"的简单错误应为"C:\mybitmap.bmp"。记住BackSlash是字符串文字中的一个逃生字符。如果您想要字符串中的后斜线,则必须将其加倍。

还值得注意的是,大多数功能与窗户上的前向斜线非常有效。因此您可以将后斜线更改为前向斜线。

偶然在您的代码中,为什么要加载位图两次?

因此不允许图像和文本。因此,通过添加fmask

使用了检查和未选中
                memset(&mii,0,sizeof(mii));
                mii.cbSize     = sizeof(mii);
                mii.fMask = MIIM_TYPE | MIIM_SUBMENU | MIIM_DATA | MIIM_ID | MIIM_CHECKMARKS; // Add checkmarks;
                mii.fType = MFT_STRING;
                mii.dwTypeData = const_cast<char*>(pMenuRec->GetName());
                mii.cch        = strlen(pMenuRec->GetName());
                mii.wID        = pMenuRec->GetID();
                mii.hbmpChecked = image;
                mii.hbmpUnchecked = image;
                mii.dwItemData = reinterpret_cast<unsigned long>(pMenuRec->GetName());
                InsertMenuItem(hMenu, pMenuRec->GetID(), FALSE, &mii);`

最新更新