「Win32/64技術 002 WinUser.hファイルを読み込んでもGWL HINSTANCEが使えない」の版間の差分
(ページの作成:「== '''概要''' == Windowプロシージャ関数のHWND型のウィンドウハンドルがわかっている部分からアプリケーション起動時に引数として受け取ったようなインスタンスハンドルを取得するために、GetWindowLong関数を使います。便利な関数ですが、Win32とWin64で引数に使うキーワードが変わります。WinUser.hファイルをインクルードしていれば、Win32ではGWL_HINSTAN…」) |
編集の要約なし |
||
1行目: | 1行目: | ||
[[Win32/64_アプリケーション開発#処理技術|Win32/64_アプリケーション開発]]に戻る。 | |||
== '''概要''' == | == '''概要''' == | ||
Windowプロシージャ関数のHWND型のウィンドウハンドルがわかっている部分からアプリケーション起動時に引数として受け取ったようなインスタンスハンドルを取得するために、GetWindowLong関数を使います。便利な関数ですが、Win32とWin64で引数に使うキーワードが変わります。WinUser.hファイルをインクルードしていれば、Win32ではGWL_HINSTANCEというキーワードをよく使っていました。これがWin64アプリの設定では、GWLP_HINSTANCEというキーワードを使うことになっています。どちらも、整数値で表現すれば、-6という値ですが、作法が違うだけです。 | Windowプロシージャ関数のHWND型のウィンドウハンドルがわかっている部分からアプリケーション起動時に引数として受け取ったようなインスタンスハンドルを取得するために、GetWindowLong関数を使います。便利な関数ですが、Win32とWin64で引数に使うキーワードが変わります。WinUser.hファイルをインクルードしていれば、Win32ではGWL_HINSTANCEというキーワードをよく使っていました。これがWin64アプリの設定では、GWLP_HINSTANCEというキーワードを使うことになっています。どちらも、整数値で表現すれば、-6という値ですが、作法が違うだけです。 | ||
9行目: | 11行目: | ||
HINSTANCE HINSTANCEinst = (HINSTANCE)GetWindowLong(HWNDwnd, GWLP_HINSTANCE); | HINSTANCE HINSTANCEinst = (HINSTANCE)GetWindowLong(HWNDwnd, GWLP_HINSTANCE); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Win32/64_アプリケーション開発#処理技術|Win32/64_アプリケーション開発]]に戻る。 |
2023年10月21日 (土) 22:05時点における版
概要
Windowプロシージャ関数のHWND型のウィンドウハンドルがわかっている部分からアプリケーション起動時に引数として受け取ったようなインスタンスハンドルを取得するために、GetWindowLong関数を使います。便利な関数ですが、Win32とWin64で引数に使うキーワードが変わります。WinUser.hファイルをインクルードしていれば、Win32ではGWL_HINSTANCEというキーワードをよく使っていました。これがWin64アプリの設定では、GWLP_HINSTANCEというキーワードを使うことになっています。どちらも、整数値で表現すれば、-6という値ですが、作法が違うだけです。
ちょっと古い参考書とかでWindowsアプリを学んでいる場合は、参考書はWin32で、読者がWin64での開発になっていることがありますので、同じような関数が、同じようなキーワードで使えないのは、大きなブレーキの原因になりそうですが、仕方のないことなのかもしれません。この記事に出会えた人は未然に防ぐことができてよかったね。
HINSTANCE HINSTANCEinst = (HINSTANCE)GetWindowLong(HWNDwnd, GWLP_HINSTANCE);