指定されたレコードをマップできません
「記録」という言葉の奇妙さに注意してください。「構造体」を表す COM 中心の言葉です。あなたがやろうとしていることはほとんどうまくいきますが、完全ではありません。DoDragDrop() メソッドは、Point 構造体を COM オブジェクトに適切にマーシャリングします。これは、Point が [ComVisible(true)] 属性を持っているため可能です。欠落している要素は、構造のレイアウトを記述する COM インターフェイスである IRecordInfo に必要な情報です。構造体のレイアウトはコンパイラに大きく依存するため、必須です。
このインターフェイスは、通常、タイプ ライブラリから構造定義を読み取ることによって実装されます。Point 構造体は c:\windows\microsoft.net\framework\v2.0.50727\system.drawing.tlb に記述されています。OleView.exe ツールの File + View Typelib で確認できます。
COMオブジェクトの受信者がそれを管理対象オブジェクトであるPointに変換しなければならない部分を除いて、すべてが良い. そのためには、IRecordInfo がその役割を果たせるように、どのタイプ ライブラリにオブジェクト定義が含まれているかを調べる必要があります。これは、レジストリ HKCR\Record キーに記録されます。ポイントのエントリが含まれていません。カブーム。
データを格納する独自のクラス (構造体ではない) を作成し、[Serializable] 属性を指定して、簡単にマーシャリングできるようにします。