by Sunshine » 2005年9月02日(金) 01:55
作ったデバイスコンテキスト等は解放してますか?
ローカルで作成されたデバイスコンテキストやビットマップなどは、そのローカル内で解放させなければなりません。
グローバルで作成したデバイスコンテキスト等はプログラム終了時(RADツールで作ったプログラムならMainWnd_Destroy内)で解放してやります。
ちなみに、CreateCompatibleDCで作成されたデバイスコンテキストはDeleteDC、GetDCで取得したデバイスコンテキストはReleaseDCで解放してやります。
また、ビットマップ、ブラシ、フォントなどのオブジェクトをデバイスコンテキストに適用した場合、先にデバイスコンテキストから解放してやらないと、オブジェクトを解放することが出来ませんので注意。
例:
コード: 全て選択
Sub MainWnd_Paint(hDC As DWord)
Dim hADC As HDC, hWndDC As HDC, hBmp As HBITMAP
hWndDC = GetDC(hMainWnd)
hBmp = CreateCompatibleBitmap(hWndDC, 640, 400)
hADC = CreateCompatibleDC(hWndDC)
SelectObject(hADC, hBmp)
BitBlt(hDC, 0, 0, 640, 400, hADC, 0, 0, SRCCOPY)
'解放
DeleteDC(hADC)
DeleteObject(hBmp)
ReleaseDC(hWndDC)
End Sub
作ったデバイスコンテキスト等は解放してますか?
ローカルで作成されたデバイスコンテキストやビットマップなどは、そのローカル内で解放させなければなりません。
グローバルで作成したデバイスコンテキスト等はプログラム終了時(RADツールで作ったプログラムならMainWnd_Destroy内)で解放してやります。
ちなみに、CreateCompatibleDCで作成されたデバイスコンテキストはDeleteDC、GetDCで取得したデバイスコンテキストはReleaseDCで解放してやります。
また、ビットマップ、ブラシ、フォントなどのオブジェクトをデバイスコンテキストに適用した場合、先にデバイスコンテキストから解放してやらないと、オブジェクトを解放することが出来ませんので注意。
例:
[code]
Sub MainWnd_Paint(hDC As DWord)
Dim hADC As HDC, hWndDC As HDC, hBmp As HBITMAP
hWndDC = GetDC(hMainWnd)
hBmp = CreateCompatibleBitmap(hWndDC, 640, 400)
hADC = CreateCompatibleDC(hWndDC)
SelectObject(hADC, hBmp)
BitBlt(hDC, 0, 0, 640, 400, hADC, 0, 0, SRCCOPY)
'解放
DeleteDC(hADC)
DeleteObject(hBmp)
ReleaseDC(hWndDC)
End Sub
[/code]