5

ここに私のコード

   if(bSelected)
{
    clrTextSave=pDC->SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));
    clrBkSave=pDC->SetBkColor(::GetSysColor(COLOR_HIGHLIGHT));
    pDC->FillRect(rcAllLabels,&CBrush(::GetSysColor(COLOR_HIGHLIGHT)));
}
else
    pDC->FillRect(rcAllLabels,&CBrush(m_clrTextBk));

Visual Studio 2008 に準拠すると、「warning C4238: nonstandard extension used : class rvalue used as lvalue I don't know how to fix this warning?」というメッセージが表示されます。誰か助けてください。ありがとうございました !

4

1 に答える 1

15

一時的なアドレスを作成してそのアドレスを使用しているため、警告が表示されます (常に最高の警告レベルを使用してコードをコンパイルする必要があるため、エラーになるはずです)。この警告を回避するには、代わりにローカル変数を作成する必要があります。

if(bSelected)
{
    clrTextSave = pDC->SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));
    clrBkSave = pDC->SetBkColor(::GetSysColor(COLOR_HIGHLIGHT));
    CBrush brush(::GetSysColor(COLOR_HIGHLIGHT)); // create a local variable
    pDC->FillRect(rcAllLabels, &brush); // use its address
}
else
{
    CBrush brush(m_clrTextBk); // same thing here
    pDC->FillRect(rcAllLabels, &brush);
}
于 2013-08-22T03:33:49.100 に答える