Win32開發入門(21):複製、粘貼及剪貼簿操作

來源:互聯網
上載者:User

我要提醒一下大家,看了我的博文學到的知識,千萬不要用於實際開發,不然你會被你的上司罵: “媽的,這些東西哪來的,從來沒有人這樣做過。”不信你試試,腦細胞被凍結的經理或者技術總監們 肯定會這樣說的。

如果是一些有X年工作經驗(X永遠不可能大於100)的程式員肯定會說:“你 怎麼這麼不成熟?”你如果被別人這麼說之後,不知道你會不會很傷心,或者很生氣?

我呢, 曾經被N個人這樣教育過,不過你猜猜我當時的心情,我非常高興,喜悅。為什麼呢?

你不妨想 想,當一個人說你不成熟的時候,你說他其實在說什麼,他其實是在說他自己很成熟,就因為他自己熟 得快腐爛了,滿身惡臭,才會顯得你不成熟,仔細想想,是不是這個事兒?

那麼,成熟到底好 不好呢?我相信小學生都有這樣的常識,當一個果子熟透了的時候,會怎麼樣?它會從樹枝上高空墜落 ,然後狠巴巴地摔到地上,粉身碎骨。呵呵,所以,你現在明白了吧,當別人說我不成熟的時候,我會 非常高興,我心裡想:“快了快了,你快完蛋了。”

好,牛皮吹完,樂一樂。下面開始幹正事 ,今天咱們來認識一下怎麼操作粘貼板,即複製和粘貼資料。我不知道大家看不看恐怖片,反正我現在 不得不嚇你一回。這個粘貼板的操作,其實挺痛苦的,所以,如果在實際開發中,我肯定用CLR的類來 弄,是的,這是我的做事原則,哪種方法最簡單就用哪種,這叫什嗎?效率最大化,只有閑著沒事乾的 人才會簡單問題複雜化。

不過呢,畢竟這裡咱們要瞭解一下在Win32下操作粘貼板的,所以呢, 我還是用API來解決,至於CLR方法,相信你比我更會用,你不信算了,反正我信了,我不是菜鳥,但我 是菜鶴。

讀寫粘貼板就像我們上廁所一樣,首先開啟廁所門(調用OpenClipboard函數),然後 大動作(SetClipboardData或GetClipboardData),幹完了出來,關上廁所門(調用CloseClipboard) 。

我說它有點痛苦是因為操作的時睺,與我們平常讀寫一些資料不同,資料寫入到剪貼簿後就 由作業系統接管了,期間你不能任意讀寫,就像公用廁所是提供給你用的,你不能在裡面給人家裝修, 拆掉人家的東西。

一、複製資料

我這裡就不弄太複雜了,就複製一串文本吧,這也常 用。先看看代碼。

//複製內容     //開啟剪貼簿     OpenClipboard(hdlg);     //清空剪貼簿     EmptyClipboard();     //向剪貼簿中放東西     HWND hedt = GetDlgItem(hdlg, IDC_EDTCPY);     WCHAR ntext[100];     SendMessage(hedt, WM_GETTEXT, (WPARAM)100, (LPARAM)ntext);     //分配記憶體     HGLOBAL hgl = GlobalAlloc(GMEM_MOVEABLE, 100 * sizeof(WCHAR));     LPWSTR lpstrcpy = (LPWSTR)GlobalLock(hgl);     memcpy(lpstrcpy, ntext, 100 * sizeof(WCHAR));     GlobalUnlock(hgl);     SetClipboardData(CF_TEXT, lpstrcpy);     //關閉剪貼簿     CloseClipboard();

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。