void CMyListBox::DrawItem (LPDRAWITEMSTRUCT lpdis)
{
CDC dc;
dc.Attach (lpdis->hDC);
CRect rect = lpdis->rcItem;
int nIndex = lpdis->itemID; CBrush* pBrush = new CBrush;
pBrush->CreateSolidBrush (::GetSysColor ((lpdis->itemState &
ODS_SELECTED) ? COLOR_HIGHLIGHT : COLOR_WINDOW));
dc.FillRect (rect, pBrush);
delete pBrush; if (lpdis->itemState & ODS_FOCUS)
dc.DrawFocusRect (rect); if (nIndex != (UINT) -1) //这一句,很奇怪啊,为什么要把-1转换成无符号整数,据我了解,无符号整数就是正数
dc.DrawIcon (rect.left + 4, rect.top + 2,
(HICON) GetItemData (nIndex)); dc.Detach ();
}
{
CDC dc;
dc.Attach (lpdis->hDC);
CRect rect = lpdis->rcItem;
int nIndex = lpdis->itemID; CBrush* pBrush = new CBrush;
pBrush->CreateSolidBrush (::GetSysColor ((lpdis->itemState &
ODS_SELECTED) ? COLOR_HIGHLIGHT : COLOR_WINDOW));
dc.FillRect (rect, pBrush);
delete pBrush; if (lpdis->itemState & ODS_FOCUS)
dc.DrawFocusRect (rect); if (nIndex != (UINT) -1) //这一句,很奇怪啊,为什么要把-1转换成无符号整数,据我了解,无符号整数就是正数
dc.DrawIcon (rect.left + 4, rect.top + 2,
(HICON) GetItemData (nIndex)); dc.Detach ();
}
//如果这句是 UINT nIndex = lpdis->itemID;
//那么nIndex != (UINT) -1还有点道理,现在的情况,转换完全没有理由。
nIndex != (UINT) -1
转换也是无意义的!0xffffffff这个数据,你按无符号来看,就是0xffffffff,按有符号来看,就是-1,不管你怎么看,他们都是同一个数,所以:
UINT iii = 0xFFFFFFFF;
if (-1 == iii)
AfxMessageBox(_T("ok"));
判断同样成功!
int i;
char c = -1;i = c; //结果i等于-1
i = (BYTE) c; //结果i等于255