gpt4 book ai didi

c++ - MS 色带 : draw button icon from code

转载 作者:行者123 更新时间:2023-11-28 06:35:46 25 4
gpt4 key购买 nike

我尝试创建 MS 功能区按钮图标表单代码。我创建了 32 bpp 的 CImage。

CImage img;
img.Create(size, size, 32, CImage::createAlphaChannel);

然后我将这张图片像 hdc 一样用于位图:

HDC hdc = CImageDC(img);
BitBlt(hdc, 0, 0, cx, cy, hdcMem, sx, sy, SRCCOPY);

最后,我使用了 UIRibbonImageFromBitmapFactory 并将结果设置为属性:

IUIImage* pImg;
CComPtr<IUIImageFromBitmap> pifb;
pifb.CoCreateInstance(CLSID_UIRibbonImageFromBitmapFactory);
pifb->CreateImage(img, UI_OWNERSHIP_TRANSFER, &pImg);
UIInitPropertyFromImage(key, pImg, ppropvarNewValue);

结果所有功能都成功完成,但按钮图标为空!!!

我使用了这些要求 http://msdn.microsoft.com/en-us/library/windows/desktop/dd316921(v=vs.85).aspx按钮图标是否需要其他要求?

最佳答案

您必须先转换为 HBITMAP,然后使用框架的工厂生成 IUIImage:

// Load the bitmap from the resource file.
CImage img;
hr = img.Load(pszResource);
if (FAILED(hr)) return hr;

HBITMAP hbm = (HBITMAP) img.Detach();
if (hbm)
{
// Use the factory implemented by the framework to produce an IUIImage.
hr = m_pifbFactory->CreateImage(hbm, UI_OWNERSHIP_TRANSFER, ppimg);
if (FAILED(hr))
{
DeleteObject(hbm);
}
}

然后你可以将图像添加到按钮,如

// Set the image as the new property value for the button.
hr = UIInitPropertyFromImage(UI_PKEY_LargeImage, pImg, ppropvarNewValue);

祝你好运!

关于c++ - MS 色带 : draw button icon from code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26811688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com