• 締切済み

SelectObjectについて

SelectObject関数で例えば、 hbrush=SelectObject(hdc,CreatesolidBrush(RGB(0,0,0,)); Rectangle(hdc,0,0,100,100); SelectObject(hdc,hbrush); でやる場合、なぜ、SelectObject(hdc,hbrush);で前の色に戻るはずなのに 戻らないのでしょうか?この意味はあるのでしょうか? 環境はVC++2005です。

みんなの回答

回答No.4

一つ上の画像です。 # 失敗したので再度。

taiyaki_10
質問者

お礼

説明不足ですみません。 自己解決しました。 回答ありがとうございました!

回答No.3

白になりませんか? 以下試した手順 新規作成→プロジェクト→Win32→Win32プロジェクト→ウィザードで完了 WndProc関数 case WM_PAINT: に画像のように記述し、実行。 黒線の四角形の中が白色になっている。

この投稿のマルチメディアは削除されているためご覧いただけません。
回答No.2

>hBrush = ::CreateSolidBrush(RGB(0, 0, 0)); RGB(0, 0, 0)は黒ですよ? 白いブラシならRGB(255, 255, 255)をしていしないと。

taiyaki_10
質問者

お礼

説明不足ですみません。なぜSelectObject(hdc,hbrush);で白にしているのに Rectangle(hdc,0,0,100,100);(ここの所)で白にならないのかということです。

回答No.1

>戻らないのでしょうか? どのようにして確認しましたか? HBRUSH hBrush, hOldBrush; hBrush = ::CreateSolidBrush(RGB(0, 0, 0)); hOldBrush = (HBRUSH)::SelectObject(hDC, hBrush); ::Rectangle(hDC, 0, 0, 100, 100); ::SelectObject(hDC, hOldBrush); ::DeleteObject(hBrush); ::Rectangle(hDC, 100, 0, 200, 100); // もとは白いブラシ VS2005ですが発生しません。

taiyaki_10
質問者

お礼

質問間違えました。なぜ hBrush = ::CreateSolidBrush(RGB(0, 0, 0)); hOldBrush = (HBRUSH)::SelectObject(hDC, hBrush); ::Rectangle(hDC, 0, 0, 100, 100);<ーここ ::SelectObject(hDC, hOldBrush); ::DeleteObject(hBrush); ::Rectangle(hDC, 100, 0, 200, 100); // もとは白いブラシ ここの色が白くはならないのでしょうか?

専門家に質問してみよう