CF_TEXTデータのドラッグ&ドロップNo.17755
yamakox さん 04/08/12 00:36
 
こんにちは。秀丸エディタには毎日お世話になっています。

秀丸エディタv4.10でOLEドラッグ&ドロップをサポートしたとのことで、早速
v3.14からアップグレードしました。しかし、秀丸エディタから他のアプリ
ケーションにテキストをドラッグ&ドロップしても、正常にドロップ先にテ
キストが挿入されません。例えば、秀丸エディタ上でテキストを選択し、
Internet Explorer上に表示されているWebフォーム画面のテキスト入力領域
にドロップすることができません。

他のアプリケーションでも同様で、CF_TEXTフォーマットのデータを秀丸エ
ディタからドロップできない模様です。実際、私が作っているソフトをデ
バッグしてみると、秀丸エディタから送られてきたIDataObject*オブジェク
トに対してCF_TEXTフォーマットでGetDataメソッドを呼び出すと、
0x80040064(DV_E_FORMATETC)が返ります。(IEnumFormatETCでサポートして
いるフォーマットを列挙したら、CF_UNICODETEXTはサポートしているようで
したが…)

なお、当現象はWindows2000で確認しています。
会議室の過去ログを検索してみましたが、まだ報告されていないようでした
ので、以上お知らせしておきます。

P.S.
逆に、他アプリから秀丸エディタへのドラッグ&ドロップで、他アプリで実
装しているIDataObject*オブジェクトがCF_TEXTとCF_HDROPの両方をサポー
トしている場合秀丸エディタはCF_HDROPの方を優先してGetDataしている模
様ですが、この順序をIEnumFORMATETC::Nextメソッドの返す順位でGetData
してもらえると嬉しいのですが、いかがでしょうか。(つまり、他アプリ側
で秀丸に送るデータ形式の優先順位を指定できるようになります)

[ ]
RE:17755 CF_TEXTデータのドラッグ&ドロッNo.17767
秀丸担当 さん 04/08/12 17:49
 

>秀丸エディタv4.10でOLEドラッグ&ドロップをサポートしたとのことで、早速
>v3.14からアップグレードしました。しかし、秀丸エディタから他のアプリ
>ケーションにテキストをドラッグ&ドロップしても、正常にドロップ先にテ
>キストが挿入されません。例えば、秀丸エディタ上でテキストを選択し、
>Internet Explorer上に表示されているWebフォーム画面のテキスト入力領域
>にドロップすることができません。

確認することができました。
秀丸ではNT系ではCF_UNICODETEXTのドラッグしかサポートしていません。
次のβ版を出すときに、両方同時のドラッグをサポートするようにします。

>P.S.
>逆に、他アプリから秀丸エディタへのドラッグ&ドロップで、他アプリで実
>装しているIDataObject*オブジェクトがCF_TEXTとCF_HDROPの両方をサポー
>トしている場合秀丸エディタはCF_HDROPの方を優先してGetDataしている模
>様ですが、この順序をIEnumFORMATETC::Nextメソッドの返す順位でGetData
>してもらえると嬉しいのですが、いかがでしょうか。(つまり、他アプリ側
>で秀丸に送るデータ形式の優先順位を指定できるようになります)

IEnumFORMATETC::Nextメソッドの返す順位というのは、果たして優先順位なので
しょうか。
例えばIEをドラッグ元とした場合、CF_TEXTが先で、CF_UNICODETEXTが2番目の
ようです。CF_TEXTを優先してしまうと、Unicode独自の文字がドロップできなく
なってしまいます。

[ ]
RE:17767 Re: CF_TEXTデータのドラッグ&ドNo.17771
yamakox さん 04/08/12 23:49
 
回答ありがとうございます。

>秀丸ではNT系ではCF_UNICODETEXTのドラッグしかサポートしていません。
>次のβ版を出すときに、両方同時のドラッグをサポートするようにします。

よろしくお願いします。

>IEnumFORMATETC::Nextメソッドの返す順位というのは、果たして優先順位なので
>しょうか。
>例えばIEをドラッグ元とした場合、CF_TEXTが先で、CF_UNICODETEXTが2番目の
>ようです。CF_TEXTを優先してしまうと、Unicode独自の文字がドロップできなく
>なってしまいます。

確かに、IE6.01ではCF_TEXT→CF_UNICODETEXT→CF_HTMLの順番で
列挙されてしまいますね。なんだか逆な感じがします。
Platform SDKにもIEnumFORMATETC::Nextの返す順番については明記されて
いないようですし、この件はあくまで私の要望ですので、現状のままで
かまいません。

[ ]