| 質問が閉じちゃってる上に、C++ にはぜんぜん明るくない私ですが。
もちろん COM もさっぱりさっぱりです。
■No15730 (熊谷隆史 さん) に返信
> ■No15728 (シャノン さん) に返信
>>DROPEFFECT_LINK は単なる整数値ですから、DWORD * にキャストしちゃダメでしょう。
>>IE はアドレス 0x00000004 に対して書き込もうとしますよ。
>
> コンパイル時に
>
> 'IDropTarget::Drop' :
> 4 番目の引数を 'int' から
> 'DWORD *' に変換できません。
>
> と出るので
>
> pDrop->Drop (pData, MK_LBUTTON, pt, (DWORD *)DROPEFFECT_LINK );
>
> としています。
これは…
ちょっと調べてみたけど、IDropTarget::Drop はドロップされたときに呼ばれる
関数みたいですね。
ってことは、ドロップを擬似的に再現したいってこと?(流れを読むとそんな感じ
みたいなのでてきとーに言ってます)。
これまたちょっと調べたところによれば、Drop はドロップされた側が *pdwEffect
に DROPEFFECT_ほにゃらら を入れるものみたいですね。
じゃあこっちから指定すべきは DROPEFFECT_* じゃなくて、それを入れてもらうための
エリアなのじゃないかしらん?と思ったり。
(この辺明るくないのでてきとーに言ってます。間違ってたらごめんなさい)
> 'IDropTarget::Drop' :
> 4 番目の引数を 'int' から
> 'DWORD *' に変換できません。
と警告されたから
> pDrop->Drop (pData, MK_LBUTTON, pt, (DWORD *)DROPEFFECT_LINK );
と書いちゃう、ってところは僕もちょっと心配というか大丈夫かな?って思います。
ちゃんと理解して書かれているのかな?と。
だからこそシャノンさんがいろいろ警鐘を鳴らしてくれているのじゃないかと
思ったりしています。
COM だから、C++ だから、の前にもうちょっと高めのハードルがありそうですね。
自分が言うのもアレですが、もうちょい知識を深めてみてからチャレンジしてみては
どうでしょうか。 |