我正在尝试使用方法DrawState
绘制一个禁用的图标。我现在的问题是此方法忽略宽度(参数BUTTONWIDTH
)和高度(参数BUTTONHEIGHT
)。
是否有其他方法可用或我是否需要更改某些参数?
void CPgFPButton::DrawButtonIcon(LPDRAWITEMSTRUCT lpdis, HICON hicon)
{
RECT rect = lpdis->rcItem;
rect.left = 3;
rect.top = 3;
if (!m_Enabled)
DrawState(lpdis->hDC,NULL, NULL, (LPARAM)hicon, (WPARAM)NULL,
rect.left, rect.top, BUTTONWIDTH, BUTTONHEIGHT,
DST_COMPLEX | DST_ICON|DSS_DISABLED);
else
DrawIconEx(lpdis->hDC,
rect.left,rect.top,hicon,
BUTTONWIDTH - 3 * 2,
BUTTONHEIGHT - 3 * 2,0,NULL,DI_NORMAL);
}
答案 0 :(得分:1)
来自MSDN:
图像类型和状态。此参数可以是以下类型值之一 DST_COMPLEX
DST_ICON
...
此参数也可以是以下状态值之一 DSS_DISABLED
...
您正在通过DST_COMPLEX | DST_ICON|DSS_DISABLED
。看起来您应该决定是使用DST_COMPLEX
还是DST_ICON
而不是同时使用它们。提醒:宽度和高度仅用于DST_COMPLEX
。