Microsoft DirectX 8.0

CBaseWindow クラス

CBaseWindow クラスの階層

ウィンドウを管理する基底クラス。ビデオ レンダラはこのクラスを使ってビデオ ウィンドウを作成する。

宣言 : Winutil.h

このクラスを使うには、CBaseWindow から継承した派生クラスを作成すること。派生クラスでは :

派生クラスのインスタンスを使う前に、PrepareWindow メソッドを呼び出すこと。

Protected メンバ変数
m_hInstanceモジュール インスタンスのハンドル。
m_hwndオブジェクトのウィンドウのハンドル。
m_hdcウィンドウのデバイス コンテキストのハンドル。
m_Widthクライアント エリアの幅、ピクセル。
m_Heightクライアント エリアの高さ、ピクセル。
m_bActivatedウィンドウがアクティブになっているかどうかを示すフラグ。
m_pClassNameウィンドウ クラスの名前を含む静的文字列。
m_ClassStylesウィンドウのクラス スタイル。
m_WindowStylesウィンドウのウィンドウ スタイル。
m_WindowStylesExウィンドウの拡張ウィンドウ スタイル。
m_ShowStageMessageウィンドウをフォアグラウンドにするプライベート メッセージ。
m_ShowStageTopウィンドウ スタイルを WS_EX_TOPMOST に設定するプライベート メッセージ。
m_RealizePaletteパレットを適用させるプライベート メッセージ。
m_MemoryDCメモリ デバイス コンテキストのハンドル。
m_hPaletteウィンドウのパレットのハンドル。
m_bNoRealizeウィンドウがそのパレットを適用したかどうかを示すフラグ。
m_bBackgroundパレットがバックグラウンド パレットであるべきかどうかを示すフラグ。
m_bRealizing新しいパレットが適用されたかどうかを示すフラグ。
m_WindowLockクリティカル セクション、オブジェクトのアクセスを継続させる。
m_bDoGetDCデバイス コンテキストを取得したかどうかを示すフラグ。
m_bDoPostToDestroyウィンドウがそのデストラクション メッセージに PostMessage を使うか SendMessage を使うかを指定するフラグ。
Protected メソッド
OnPaletteChangeパレット変更メッセージを扱う。仮想。
Public メソッド
CBaseWindowコンストラクタ メソッド。
DoneWithWindowウィンドウを削除する。 仮想。
PrepareWindowウィンドウを作成する。 仮想。
InactivateWindowウィンドウを非アクティブにする。仮想。
ActivateWindow派生クラスの要求にしたがってウィンドウをアクティブにする。仮想。
OnSizeWM_SIZE メッセージを扱う。 仮想。
OnCloseWM_CLOSE メッセージを扱う。 仮想。
GetDefaultRectクライアント エリアのデフォルト サイズを取得する。仮想。
UninitialiseWindowウィンドウのリソースを解放する。仮想。
InitialiseWindowウィンドウを初期化する。仮想。
CompleteConnectウィンドウにレンダラの入力ピンが接続されたことを通知する。
DoCreateWindowウィンドウを作成する。
PerformanceAlignWindowパフォーマンスを最高にするためにウィンドウを DWORD 境界にそろえる。
DoShowWindowウィンドウの表示状態を設定する。
PaintWindowウィンドウを再描画させる。
DoSetWindowForegroundウィンドウをフォアグランドに持ってくる。
SetPaletteウィンドウにパレットをインストールする。仮想。
SetRealizeウィンドウがパレットを適用するかどうかを指定する。
DoRealisePaletteウィンドウの現在のパレットを適用する。仮想。
PossiblyEatMessage派生クラスに他のウィンドウへのメッセージの転送を許可する。 仮想。
GetWindowWidthウィンドウの現在の幅を取得する。
GetWindowHeightウィンドウの現在の高さを取得する。
GetWindowHWNDウィンドウのハンドルを取得する。
GetMemoryHDCメモリ デバイス コンテキストのハンドルを取得する。
GetWindowHDCウィンドウのデバイス コンテキストのハンドルを取得する。
OnReceiveMessageウィンドウ メッセージを扱う。仮想。
Pure Virtual メソッド
GetClassWindowStylesウィンドウのクラス スタイルを取得する。

CBaseWindow.m_hInstance

CBaseWindow クラス

モジュール インスタンスのハンドル。

構文

HINSTANCE m_hInstance;

注意

DLL エントリ ポイント関数はグローバル変数をモジュール インスタンスのハンドルで設定する。CBaseWindow クラスはこのハンドルをそのコンストラクタ メソッドにストアする。

CBaseWindow.m_hwnd

CBaseWindow クラス

オブジェクトのウィンドウのハンドル。

構文

HWND m_hwnd;

CBaseWindow.m_hdc

CBaseWindow クラス

ウィンドウのデバイス コンテキストのハンドル。

構文

HDC m_hdc;

CBaseWindow.m_Width

CBaseWindow クラス

クライアント エリアの幅、ピクセル。

構文

LONG m_Width;

CBaseWindow.m_Height

CBaseWindow クラス

クライアント エリアの高さ、ピクセル。

構文

LONG m_Height;

CBaseWindow.m_bActivated

CBaseWindow クラス

ウィンドウがアクティブになってどうかを示すフラグ。TRUE なら、ウィンドウはアクティブになっている。

構文

BOOL m_bActivated;

CBaseWindow.m_pClassName

CBaseWindow クラス

ウィンドウ クラスの名前を含む静的 (static) 文字列。

構文

LPTSTR m_pClassName;

CBaseWindow.m_ClassStyles

CBaseWindow クラス

ウィンドウのクラス スタイル。

構文

DWORD m_ClassStyles;

CBaseWindow.m_WindowStyles

CBaseWindow クラス

ウィンドウのウィンドウ スタイル。

構文

DWORD m_WindowStyles;

CBaseWindow.m_WindowStylesEx

CBaseWindow クラス

ウィンドウの拡張ウィンドウ スタイル。

構文

DWORD m_WindowStylesEx;

CBaseWindow.m_ShowStageMessage

CBaseWindow クラス

ウィンドウをフォアグラウンドにするプライベート メッセージ。

構文

UINT m_ShowStageMessage;

注意

DoSetWindowForeground メソッドはこのメッセージを送信する。

CBaseWindow.m_ShowStageTop

CBaseWindow クラス

ウィンドウ スタイルを WS_EX_TOPMOST に設定するプライベート メッセージ。

構文

UINT m_ShowStageTop;

注意

ビデオ レンダラがフルスクリーン モードに変更したなら、ビデオ レンダラはこのメッセージをウィンドウに送るべきである。

CBaseWindow.m_RealizePalette

CBaseWindow クラス

パレットを適用させるプライベート メッセージ。

構文

UINT m_RealizePalette;

注意

SetPalette メソッドはこのメッセージを送る。

CBaseWindow.m_MemoryDC

CBaseWindow クラス

メモリ デバイス コンテキストのハンドル。

構文

HDC m_MemoryDC;

CBaseWindow.m_hPalette

CBaseWindow クラス

ウィンドウのパレットのハンドル。

構文

HPALETTE m_hPalette;

CBaseWindow.m_bNoRealize

CBaseWindow クラス

ウィンドウがそのパレットを適用したかどうかを示すフラグ。 TRUE なら、ウィンドウはそのパレットを適用していない。デフォルト値は FALSE 。

構文

BYTE m_bNoRealize;

CBaseWindow.m_bBackground

CBaseWindow クラス

パレットがバックグラウンド パレットであるべきかどうかを示すフラグ。TRUE なら、そのパレットはバックグラウンド パレットとして選択される。

構文

m_bBackground;

CBaseWindow.m_bRealizing

CBaseWindow クラス

新しいパレットが適用されたかどうかを示すフラグ。 デバッグ ビルドでは、パレットが変わっている間この値は TRUE、それ以外なら FALSE。この変数はリテール ビルドでは使用されない。

構文

BYTE m_bRealizing;

CBaseWindow.m_WindowLock

CBaseWindow クラス

クリティカル セクション、オブジェクトのアクセスを継続させる。

構文

CCritSec m_WindowLock;

CBaseWindow.m_bDoGetDC

CBaseWindow クラス

デバイス コンテキスト (DC) を取得したかどうかを示すフラグ。TRUE なら、オブジェクトはウィンドウの DC を取得しメモリ DC を作成する。

構文

BOOL m_bDoGetDC;

CBaseWindow.m_bDoPostToDestroy

CBaseWindow Class

ウィンドウがそのデストラクション メッセージに PostMessage を使うか SendMessage を使うかを指定するフラグ。TRUE なら、DoneWithWindow メソッドは PostMessage 関数を使って自身にプライベート デストラクション メッセージを送る。FALSE なら、DoneWithWindowSendMessage を使ってメッセージを送る。デフォルトではこの値は FALSE である。

構文

BOOL m_bDoPostToDestroy;

CBaseWindow::ActivateWindow

CBaseWindow クラス

派生クラスの要求にしたがってウィンドウをアクティブにする。

構文

virtual HRESULT ActivateWindow(void);

戻り値

以下の表に示される HRESULT 値の 1 つを返す。

S_FALSEウィンドウは既にアクティブになっている。
S_OK成功。

注意

このメソッドは CBaseWindow::GetDefaultRect を呼び出してウィンドウ サイズを決める。派生クラスは GetDefaultRect をオーバーライドして表示イメージのサイズを返すべきだ。

ウィンドウが既にアクティブなら、ActivateWindow の呼び出しはウィンドウを Z 順の一番上に動かす、しかしウィンドウのリサイズはしない。ウィンドウがペアレントを持っていても同様である。

CBaseWindow::CBaseWindow

CBaseWindow クラス

コンストラクタ メソッド。

構文

CBaseWindow(
    BOOL bDoGetDC = TRUE
    BOOL bPostToDestroy = FALSE
);

パラメータ

bDoGetDC
デバイス コンテキストを取得したかどうかを示すブール値。
bPostToDestroy
m_bDoPostToDestroy メンバ変数を指定するブール値。

注意

オブジェクトを作成した後で、PrepareWindow メソッドを呼び出しウィンドウを作成する。それはこれもまた仮想メソッドである InitialiseWindow を呼び出す。これらのメソッドはコンストラクタから分離されているので、必要なら派生クラスはそれらをオーバーライドすることができる。

bDoGetDC の値が TRUE なら、CBaseWindow オブジェクトはウィンドウのデバイス コンテキスト (DC) のハンドルを取得し、それを m_hdc メンバ変数にストアする。そのオブジェクトはまたm_MemoryDC メンバ変数にストアされている互換メモリ DC をも作成する。これらの処理は InitialiseWindow 内で行われる。

CBaseWindow::CompleteConnect

CBaseWindow クラス

ウィンドウにレンダラの入力ピンが接続されたことを通知する。

構文

HRESULT CompleteConnect(void);

戻り値

S_OK を返す。

注意

このメソッドはウィンドウのアクティブ フラグ (m_bActivated) を FALSE にリセットする。ビデオ レンダラがピン接続を完了したとき、ActivateWindow を呼び出してウィンドウのサイズと位置を設定する可能性がある。ActivateWindow にこれらの属性を再計算させるには、最初に CompleteConnect メソッドを呼び出すこと。

CBaseWindow::DoCreateWindow

CBaseWindow クラス

ウィンドウを作成する。

構文

HRESULT DoCreateWindow(void);

戻り値

成功なら S_OK を返す、失敗ならその原因を示す HRESULT 値を返す。

注意

PrepareWindow メソッドはこのメソッドを呼び出す。

CBaseWindow::DoneWithWindow

CBaseWindow クラス

ウィンドウを削除する。

構文

virtual HRESULT DoneWithWindow(void);

戻り値

S_OK を返す。

注意

このメソッドを派生オブジェクトのデストラクタ メソッドから呼び出すこと。

今メソッドがウィンドウを作成した同じスレッドから呼び出されるなら、メソッドは次の処理を行う :

DoneWithWindow を呼び出すスレッドがそのウィンドウを作成したスレッドではないなら、メソッドはプライベート「destroy」メッセージをそのウィンドウに送る。そのウィンドウはこのメッセージを受け取ると、自分自身に DoneWithWindow を呼び出す。(もし m_bDoPostToDestroy が TRUE なら、そのウィンドウは PostMessage を使う。)

CBaseWindow::DoRealisePalette

CBaseWindow クラス

ウィンドウの現在のパレットを適用する。

構文

virtual HRESULT DoRealisePalette(
    BOOL bForceBackground
);

パラメータ

bForceBackground
パレットをバックグラウンド パレットにするかどうかを指定するブール値。詳細については、Platform SDK の「SelectPalette」を参照すること。

戻り値

以下の表に示される HRESULT 値の 1 つを返す。

S_FALSEGdiFlush への内部呼び出しがエラーを返した。
S_OK成功。

注意

CBaseWindow::OnPaletteChange メソッドはこのメソッドを呼び出す。新しいパレットを設定するには、CBaseWindow::SetPalette メソッドを呼び出すこと。

CBaseWindow::DoSetWindowForeground

CBaseWindow クラス

ウィンドウをフォアグランドに持ってくる。

構文

void DoSetWindowForeground(
    BOOL bFocus
);

パラメータ

bFocus
ウィンドウにフォーカスを与えるかどうかを示すブール値。この値が TRUE なら、ウィンドウはフォーカスを得る。

CBaseWindow::DoShowWindow

CBaseWindow クラス

ウィンドウの表示状態を設定する。

構文

HRESULT DoShowWindow(
    LONG ShowCmd
);

パラメータ

ShowCmd
どのようにウィンドウを表示状態にするかを指定するフラグ。この値は Microsoft® Windows® ShowWindow 関数の nCmdShow パラメータで定義される定数を取り得る。詳細については、Platform SDK を参照すること。

戻り値

S_OK を返す。

CBaseWindow::GetClassWindowStyles

CBaseWindow クラス

ウィンドウのクラス スタイルを取得する。

構文

virtual LPTSTR GetClassWindowStyles(
    DWORD *pClassStyles,
    DWORD *pWindowStyles,
    DWORD *pWindowStylesEx
) PURE;

パラメータ

pClassStyles
クラス スタイルを受け取る変数へのポインタ。
pWindowStyles
ウィンドウ スタイルを受け取る変数へのポインタ。
pWindowStylesEx
拡張ウィンドウ スタイルを受け取る変数へのポインタ。

戻り値

クラス名を含む静的テキスト文字列を返す。

注意

CBaseWindow::PrepareWindow メソッドはこのメソッドを呼び出し、ウィンドウのクラス スタイルとウィンドウ スタイルを取得する。

このメソッドは純粋仮想、派生クラスはそれを実装しなければならない。次のサンプルはその実装例を示す。

LPTSTR CMyWindowClass::GetClassWindowStyles(DWORD *pClassStyles,
                                            DWORD *pWindowStyles,
                                            DWORD *pWindowStylesEx)
{
    *pClassStyles = CS_HREDRAW | CS_VREDRAW;
    *pWindowStyles = WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN;
    *pWindowStylesEx = WS_EX_WINDOWEDGE;
    return TEXT("MyWindowClass");
}

このオブジェクトは RegisterClass 関数に送られる WNDCLASS 構造体の lpszClassName メンバのクラス スタイルを使用する。このオブジェクトは CreateWindowEx 関数の dwExStyledwStyle パラメータのウィンドウ スタイルを使用する。詳細については、Platform SDK を参照すること。

CBaseWindow::GetDefaultRect

CBaseWindow クラス

クライアント エリアのデフォルト サイズを取得する。

構文

virtual RECT GetDefaultRect(void);

戻り値

デフォルト矩形を返す。

注意

ウィンドウがアクティブになるとき、オブジェクトはこのメソッドを呼び出し、ウィンドウのクライアントエリアをどの大きさにするかを確認する。基底クラスでは、このメソッドは定数 DEFHEIGHT と DEFWIDTH で定義される高さと幅の矩形を返す。ビデオ レンダラーでは、通常派生クラスはネイティブなビデオ イメージのサイズを返す。

CBaseWindow::GetMemoryHDC

CBaseWindow クラス

メモリ デバイス コンテキスト (DC) のハンドルを取得する。

構文

virtual HDC GetMemoryHDC(void);

戻り値

メモリ DC のハンドルを返す。

CBaseWindow::GetWindowHDC

CBaseWindow クラス

ウィンドウのデバイス コンテキスト (DC) のハンドルを取得する。

構文

HDC GetWindowHDC(void);

戻り値

DC のハンドルを返す。

CBaseWindow::GetWindowHeight

CBaseWindow クラス

ウィンドウの現在の高さを取得する。

構文

LONG GetWindowHeight(void);

戻り値

ウィンドウの高さを返す、ピクセル値。

CBaseWindow::GetWindowHWND

CBaseWindow クラス

ウィンドウのハンドルを取得する。

構文

HWND GetWindowHWND(void);

戻り値

ウィンドウのハンドルを返す。

CBaseWindow::GetWindowWidth

CBaseWindow クラス

ウィンドウの現在の幅を取得する。

構文

LONG GetWindowWidth(void);

戻り値

ウィンドウの幅を返す、ピクセル値。

CBaseWindow::InactivateWindow

CBaseWindow クラス

ウィンドウを非アクティブにする。 基底クラスでは、このメソッドはウィンドウを隠す。

構文

virtual HRESULT InactivateWindow(void);

戻り値

次の表に示される HRESULT 値の 1 つを返す。

S_OK成功。
S_FALSEウィンドウは既に非アクティブ。

CBaseWindow::InitialiseWindow

CBaseWindow クラス

ウィンドウを初期化する。

構文

virtual InitialiseWindow(
    HWND hwnd
);

パラメータ

hwnd
ウィンドウのハンドル。

戻り値

S_OK を返す。

注意

デフォルトでは、このメソッドはウィンドウのデバイス コンテキスト (DC) を取得し、互換のメモリ DC を作成する。しかし m_bDoGetDC フラグの値が FALSE なら、このメソッドはデバイス コンテキストを取得しない。メモリ DC はウィンドウにビットマップをブリットする前にビットマップを選択する際に有用である。

DoCreateWindow メソッドはこのメソッドを呼び出す。

CBaseWindow::OnClose

CBaseWindow クラス

WM_CLOSE メッセージを扱う。

構文

virtual BOOL OnClose(void);

戻り値

TRUE を返す。

注意

基底クラスでは、このメソッドは単にウィンドウを隠すだけである。通常、派生クラスはこのメソッドをオーバーライドし、EC_USERABORT イベントを同時に送る。このメソッドをオーバーライドしてウィンドウを削除してはならない。その代わり、自身のフィルタが削除されるとき、CBaseWindow::DoneWithWindow メソッドを呼び出すこと。

CBaseWindow::OnPaletteChange

CBaseWindow クラス

パレット変更メッセージを扱う。

構文

virtual LRESULT OnPaletteChange(
    HWND hwnd,
    UINT Message
);

パラメータ

hwnd
ウィンドウのハンドル。
Message
メッセージ ID。

戻り値

メッセージが処理されたら 0 を返し、メッセージが処理されなかったら 1 を返す。

注意

このメソッドは WM_PALETTECHANGED と WM_QUERYNEWPALETTE メッセージを扱う。DoRealisePalette メソッドを呼び出して新しいパレットを適用する。

CBaseWindow::OnReceiveMessage

CBaseWindow クラス

ウィンドウ メッセージを扱う。

構文

virtual LRESULT OnReceiveMessage(
    HWND hwnd,
    INT uMsg,
    WPARAM wParam,
    LPARAM lParam
);

パラメータ

hwnd
ウィンドウのハンドル。
uMsg
メッセージ ID。
wParam
第 1 メッセージ パラメータ。
lParam
第 2 メッセージ パラメータ。

戻り値

メッセージが処理されたら 0 を返し、メッセージが処理されなかったら 1 を返す。

注意

基底クラスは次のメッセージを扱う。

派生クラスはこのメソッドをオーバーライドし、他のメッセージを扱うことができる。派生クラスは基底クラス メソッドを呼び出して、その派生クラスでは無視されるメッセージを扱うべきだ。

CBaseWindow::OnSize

CBaseWindow クラス

WM_SIZE メッセージを扱う。

構文

virtual BOOL OnSize(
    LONG Width,
    LONG Height
);

パラメータ

Width
クライアント エリアの幅、ピクセル値。
Height
クライアント エリアの高さ、ピクセル値。

戻り値

TRUE を返す。

注意

このメソッドは新しい幅と高さをストアする。受け取った値に対して、CBaseWindow::GetWindowHeightCBaseWindow::GetWindowWidth メソッドを呼び出すこと。

CBaseWindow::PaintWindow

CBaseWindow クラス

ウィンドウを再描画させる。

構文

void PaintWindow(
    BOOL bErase
);

パラメータ

bErase
バックグラウンドが消去するかどうかを指定する値。この値が TRUE なら、バックグラウンドは消去される。

注意

このメソッドはウィンドウの全クライアントエリアを無効にすることによって WM_PAINT メッセージを生成する。

CBaseWindow::PerformanceAlignWindow

CBaseWindow クラス

パフォーマンスを最高にするためにウィンドウを DWORD 境界にそろえる。

構文

HRESULT PerformanceAlignWindow(void);

戻り値

S_OK を返す。

注意

このメソッドは左と上の端を DWORD 境界にそろえ、パフォーマンスを改善する。ウィンドウがペアレントを持っていても、このメソッドは S_OK を返すが境界へのそろえを実行する。

CBaseWindow::PossiblyEatMessage

CBaseWindow クラス

派生クラスに他のウィンドウへのメッセージの転送を許可する。

構文

virtual BOOL PossiblyEatMessage(
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
);

パラメータ

uMsg
メッセージ ID。
wParam
第 1 メッセージ パラメータ。
lParam
第 2 メッセージ パラメータ。

戻り値

メッセージが転送されたら TRUE を返す、失敗したら FALSE を返す。基底クラスは FALSE を返す。

注意

CBaseWindow::OnReceiveMessage メソッドはメッセージを扱う前に PossiblyEatMessage を呼び出す。PossiblyEatMessage が TRUE を返したら、PossiblyEatMessage はそのメッセージを無視する。派生クラスは PossiblyEatMessage をオーバーライドして、所有者ウィンドウへメッセージを転送することができる。たとえば、CBaseWindow から派生した CBaseControlWindow クラスはキーボードとマウスのメッセージを転送する。

CBaseWindow::PrepareWindow

CBaseWindow クラス

ウィンドウを作成する。

構文

virtual HRESULT PrepareWindow(void);

戻り値

HRESULT 値を返す。以下の表に示されるいずれかの値。

S_OK成功。
E_FAIL失敗。

注意

このメソッドはオブジェクトを作成した後で呼び出すこと。このメソッドはいくつかの初期登録を行ってから DoCreateWindow メソッドを呼び出してウィンドウを作成する。

CBaseWindow::SetPalette

CBaseWindow クラス

ウィンドウにパレットをインストールする。

構文

virtual HRESULT SetPalette(
    HPALETTE hPalette
);

HRESULT SetPalette(void);

パラメータ

hPalette
新しいパレットのハンドル。NULL は不可。

戻り値

以下の表に示される HRESULT 値の 1 つを返す。

S_FALSEGdiFlush への内部呼び出しがエラーを返した。
S_OK成功。

注意

hPalette パラメータは新しいパレットを指定する。メソッドがパラメータなしで呼び出されると、m_hPalette メンバ変数によって与えられるパレットが選択される。呼び出し元は m_hPalette の有効性を確認しなければならない。

m_bNoRealize メンバ変数の値が FALSE (デフォルト)なら、このメソッドはそのパレットを選択しそれを適用する。そうでなければ、パレットを選択するが、それを適用しない。オブジェクトは使用されていた以前のパレットを削除しない。呼び出し元はパレット削除の責任を持つ。

そのウィンドウを所有者とするスレッドでなくても、スレッドはこのメソッドを安全に呼び出すことができる。ウィンドウはそれ自身に OnPaletteChange メソッドへの呼び出しをキックするプライベート メッセージを送る。

CBaseWindow::SetRealize

CBaseWindow クラス

ウィンドウがパレットを適用するかどうかを指定する。

構文

void SetRealize(
    BOOL bRealize
);

パラメータ

bRealize
パレットをリアライズするかどうかを指定するブール値。もし TRUE なら、SetPalette メソッドがパレットをリアライズする。

注意

デフォルトでは、SetPalette メソッドは指定したパレットを適用する。このメソッドを呼び出してデフォルトを変更すること、そうすると複数のパレットが選択されるが適用されない。このメソッドは m_bNoRealize メンバ変数を設定する。

CBaseWindow::UninitialiseWindow

CBaseWindow クラス

ウィンドウのリソースを解放する。

構文

virtual UninitialiseWindow(void);

戻り値

S_OK を返す。

注意

このメソッドは InitialiseWindow メソッドによって取得されたリソースをフリーにする。DoneWithWindow メソッドはこのメソッドを呼び出す。