適当に日々あったこととか書いてます。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
HWND GetWindow(
HWND hWnd, // 元ウィンドウのハンドル
UINT uCmd // 関係
);
指定されたウィンドウと指定された関係( またはオーナー)にあるウィンドウのハンドルを返します。
<パラメータ>
・hWnd
ウィンドウのハンドルを指定します。
このウィンドウを元に、uCmd パラメータの値に基づいてウィンドウが検索されます。
・uCmd
指定したウィンドウとハンドルを取得するウィンドウとの関係を指定します。
次の値のいずれかを指定できます。
<戻り値>
関数が成功すると、ウィンドウのハンドルが返ります。
指定した関係を持つウィンドウがない場合は、NULL が返ります。
拡張エラー情報を取得するには、 関数を使います。
<解説>
すべての子ウィンドウを取得する場合、EnumChildWindows 関数を使った方が GetWindow 関数をループ処理で呼び出すよりも信頼性の高い結果が得られます。
GetWindow 関数を呼び出してウィンドウを列挙すると、無限ループに陥ったり、すでに破棄されているウィンドウのハンドルを参照する危険性がでてきます。
<対応情報>
Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダー:Winuser.h で宣言、Windows.h をインクルード
インポートライブラリ:User32.lib を使用
引用:ttp://msdn.microsoft.com/ja-jp/library/cc364757.aspx
<使用メモ>
EnumWindowsのコールバックで取得したハンドルがオーナーウィンドウ無しかどうかの判定に使用。
if(GetWindow(hwnd, GW_OWNER) == NULL){
// オーナーウィンドウ無し
}
って感じ。
オーナーウィンドウ無し=このハンドルはオーナーウィンドウ、ってことかな・・・?
HWND hWnd, // 元ウィンドウのハンドル
UINT uCmd // 関係
);
指定されたウィンドウと指定された関係( またはオーナー)にあるウィンドウのハンドルを返します。
<パラメータ>
・hWnd
ウィンドウのハンドルを指定します。
このウィンドウを元に、uCmd パラメータの値に基づいてウィンドウが検索されます。
・uCmd
指定したウィンドウとハンドルを取得するウィンドウとの関係を指定します。
次の値のいずれかを指定できます。
GW_CHILD | |
指定したウィンドウが親ウィンドウの場合は、Z オーダーが一番上の子ウィンドウのハンドルを取得します。それ以外の場合は、NULL が返ります。 この関数は、指定されたウィンドウの子ウィンドウだけを調べます。それより下位の子孫は調べません。 | |
GW_ENABLEDPOPUP | |
Windows 2000:指定したウィンドウをオーナーとする有効なポップアップウィンドウのハンドルを取得します( この検索では、GW_HWNDNEXT で見つかる最初のウィンドウを使います)。 有効なポップアップウィンドウがない場合は、指定したウィンドウのハンドルが返ります。 | |
GW_HWNDFIRST | |
指定したウィンドウと同じ種類で最も高い Z オーダーを持つウィンドウのハンドルを取得します。 指定したウィンドウが最前面ウィンドウの場合は、最も高い Z オーダーを持つ最前面ウィンドウのハンドルが返ります。 指定したウィンドウがトップレベルウィンドウの場合は、最も高い Z オーダーを持つトップレベルウィンドウのハンドルが返ります。 指定したウィンドウが子ウィンドウの場合は、最も高い Z オーダーを持つ兄弟ウィンドウのハンドルが返ります。 | |
GW_HWNDLAST | |
指定したウィンドウと同じ種類で最も低い Z オーダーを持つウィンドウのハンドルを取得します。 指定したウィンドウが最前面ウィンドウの場合は、最も低い Z オーダーを持つ最前面ウィンドウのハンドルが返ります。 指定したウィンドウがトップレベルウィンドウの場合は、最も低い Z オーダーを持つトップレベルウィンドウのハンドルが返ります。 指定したウィンドウが子ウィンドウの場合は、最も低い Z オーダーを持つ兄弟ウィンドウのハンドルが返ります。 | |
GW_HWNDNEXT | |
指定したウィンドウより Z オーダーが 1 つ下のウィンドウのハンドルを取得します。指定したウィンドウが最前面ウィンドウの場合は、1 つ下の最前面ウィンドウのハンドルが返ります。 指定したウィンドウがトップレベルウィンドウの場合は、1 つ下のトップレベルウィンドウのハンドルが返ります。 指定したウィンドウが子ウィンドウの場合は、1 つ下の兄弟ウィンドウのハンドルが返ります。 | |
GW_HWNDPREV | |
指定したウィンドウより Z オーダーが 1 つ上のウィンドウのハンドルを取得します。 指定したウィンドウが最前面ウィンドウの場合は、1 つ上の最前面ウィンドウのハンドルが返ります。 指定したウィンドウがトップレベルウィンドウの場合は、1 つ上のトップレベルウィンドウのハンドルが返ります。 指定したウィンドウが子ウィンドウの場合は、1 つ上の兄弟ウィンドウのハンドルが返ります。 | |
GW_OWNER | |
指定したウィンドウのオーナーウィンドウのハンドルを取得します。 |
<戻り値>
関数が成功すると、ウィンドウのハンドルが返ります。
指定した関係を持つウィンドウがない場合は、NULL が返ります。
拡張エラー情報を取得するには、 関数を使います。
<解説>
すべての子ウィンドウを取得する場合、EnumChildWindows 関数を使った方が GetWindow 関数をループ処理で呼び出すよりも信頼性の高い結果が得られます。
GetWindow 関数を呼び出してウィンドウを列挙すると、無限ループに陥ったり、すでに破棄されているウィンドウのハンドルを参照する危険性がでてきます。
<対応情報>
Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダー:Winuser.h で宣言、Windows.h をインクルード
インポートライブラリ:User32.lib を使用
引用:ttp://msdn.microsoft.com/ja-jp/library/cc364757.aspx
<使用メモ>
EnumWindowsのコールバックで取得したハンドルがオーナーウィンドウ無しかどうかの判定に使用。
if(GetWindow(hwnd, GW_OWNER) == NULL){
// オーナーウィンドウ無し
}
って感じ。
オーナーウィンドウ無し=このハンドルはオーナーウィンドウ、ってことかな・・・?
PR
この記事にコメントする