Доброго времени суток!
Мне необходимо поместить кнопку (width=80) на собственный тулбар (outlook),
чтобы на кнопке на было изображение (80x16) и не было текста.
Применяю стиль для кнопки Office::msoButtonIcon, но при этом появляющееся
изображение искажается и приводится к размеру иконки (16x16).
Как поместить изображение без искажений?
Вот кусок кода создания кнопки:
CComQIPtr<Office::_CommandBarButton> spCmdButton(spNewBar);
ATLASSERT(spCmdButton);
//! Loading bitmap
HBITMAP hBmp =(HBITMAP)::LoadImage(_AtlModule.hInstance,
MAKEINTRESOURCE(faceId),IMAGE_BITMAP,80,20, LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT );
// put bitmap into Clipboard
::OpenClipboard(NULL);
::EmptyClipboard();
::SetClipboardData(CF_BITMAP, (HANDLE)hBmp);
::CloseClipboard();
::DeleteObject(hBmp);
spCmdButton->put_Width(80);
spCmdButton->put_Visible(VARIANT_TRUE);
spCmdButton->put_Caption(caption);
spCmdButton->put_Enabled(VARIANT_TRUE);
spCmdButton->put_TooltipText(tooltip);
spCmdButton->put_Tag(tag);
spCmdButton->put_Style(Office::msoButtonIcon);
//! Pasting bitmap
spCmdButton->PasteFace();
spNewCmdBar->put_Visible(VARIANT_TRUE);
Помогите советом, пожалуйста.
Здравствуйте, Аноним, Вы писали:
А>Мне необходимо поместить кнопку (width=80) на собственный тулбар (outlook),
А>чтобы на кнопке на было изображение (80x16) и не было текста.
А>Применяю стиль для кнопки Office::msoButtonIcon, но при этом появляющееся
А>изображение искажается и приводится к размеру иконки (16x16).
А>Как поместить изображение без искажений?
Вряд ли это возможно
см. How To Create a Transparent Picture For Office CommandBar Buttons
Q288771
In order to remain compatible with current Office guidelines, the bitmap image you use for a custom CommandBarButton picture should be a 256-color device independent bitmap (DIB) no bigger than 16 x 16 pixels in size.
...
The image should be no bigger than 16 pixels wide and 16 pixels high.
Примерно то же говорится в
Button Bonanza: Part I (Undocumented Tricks to Add Icons to Your Applications)
а как же тогда сделали в том же
spamfighter'e?
Здравствуйте, poison27, Вы писали:
P>а как же тогда сделали в том же spamfighter'e?
Свойство Picture у CommandBarButton — это IPictureDisp
Property Picture As IPictureDisp
Member of Office.CommandBarButton
Свойство Width у IPictureDisp — readOnly, но есть метод Render, может быть, им можно как-то воспользоваться?