掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
デスクトップ上にドロップ (VB6) (ID:102139)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ドロップ処理の前に、まずはクリップボード操作を思い浮かべてみてください。 たとえば、ブラウザに表示された文字列をコピーした場合、それを メモ帳に貼り付ける事はできますが、ペイントに貼る事はできませんよね。 一方、画像をコピーした場合には、メモ帳には貼れず、ペイントには貼れます。 これは、メモ帳がテキストデータのみを受け取り、ペイントは画像データのみを 受け取るからです。Word や Excel などは、どちらのデータに対応していますね。 つまり、送信側と受信側の両方が対応する形式のデータを用意しないと いけないということです。 もうひとつ重要なのは、この時、貼り付け処理を実際に担当するのは、 コピー先のアプリケーションであるという事です。コピー元のアプリが、 コピー先を制御するわけではありません。コピー元はデータを渡すだけです。 OLEドラッグ & ドロップの場合も同様です。 送信側(今回はVB)は、ドラッグ用のデータを提供はしますが、 そのデータを実際に取り扱うのは、通常、ドロップ先のアプリです。 詳細については、下記を参照してみてください。 http://msdn.microsoft.com/ja-jp/library/cc482733.aspx > (1)Label1に表示されている(絶対パスの)文字列をデスクトップ上にドラッグ&ドロップして、 まず、デスクトップは「文字列」を受け取れません。 しかし「ファイル」を受け取る事ならばできます。 そのデータを用意することから始めましょう。 Private Sub Label1_OLEStartDrag(Data As DataObject, AllowedEffects As Long) 'DataObjectに、ファイル形式のデータを登録する Data.Files.Add Label1.Caption Data.SetData , vbCFFiles 'このデータをコピーおよび移動して良い事を通知します AllowedEffects = vbDropEffectCopy Or vbDropEffectMove End Sub 記述するのはこれだけです。 あとは、Label1.OLEDrag を呼び出せばドラッグ処理が開始されます。 > (2)デスクトップ上にこのファイル(ABC.doc)のコピーを作る。 コピー作業はデスクトップ側が担当しますので、VB 側では何も行いません。 AllowedEffects で Copy と Move を指定した場合には、デスクトップ側で 「Ctrl キーを押していればコピー、さもなくば移動」として扱ってくれます。 Copy のみ(あるいは Move のみ)を指定した場合には、Ctrl/Shift 等の キー押下に関係なく、常にコピー(あるいは移動)してくれます。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.