TOP今月刊既刊I/OサポートQ&AWeb I/O通販お問い合わせ
 Q&A > Win32 APIのしくみ 書名検索: 詳細検索...
Q&A一覧
Q

SDKのデータ型の一覧に載ってないデータ型はどういう風にしたらいいのでしょうか?

p.62 データ型の対応のところなのですが、SDKのデータ型の一覧に載ってないデータ型はどういう風にしたらいいのでしょうか?
たとえばHSZとかHDDEDATAです。
このほかにも見慣れないデータ型は数多く存在すると思われますがその場合の対応について教えてください。
2006年10月06日受付
A

不明なデータ型が存在する場合、
一番確実な方法は Platform SDKに含まれている、
ヘッダファイル(拡張子 .hのファイル)から調べる方法です。

現在、Platform SDKは以下の URLからダウンロードできます。
(http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en#filelist)

ヘッダファイルには C/C++からAPIを使うための
関数やデータ型の定義が記述されています。

37ページで書いているとおり、APIの独自のデータ型は、
基本的なデータ型やその配列、構造体を別のデータ型名として
定義しているものがほとんどです。
ですから、ヘッダファイルの定義から元々のデータ型を調べ、
そこから対応するデータ型として扱えばよいことになります。

例えば、ご質問の HDDEDATAは Platform SDKの
ddeml.hというファイルの中で、以下のように定義されています。

DECLARE_HANDLE(HDDEDATA);

DECLARE_HANDLEは、C/C++のマクロという構文を用いて、
HANDLE型として定義するものです。

HANDLE型は 62ページの対応表から、
IntPtrを用いればよいことがわかります。

ちなみに、HANDLE型の実体は、
38ページの一覧表を見ると void *という型無しのポインタになっています。
基本的にViualBasic.NETにはポインタが存在しないため、
Win32APIでポインタとして定義されているものは
IntPtr型を用います。(文字列は例外的にString型が使えます。)

このほかのデータ型についても、
同様の方法で元々のデータ型を調べる事で、
対応するデータ型を見つける事ができます。

ちなみにヘッダファイルの検索は、
エクスプローラでヘッダファイルが存在するフォルダに移動し、
Ctrl+Fで「ファイルとフォルダの検索」を開き、
「含まれる文字列」に探したいデータ型名を入力して実行します。
また、ファイル検索用のソフトを使うとより便利です。

最終更新日:2006年10月06日 20時14分17秒
▲このページの上へ