線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1315
推到 Plurk!
推到 Facebook!

跨視窗的文字拖曳

尚未結案
almost001
一般會員


發表:2
回覆:2
積分:5
註冊:2003-11-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-14 21:28:43 IP:218.168.xxx.xxx 未訂閱
我想要將其他任意視窗,像是 IE 還是 Ultraedit 之類的,中的所選取的文字,拖曳到我自己的 memo 上並顯示之,應該要如何做呢? 這個好像和拖曳檔案或元件間的拖曳有點不同喔,還是我不懂...
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-21 09:19:22 IP:218.32.xxx.xxx 未訂閱
您好, 不同程式間的視窗內容拖曳, 這裡有類似的做法, http://delphi.ktop.com.tw/topic.php?TOPIC_ID=40768 雖然它是用拖曳檔案做example, 但是拖曳文字也是同樣的道理。 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D
gwanlin
一般會員


發表:1
回覆:29
積分:6
註冊:2002-07-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-22 23:47:47 IP:211.76.xxx.xxx 未訂閱
我想,如果是文字的話應該蠻輕鬆吧!!只要在"拖曳"這個動作發生時把字串存起來,然後等到滑鼠放開之後再去找到目前active的window或物件,然後把字串貼過去.......... 只是想法啦!!希望對你有幫助!! 我是gwanlin 發表人 - gwanlin 於 2003/11/22 23:48:26
------
我是gwanlin
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-24 12:56:06 IP:218.32.xxx.xxx 未訂閱
引言: 我想,如果是文字的話應該蠻輕鬆吧!!只要在"拖曳"這個動作發生時把字串存起來,然後等到滑鼠放開之後再去找到目前active的window或物件,然後把字串貼過去.......... 只是想法啦!!希望對你有幫助!! 我是gwanlin 發表人 - gwanlin 於 2003/11/22 23:48:26
你說的這是在自己的application內的視窗物件拖曳。 跨視窗拖曳並沒有那麼簡單, 首先你必須將你的form 註冊為可外部拖曳, 才能收到從外部視窗拖曳來的物件。 請almost001 先參考 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=40768 只要改幾行程式, 便能做出跨視窗拖曳文字的功能。 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D
almost001
一般會員


發表:2
回覆:2
積分:5
註冊:2003-11-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-24 20:44:11 IP:218.168.xxx.xxx 未訂閱
引言:
引言: 我想,如果是文字的話應該蠻輕鬆吧!!只要在"拖曳"這個動作發生時把字串存起來,然後等到滑鼠放開之後再去找到目前active的window或物件,然後把字串貼過去.......... 只是想法啦!!希望對你有幫助!! 我是gwanlin 發表人 - gwanlin 於 2003/11/22 23:48:26
你說的這是在自己的application內的視窗物件拖曳。 跨視窗拖曳並沒有那麼簡單, 首先你必須將你的form 註冊為可外部拖曳, 才能收到從外部視窗拖曳來的物件。 請almost001 先參考 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=40768 只要改幾行程式, 便能做出跨視窗拖曳文字的功能。
呃,是這樣的:我就是不知道要改哪幾行才會發問的.... 在拖曳文字時,應該不是發出 WM_DROPFILES,但我並不知道會發出何種訊息。 再者,註冊為可外部拖曳文字,應該也不是用 DragAcceptFiles(Handle,true); 那麼,我還是不清楚要使用哪個 API 才能完成可支援拖曳文字的註冊....
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-11-27 10:02:26 IP:218.32.xxx.xxx 未訂閱
引言:
引言: 請almost001 先參考 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=40768 只要改幾行程式, 便能做出跨視窗拖曳文字的功能。<< 這句話是錯的!! 抱歉。 windows 跨applications 的拖曳控制分為2種: 一種是檔案拖曳,由File Manager 控制。 一種是其他物件拖曳(例如文字, 圖片等等)由OLE控制。 請見MSDN [url="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_core_drag_and_drop.3a_.customizing.asp"]Drag and Drop (OLE)[/url]
呃,是這樣的:我就是不知道要改哪幾行才會發問的.... 在拖曳文字時,應該不是發出 WM_DROPFILES,但我並不知道會發出何種訊息。 再者,註冊為可外部拖曳文字,應該也不是用 DragAcceptFiles(Handle,true); 那麼,我還是不清楚要使用哪個 API 才能完成可支援拖曳文字的註冊....
從一個視窗(drop source)拖曳物件到另一個視窗(drop target), 我們可以用[url="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/htm/ofn_p2z_2lkg.asp"]RegisterDragDrop[/url]這個函式將自己的form 註冊為[url="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/htm/oin_d_95tg.asp"]drop target[/url]。 (ps. 所有有底線的地方都是連向msdn的指令解說頁面, 您可以參考看看。) BCB 的 Form 也有一個屬性: DropTarget, 別忘了設為true。 另外程式結束時必須使用[url="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/htm/ofn_p2z_40mo.asp"]RevokeDragDrop[/url]將你註冊的(drop target)from 取消。 將form 註冊為drop target後, 你便可以[url="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/html/_core_drag_and_drop.3a_.implementing_a_drop_target.asp"]override拖曳過程中Drop Target的函式[/url]。拖曳產生時, Drop Target會呼叫你override的函式, 你可以從它傳進來的值得到拖曳過來的物件。 我沒有時間寫sample給你, 所以給你一個方向。 如果您實作出來的話, 希望您可以發表出來給大家參考。謝謝。 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-11-28 09:27:25 IP:218.32.xxx.xxx 未訂閱
喔!! 對了 !!    拖曳成功的時候, 拖曳的物件會被複製到剪貼簿, (注意: 剪貼簿支援的格式才會複製) 你可以直接從剪貼簿抓資料, 不需要從Drog Target傳進來的參數做轉換。    抓剪貼簿上的文字:  
 
        void* lpstr;
        HANDLE hdlRecieve;            // Get copy data
        OpenClipboard(NULL);            hdlRecieve = GetClipboardData(CF_TEXT); // 設定剪貼簿格式
        lpstr = GlobalLock(hdlRecieve);
        Form2->Edit1->Text = (char*)lpstr; // 抓文字            GlobalUnlock(hdlRecieve);
        CloseClipboard();
數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖
系統時間:2024-05-19 18:32:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!