![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_16.png?e8efa67)
いつもお世話になります。
縦縞の四角形を表示するプログラムですが、ある一定の四角形を描画すると四角形の中の縦縞がなくなり、白色になります。
原因が分かりません。アドバイスをお願い致します。
(四角形をマウスドラッグ中に小さくすると黒い線がたくさんでてきますが、これはアプリケーションの仕様です)
プロシージャソースは以下の通り。
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ランキング
-
ダイアログプログラムでEnterキ...
-
ウィンドウ非表示に時に表示し...
-
C#のswitch文を簡略化したいの...
-
エラー Run-Time Check Failur...
-
ゲームとかの解像度変更&全画...
-
WinAPIでの画像高速切り替え表...
-
Win32APIでウィンドウを中央に...
-
COMPORTマルチスレッドで例外発生
-
Win32APIにて、ウィンドウ全体...
-
マウスの反応
-
不思議な現象が起こるプログラ...
-
エディットボックスの背景の色...
-
AtCoderABC135の問題Cについて
-
信頼区間の1.96や1.65ってどこ...
-
マイナスからプラスへ転じた時...
-
C言語での引数の省略方法
-
「Aに対するBの割合」と「Aに対...
-
「指定されたキャストは有効で...
-
エクセルで可視セルにのみ値貼...
-
Enterキーを押されたら次の処理...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Win32APIでウィンドウを中央に...
-
音量調節
-
オーバーレイみたいな処理がしたい
-
return文がない場合の戻り値は...
-
COMPORTマルチスレッドで例外発生
-
エラー Run-Time Check Failur...
-
C言語win32api、エディットボッ...
-
WM_CREATE について
-
キャレットの現在位置の表示 (W...
-
エディットボックスの背景の色...
-
エディットコントロール入力時...
-
LoadImageとSetCursorについて
-
C#のswitch文を簡略化したいの...
-
コンソールアプリケーションの...
-
ウィンドウハンドルがメッセー...
-
PeekMessageについて
-
Win32APIにて、ウィンドウ全体...
-
C++のcase文の書き方
-
MessageBoxについて
-
Directxについて
おすすめ情報