「Win32/64技術 002 WinUser.hファイルを読み込んでもGWL HINSTANCEが使えない」の版間の差分

提供:yonewiki
編集の要約なし
1行目: 1行目:
[[Win32/64_アプリケーション開発#処理技術|Win32/64_アプリケーション開発]]に戻る。
[[Win32/64_アプリケーション開発#処理技術|Win32/64_アプリケーション開発]]に戻る。


前の記事:[[Win32/64技術 001 マルチバイト文字列→ワイド文字列変換]]
次の記事:[[Win32/64技術 003 ワイド文字列→マルチバイト文字列変換]]
== '''概要''' ==
== '''概要''' ==
 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という値ですが、作法が違うだけです。
22行目: 25行目:


 
 
前の記事:[[Win32/64技術 001 マルチバイト文字列→ワイド文字列変換]]
次の記事:[[Win32/64技術 003 ワイド文字列→マルチバイト文字列変換]]


[[Win32/64_アプリケーション開発#処理技術|Win32/64_アプリケーション開発]]に戻る。
[[Win32/64_アプリケーション開発#処理技術|Win32/64_アプリケーション開発]]に戻る。
 

2023年11月8日 (水) 18:16時点における版

Win32/64_アプリケーション開発に戻る。

前の記事:Win32/64技術 001 マルチバイト文字列→ワイド文字列変換

次の記事:Win32/64技術 003 ワイド文字列→マルチバイト文字列変換

概要

 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);

 

前の記事:Win32/64技術 001 マルチバイト文字列→ワイド文字列変換

次の記事:Win32/64技術 003 ワイド文字列→マルチバイト文字列変換

Win32/64_アプリケーション開発に戻る。