- ベストアンサー
COLORREF color の反転色
を作るつもりで color^=0xffffff; として表示させてみると colorがどんな色であっても黒くなってしまいました COLORREFの構造をサイト検索してもでていなかったので rgbが8ビットづつ積み重なっている単なるintと見なして以上のようにしたのですが何が悪いのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
COLORREF は 32 ビット整数らしいので全ビットを XOR させたいなら、 color ^= 0xFFFFFFFF; とすべきところを color ^= 0xFFFFFF; と、1バイト分足りないからじゃないでしょうか? 以下、一応うまく行ったサンプルです。 ------------------------------------------------------------------------------- /* WM_PAINT で呼び出してください */ /*******************************************************************/ /* グラフィックの描画 */ /*******************************************************************/ static int graphicPaintProc( HWND hWnd ){ HDC hdc; PAINTSTRUCT ps; RECT rt; HBRUSH hBrush; COLORREF clrColor = RGB( 0x00, 0x00, 0x00 ); hdc = BeginPaint( hWnd, &ps ); GetClientRect( hWnd, &rt ); hBrush = CreateSolidBrush( clrColor ^= 0xFFFFFF ); FillRect( hdc, &rt, hBrush ); EndPaint( hWnd, &ps ); DeleteObject( hBrush ); return TRUE; } -------------------------------------------------------------------------------
その他の回答 (1)
- HogePiyo
- ベストアンサー率57% (24/42)
訂正です。 > hBrush = CreateSolidBrush( clrColor ^= 0xFFFFFF ); hBrush = CreateSolidBrush( clrColor ^= 0xFFFFFFFF ); 申し訳ないス。
お礼
ありがとうございました 3×8=24ビット だけでいいと思っていました