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