具有特定宽度和高度的DrawState

时间:2015-10-21 13:59:55

标签: c++ winapi

我正在尝试使用方法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);
}

1 个答案:

答案 0 :(得分:1)

来自MSDN

  

图像类型和状态。此参数可以是以下类型值之一   DST_COMPLEX
  DST_ICON
  ...
  此参数也可以是以下状态值之一   DSS_DISABLED
  ...

您正在通过DST_COMPLEX | DST_ICON|DSS_DISABLED。看起来您应该决定是使用DST_COMPLEX还是DST_ICON而不是同时使用它们。提醒:宽度和高度仅用于DST_COMPLEX