{
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 ();
}
9 个解决方案
#1
-1转化成无符号整数就成了最大的无符号整数。。。
#2
以前这里是? UINT nIndex = lpdis->itemID;
#3
-1 == 0xFFFFFFFF
#4
int nIndex = lpdis->itemID;
//如果这句是 UINT nIndex = lpdis->itemID;
//那么nIndex != (UINT) -1还有点道理,现在的情况,转换完全没有理由。
//如果这句是 UINT nIndex = lpdis->itemID;
//那么nIndex != (UINT) -1还有点道理,现在的情况,转换完全没有理由。
#5
不转换也可以。
#6
一般地,nIndex=-1表示列表项目尾端,可以不转换,如果转换的话,那么就要化为unit类型,使得这个值为最大,即达到尾端.
#7
up
#8
转换是无意义的!
UINT nIndex = lpdis->itemID;
nIndex != (UINT) -1
转换也是无意义的!
0xffffffff这个数据,你按无符号来看,就是0xffffffff,按有符号来看,就是-1,不管你怎么看,他们都是同一个数,所以:
UINT iii = 0xFFFFFFFF;
if (-1 == iii)
AfxMessageBox(_T("ok"));
判断同样成功!
UINT nIndex = lpdis->itemID;
nIndex != (UINT) -1
转换也是无意义的!
0xffffffff这个数据,你按无符号来看,就是0xffffffff,按有符号来看,就是-1,不管你怎么看,他们都是同一个数,所以:
UINT iii = 0xFFFFFFFF;
if (-1 == iii)
AfxMessageBox(_T("ok"));
判断同样成功!
#9
只有在数据位数不同时(且从低位数据向高位数据转换时),转换才有意义,我举个例子:
int i;
char c = -1;
i = c; //结果i等于-1
i = (BYTE) c; //结果i等于255
int i;
char c = -1;
i = c; //结果i等于-1
i = (BYTE) c; //结果i等于255
#1
-1转化成无符号整数就成了最大的无符号整数。。。
#2
以前这里是? UINT nIndex = lpdis->itemID;
#3
-1 == 0xFFFFFFFF
#4
int nIndex = lpdis->itemID;
//如果这句是 UINT nIndex = lpdis->itemID;
//那么nIndex != (UINT) -1还有点道理,现在的情况,转换完全没有理由。
//如果这句是 UINT nIndex = lpdis->itemID;
//那么nIndex != (UINT) -1还有点道理,现在的情况,转换完全没有理由。
#5
不转换也可以。
#6
一般地,nIndex=-1表示列表项目尾端,可以不转换,如果转换的话,那么就要化为unit类型,使得这个值为最大,即达到尾端.
#7
up
#8
转换是无意义的!
UINT nIndex = lpdis->itemID;
nIndex != (UINT) -1
转换也是无意义的!
0xffffffff这个数据,你按无符号来看,就是0xffffffff,按有符号来看,就是-1,不管你怎么看,他们都是同一个数,所以:
UINT iii = 0xFFFFFFFF;
if (-1 == iii)
AfxMessageBox(_T("ok"));
判断同样成功!
UINT nIndex = lpdis->itemID;
nIndex != (UINT) -1
转换也是无意义的!
0xffffffff这个数据,你按无符号来看,就是0xffffffff,按有符号来看,就是-1,不管你怎么看,他们都是同一个数,所以:
UINT iii = 0xFFFFFFFF;
if (-1 == iii)
AfxMessageBox(_T("ok"));
判断同样成功!
#9
只有在数据位数不同时(且从低位数据向高位数据转换时),转换才有意义,我举个例子:
int i;
char c = -1;
i = c; //结果i等于-1
i = (BYTE) c; //结果i等于255
int i;
char c = -1;
i = c; //结果i等于-1
i = (BYTE) c; //结果i等于255