最終更新 2004 02/05
GetWindowLong 関数
対応しているバージョン
95, 98, Me, NT3.1以降, CE1.0以降, 2000, XP
使用するヘッダとライブラリ
winuser.h
user32.lib
|
リソースデータを読み込むときなんかに HINSTANCE の値が必要になります。
そういうときに
「HWND は分かってるんだけど、これから HINSTANCE 取ってこれないかなぁ?」
という状況があったりします。
HINSATANCE は WinMain() の引数に渡って来るので、ここから取得できますが
いちいち
HINSTANCE g_hInstance = NULL;
WINAPI WinMain(
HINSTANCE hInst,
HINSTANCE hPrevInst,
LPCSTR lpCmd,
int nShow
)
{
g_hInstance = hInst;
.
.
.
return 0;
}
|
こんな風にしてグローバル変数を使うのは無駄な気がします。
で、HWND からどうにかして取って来れないだろうかと思うわけですが、結論から
いうと、HINSTANCE は HWND が分かっていれば取って来ることはできます。
HWND( ウィンドウハンドル ) から HINSTANCE( インスタンスハンドル ) を
取得するには、GetWindowLong() 関数を使います。
HINSTANCE hInst = (HINSTANCE)GetWindowLong( hWnd, GWL_HINSTANCE );
|
GetWindowLong() 関数は他にも色々使い道があるので、MSDNライブラリを
一度読んでおくと良いかも知れません。
|