

いつもお世話になります。
縦縞の四角形を表示するプログラムですが、ある一定の四角形を描画すると四角形の中の縦縞がなくなり、白色になります。
原因が分かりません。アドバイスをお願い致します。
(四角形をマウスドラッグ中に小さくすると黒い線がたくさんでてきますが、これはアプリケーションの仕様です)
プロシージャソースは以下の通り。
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ランキング
-
エラー Run-Time Check Failur...
-
エディットボックスの背景の色...
-
Win32APIにて、ウィンドウ全体...
-
C#のswitch文を簡略化したいの...
-
ダイアログプログラムでEnterキ...
-
Enterキーを押されたら次の処理...
-
Aの値からBの値を除するとは??
-
「Aに対するBの割合」と「Aに対...
-
C言語での引数の省略方法
-
ある商品のロス率を5%見込み、...
-
【C言語】全角文字の配列を、全...
-
エクセルで可視セルにのみ値貼...
-
fgetsなどのときのstdinのバッ...
-
#define _CRT_SECURE_NO_WARNIN...
-
マイナスからプラスへ転じた時...
-
20'(角度)の計算がわかりま...
-
有効数字について 以前質問をし...
-
実数の整数部,小数部の取得
-
#if 1 #elseの意味について
-
C言語 エラーの原因がわからな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エディットボックスの背景の色...
-
エラー Run-Time Check Failur...
-
C#のswitch文を簡略化したいの...
-
プログラミングでエラーが出ま...
-
Win32APIでウィンドウを中央に...
-
Unicode でのWin32アプリのプロ...
-
c言語初心者です。ついに。。
-
LoadImageを使用し、タイトルバ...
-
AVRによるマトリクスLED制御
-
オーバーレイみたいな処理がしたい
-
MessageBoxについて
-
ダイアログプログラムでEnterキ...
-
Win32 APIでのVirtual-Key Co...
-
Win32のファイルダイアログのサ...
-
キャレットの現在位置の表示 (W...
-
C言語です
-
ボタンの色(WINAPI)
-
WinAPIでの画像高速切り替え表...
-
WM_KEYDOWNでPrtScを捕まえる方...
-
ウィンドウサイズを変更しても...
おすすめ情報