回答編集履歴
1
記述を修正
answer
CHANGED
@@ -6,23 +6,22 @@
|
|
6
6
|
|
7
7
|
更に、`GetDC`で取得したデバイスコンテキストも、`ReleaseDC`で解放されていません。
|
8
8
|
|
9
|
-
[GetDC -
|
9
|
+
[GetDC - Microsoft Docs](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc)
|
10
10
|
|
11
11
|
`CreateCompatibleDC`で作ったら`DeleteDC`で削除、`GetDC`で取得したら`ReleaseDC`で解放するようにしてください。
|
12
12
|
|
13
|
-
尚、`WM_PAINT`メッセージの
|
13
|
+
尚、`WM_PAINT`メッセージの処理では、`GetDC`でデバイスコンテキストを取得するというよりは、`WM_PAINT`メッセージ受信時に必ず呼ばなければならない`BeginPaint`で返されるものを使うのが一般的です。
|
14
14
|
|
15
15
|
```C++
|
16
16
|
PAINTSTRUCT ps;
|
17
17
|
HDC hdc;
|
18
18
|
|
19
|
-
// WM_PAINT
|
19
|
+
// WM_PAINTメッセージ受信部分でははBeginPaintのDCが使える。
|
20
20
|
hdc = BeginPaint(hWnd, &ps);
|
21
|
-
|
22
21
|
// hdc = GetDC(hWnd); これで取得できたものと同等に使える
|
23
|
-
// ReleaseDC(hWnd, hdc);
|
24
22
|
|
25
23
|
...hdc を使って色々と処理。
|
26
24
|
|
25
|
+
// ReleaseDC(hWnd, hdc);
|
27
26
|
EndPaint(hWnd, &ps);
|
28
27
|
```
|