windows下的剪切板編程詳解

      網友投稿 1079 2025-04-03

      要使用剪切板就要了解剪切板的幾個函數 ?


      BOOL EmptyClipboard(VOID); //清空剪切板并且釋放與剪切板相關的數據的句柄

      BOOL OpenClipboard( HWND hWndNewOwner ); //打開剪切板并且阻止其他應用程序 修改剪切板的內容 hwnd為當前打開窗體的句柄

      HGLOBAL GlobalAlloc( UINT uFlags, SIZE_T dwBytes ); //在全局堆分配一塊內存,Windows內存管理器不提供單獨的全局對和本地堆 ,這個函數比起他內存 函數慢,但是這個函數仍然在剪切板等應用中使用。 有人可能會問了,為什么不用new或者 malloc呢? 那是因為你的new和malloc所分配的空間只是在一個進程中分配的,它并不能被Windows下所有進程所共享 。

      (*)他返回的不是一個內存塊的指針,而是一個內存對象的句柄 。 我們可以通過GloabalLock()獲得內存指針,。。。

      LPVOID GlobalLock( HGLOBAL hMem); //鎖定一個內存對象,并且返回指向這個內存對象的第一個字節的指針 。 對于可移動的內存對象來說,其內部的數據結構包含一個計數器,GlobalLock會是這個計數器+1 ,GlobalUnLock使這個計數器-1 。 鎖定的內存塊將不會被 移動或者丟棄 除非調用了GlobalReAlloc函數 .每次調用完一個GlobalLock函數 對應調用GlobalUnLock函數 。

      BOOL GlobalUnlock( HGLOBAL hMem ); 減少GMEM_MOVEABLE類型內存對象的鎖定計數,對于GMEM_FIXED類型的內存對象沒有影響

      BOOL CloseClipboard(VOID); //當一個應用程序使用完剪切板應該調用這個函數 關閉剪切板,允許其他程序訪問 剪切板 。

      HANDLE SetClipboardData( UINT uFormat, HANDLE hMem ); //將指定的內存對象的數據 設置到剪切板 。

      HANDLE GetClipboardData( UINT uFormat ); //從剪切板獲得指定的數據,這個函數調用前 剪切板必須被打開 。

      BOOL IsClipboardFormatAvailable(UINT format); //檢測剪切板中是否有指定格式的數據

      函數介紹完了下面就是應用 :

      1、向剪切板中增加數據 ,這里我用文本做示范 、

      ::OpenClipboard(m_hWnd) ;// 打開剪切板 防止其他 進程第剪切板操作 EmptyClipboard() ;//清空剪切板 并且將權限附加到 打開剪切板的窗體 HANDLE h=GlobalAlloc(GMEM_FIXED,100) ; //在全局堆分配內存并且返回句柄 char *p=(char*) GlobalLock(h) ; //鎖定指定內存對象,返回內存指向對象第一個字節的指針,增加內存對象的鎖定計數 strcpy(p,"this is a ClipBoard test") ; //將字符串拷貝到全局堆 SetClipboardData(CF_TEXT,h) ; //將指定內存對象的數據設置到剪切板 GlobalUnlock(h) ;//解鎖內存對象 并且減少鎖定計數 CloseClipboard() ; //關閉剪切板 在調用Open之后 必須有

      2、清空剪切板

      windows下的剪切板編程詳解

      ::EmptyClipboard() ; //清空剪切板

      3、獲得剪切板的數據

      ::OpenClipboard(m_hWnd) ; //打開剪切板 if (IsClipboardFormatAvailable(CF_TEXT)) //如果剪切板中有文本類型的數據 { HANDLE h=GetClipboardData(CF_TEXT); // 獲得剪切板數據 所在的內存對象 char * p=(char*)GlobalLock(h) ; //通過鎖定內存對象 獲得剪切板緩沖區的指針 GlobalUnlock(h) ; //解鎖內存對象 減少 內存對象的鎖定技術 MessageBox(p) ; }

      Windows 任務調度

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Word頁碼從任意頁開始的方法(word頁碼怎么從任意頁開始)
      下一篇:excel表格怎么設置數據超鏈接(Excel表格設置超鏈接)
      相關文章
      国产亚洲精品拍拍拍拍拍| 亚洲风情亚Aⅴ在线发布| 亚洲日韩在线中文字幕综合| 久久精品国产亚洲av麻豆图片 | 亚洲免费观看视频| 国产亚洲日韩在线a不卡| 亚洲av成人中文无码专区| 亚洲人成未满十八禁网站| 亚洲伊人久久大香线蕉AV| 亚洲一区二区三区国产精华液| 亚洲人成www在线播放| 日韩亚洲国产综合高清| 亚洲综合精品成人| 亚洲综合av一区二区三区不卡 | 亚洲综合色7777情网站777| 亚洲乱亚洲乱妇无码麻豆| 亚洲AV日韩精品一区二区三区| 国产亚洲一卡2卡3卡4卡新区| 亚洲老熟女五十路老熟女bbw| 亚洲熟女综合一区二区三区| 亚洲 日韩经典 中文字幕| 亚洲性无码一区二区三区| 亚洲精品无码av中文字幕| 亚洲国产精品成人AV在线| 337P日本欧洲亚洲大胆艺术图| 亚洲国产午夜精品理论片在线播放| 亚洲精品天堂成人片AV在线播放| 亚洲精品无码久久久久A片苍井空 亚洲精品无码久久久久YW | 无码欧精品亚洲日韩一区夜夜嗨 | 亚洲AV无码乱码麻豆精品国产| 亚洲午夜一区二区电影院| 456亚洲人成在线播放网站| 亚洲综合校园春色| 亚洲乱码av中文一区二区| 精品亚洲成a人在线观看| 亚洲欧洲久久av| 亚洲精品乱码久久久久久| 亚洲a在线视频视频| 久久久亚洲裙底偷窥综合| 亚洲中字慕日产2020| 亚洲国产精品无码中文lv|