ウザー。
ウザールでござ〜るぅ。byNEC。
さて問題です。
VB6に構造体はありますか?
ユーザ定義型(UDT)が該当するですかね。そんなの使うほどVBに漬かっていないので分かりません。巷で聞く,
VB.NET以降では構造体のアライメントを明示的に指定できるようになった。
ってホントですか?つ〜か,VB6に構造体なんかもともと無いんですよ?これって,独身所帯に電話がかかってきて・・・
アンタんところの息子がさぁ,オレのスケに手ェ出しやがったんだよ。手打ちにしてやるから300万持って・・・
とかいう話題が始まってしまったのと同じニオヒがするのですが。
さらに,構造体を値渡しできないので
How To Pass a Point Structure to the Windows API by Value
[VB] Point 構造体を値渡しで Windows API に渡す方法
こういうかび臭い情報があったりします。構造体の値渡しの代わりに引数に構造体メンバを並べるという苦行です。VBマスターにとっては常識ポイですが。
さて,VB6から外部のDLLを利用したりWin32APIを呼んだりする時に渡す構造体のアライメントについて一体どんな考慮が必要なのでしょうか。それともVC6で自作DLLを作って自作VB6アプリから利用するだけなら考慮なんていらないのでしょうか。つ〜か,VB6のユーザ定義型のアライメントが4バイトで固定であるということが一体どこに明記されているかご存知ですか?
Microsoft Visual Basic Version 5.0 で使用する DLL の開発に関する注意
これなんだそうです。ネタ元は,Visual C フォーラム です。このリンク見つけるまでは注意の断片がMSDNのCDの中からポツポツ顔を出すだけで全体がサッパリ見えてこないので大変困りました。
どうでもいいことですが,VB6/VC6使い続ける難民の方々には,MSDNライブラリ2001年10月リリースのCDをお使いになられることを強く推奨します。byでんこ。
新規開発でVB6使うの,もうやめませんか?ていうかヤメレ。むかつくから半角英字と全角英字まぜて書いたった。