

いつもお世話になります。
縦縞の四角形を表示するプログラムですが、ある一定の四角形を描画すると四角形の中の縦縞がなくなり、白色になります。
原因が分かりません。アドバイスをお願い致します。
(四角形をマウスドラッグ中に小さくすると黒い線がたくさんでてきますが、これはアプリケーションの仕様です)
プロシージャソースは以下の通り。
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
HDC hDC;
PAINTSTRUCT ps;
static POINT start, end;
static bool push;
switch(msg)
{
case WM_CREATE:
push = false;
break;
case WM_LBUTTONDOWN:
start.x = LOWORD(lParam);
start.y = HIWORD(lParam);
push = true;
break;
case WM_MOUSEMOVE:
if(push){
end.x = LOWORD(lParam);
end.y = HIWORD(lParam);
InvalidateRect(hWnd, NULL, FALSE);
}
break;
case WM_LBUTTONUP:
end.x = LOWORD(lParam);
end.y = HIWORD(lParam);
push = false;
InvalidateRect(hWnd, NULL, FALSE);
break;
case WM_PAINT:
HBRUSH hBrush;
hDC = BeginPaint(hWnd, &ps);
hBrush = CreateHatchBrush(HS_VERTICAL, RGB(255, 0, 0));
SelectObject(hDC, hBrush);
Rectangle(hDC, start.x, start.y, end.x, end.y);
DeleteObject(hBrush);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
SelectObjectしたままDeleteObjectした場合ってきれいに破棄されましたっけ?
ここでリソースリークしたせいで、最終的にブラシの生成ができないのかも。
hSukebe=SelectObject(hDC, hBrush);
Rectangle(hDC, start.x, start.y, end.x, end.y);
SelectObject(hDC, hSukebe);
DeleteObject(hBrush);
こんなのでどうかな?
お返事ありがとうございます。
おっしゃられた通り、SelectObjectでもとの設定に戻してDeleteObjectしたら上手くいきました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ボタンのアイコン表示
-
Win32APIにて、ウィンドウ全体...
-
C#のswitch文を簡略化したいの...
-
コンソールアプリケーションの...
-
プログラミングでエラーが出ま...
-
エラー Run-Time Check Failur...
-
return文がない場合の戻り値は...
-
ゲームとかの解像度変更&全画...
-
C言語win32api、エディットボッ...
-
ウィンドウハンドルがメッセー...
-
不明なエラー
-
なぜhButton1ボタンからのWM_CO...
-
【Windowsアプリ】ファイルのド...
-
Enterキーを押されたら次の処理...
-
C言語のfor文です。 繰り返しの...
-
Aの値からBの値を除するとは??
-
#define _CRT_SECURE_NO_WARNIN...
-
*をユーザーが入力した数字の数...
-
えきねっとのトクだ値とトク割...
-
数字以外が入力されたらエラー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エディットボックスの背景の色...
-
ウィンドウ非表示に時に表示し...
-
エラー Run-Time Check Failur...
-
Win32APIにて、ウィンドウ全体...
-
ボタンの色(WINAPI)
-
ダイアログプログラムでEnterキ...
-
C#のswitch文を簡略化したいの...
-
オーバーレイみたいな処理がしたい
-
Win32APIでウィンドウを中央に...
-
プログラミングでエラーが出ま...
-
ツリーコントロールの開閉アイ...
-
なぜhButton1ボタンからのWM_CO...
-
C言語win32api、エディットボッ...
-
LoadImageとSetCursorについて
-
コンソールアプリケーションの...
-
画像を表示したいのですが……
-
MoveToExとLineToについて
-
ウィンドウのサイズ変更について
-
ボタンのアイコン表示
-
トラックのループの仕方
おすすめ情報