DLGTEMPLATEEX と sz_Or_Ord

Windows の user32.dll の中の ダイアログ関連の関数で DLGTEMPLATEDLGTEMPLATEEX が混在して用いられています。

typedef struct {
DWORD style;
DWORD dwExtendedStyle;
WORD  cdit;
short x;
short y;
short cx;
short cy;
} DLGTEMPLATE, *LPDLGTEMPLATE;

typedef struct {
WORD      dlgVer;
WORD      signature;
DWORD     helpID;
DWORD     exStyle;
DWORD     style;
WORD      cDlgItems;
short     x;
short     y;
short     cx;
short     cy;
sz_Or_Ord menu;
sz_Or_Ord windowClass;
WCHAR     title[titleLen];
WORD      pointsize;
WORD      weight;
BYTE      italic;
BYTE      charset;
WCHAR     typeface[stringLen];
} DLGTEMPLATEEX;

構造体の位置情報のオフセットもなんか違うしどうやって判定してるのかと思ったら、オフセット 2の signature を参照して 0xffff だったら DLGTEMPLATEEX で処理するみたいです。

気になるのは sz_Or_Ord ですが、 SZ or Ordinal value の略です。

SZ って何かっていうと String + Zero  つまり、ヌルを終端に持つ文字列のことです。

Ordinal value の場合は、 最初のWord が Zero または 0xffff + Windows で定義されたリソースの番号なんて解説がありますね。

日本語の解説がないと結構大変ですね|。・ω・)

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です