アプリ版:「スタンプのみでお礼する」機能のリリースについて

を作るつもりで
color^=0xffffff;
として表示させてみると
colorがどんな色であっても黒くなってしまいました
COLORREFの構造をサイト検索してもでていなかったので
rgbが8ビットづつ積み重なっている単なるintと見なして以上のようにしたのですが何が悪いのでしょうか?

A 回答 (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;
}

-------------------------------------------------------------------------------

参考URL:http://black.sakura.ne.jp/~third/system/winapi/w …
    • good
    • 0

訂正です。



> hBrush = CreateSolidBrush( clrColor ^= 0xFFFFFF );

hBrush = CreateSolidBrush( clrColor ^= 0xFFFFFFFF );

申し訳ないス。
    • good
    • 0
この回答へのお礼

ありがとうございました
3×8=24ビット
だけでいいと思っていました

お礼日時:2003/04/22 10:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!