• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 34,comments - 2,trackbacks - 0

            //重要函數
            1、分配內存:
            GLOBALHANDLE hGlobal = GlobalReAlloc (hGlobal, dwSize, uiFlags) ;

            uiFlags:
            GMEM_FIXED    //初始化每一位為0
            #define GPTR (GMEM_FIXED | GMEM_ZEROINIT)    //
            #define GHND (GMEM_MOVEABLE | GMEM_ZEROINIT)   //返回一個虛擬地址

            2、訪問內存塊:
             int *p = (int *) GlobalLock (hGlobal) ;

            解鎖內存塊:GlobalUnlock (hGlobal) ;

            釋放內存;hGlobal = GlobalHandle (p) ;

            3、把文本送到剪貼板
            (1)、分配內存,后面是以NULL結尾的,故要加一
            hGlobal = GlobalAlloc (GHND | GMEM_SHARE, iLength + 1) ;

            (2)、鎖定并獲得指針:
            pGlobal = GlobalLock (hGlobal) ;

            (3)、復制:
            for (i = 0 ; i < wLength ; i++)
             *pGlobal++ = *pString++ ;

            (4)、由于不用hGlobal 了,可以解鎖:
            GlobalUnlock (hGlobal);  //可以防止泄漏

            (5)、打開剪貼板并清空
            OpenClipboard (hwnd) ;
            EmptyClipboard () ;

            (6)、設置剪貼板數據,并關閉剪貼板:
            SetClipboardData (CF_TEXT, hGlobal) ;
            CloseClipboard () ;

            //注意:不要將鎖定的句柄送給剪貼板。
            //當從程序讀出數據時需要鎖定hGlobal 句柄以訪問內存


            4、從剪貼板獲取文本:
            (1)確定剪貼板是否含有數據:bAvailable = IsClipboardFormatAvailable (CF_TEXT) ;

            (2)、先打開剪貼板:OpenClipboard (hwnd) ;
            (3)獲得句柄:hGlobal = GetClipboardData (CF_TEXT) ;

            (4)把數據復制到程序前先分配內存:pText = (char *) malloc (GlobalSize (hGlobal)) ;
            獲得數據大小GlobalSize (hGlobal)
            (5)、鎖定句柄獲取指向剪貼板的指針:pGlobal = GlobalLock (hGlobal) ;
            (6)、復制數據:strcpy (pText, pGlobal) ;或者while (*pText++ = *pGlobal++) ;

            (7)、解鎖后關閉剪貼板
            GlobalUnlock (hGlobal) ;
            CloseClipboard ();


            (5)、逐次獲得數據iFormat,
            iFormat = 0 ;
            OpenClipboard (hwnd) ;
            while (iFormat = EnumClipboardFormats (iFormat))

             //

            CloseClipboard () ;
            您剪貼板不同格式的個數: //iCount = CountClipboardFormats () ;


            //過程

            一、寫入數據到剪貼板
            1、打開
            BOOL OpenClipboard(   __in HWND hWndNewOwner  );  如果函數執行成功,返回非零值.  如果函數執行失敗,返回零,為了獲得更多的錯誤信息,調用GetLastError.

            2、清空
             BOOL EmptyClipboard(  VOID );該函數清空剪切板并釋放剪切板內數據的句柄。函數在之后會將剪切板的所有權指派給當前打開剪切板的窗口。

            3、設置數據
            HANDLE SetClipboardData(
              UINT uFormat,   //數據的格式
              HANDLE hMem  //數據指定的內存形式
            );
            ①、使用
            HGLOBAL GlobalAlloc      分配內存
            (   UINT uFlags, // 分配屬性(方式)   
            DWORD dwBytes // 分配的字節數   
            );
            //注意要使用GMEM_MOVEABLE 標志
            ②、鎖定   鎖定內存中指定的內存塊,并返回一個地址值,令其指向內存塊的起始處
            LPVOID GlobalLock(   HGLOBAL hMem // handle to global memory object   );
            ③解鎖
            GlobalUnlock函數解除鎖定的內存塊,使指向該內存塊的指針無效,GlobalLock鎖定的內存,一定要用GlobalUnlock解鎖。

            4、關閉
              BOOL CloseClipboard(VOID);   //關閉剪貼板,這使其他窗口能訪問剪貼板。

            二、讀取
            1、打開 并檢查IsClipboardFormatAvailable_
            2、獲取  GetClipboardData
            注意使用
            用GlobalLock鎖定剪貼板那內存塊   
            GlobalSize可以用來獲取該內存塊的大小   
            使用GlobalUnlock解除鎖定
            3、關閉

             

            posted on 2011-09-13 16:21 Yu_ 閱讀(442) 評論(0)  編輯 收藏 引用 所屬分類: Windows程序設計
            91精品国产高清久久久久久国产嫩草| 久久人妻AV中文字幕| 欧洲人妻丰满av无码久久不卡| 色综合久久中文字幕无码| 国产免费久久久久久无码| 久久精品一区二区三区AV| 精品免费tv久久久久久久| 久久久久国产日韩精品网站| 国产精品久久久久天天影视| 欧美伊人久久大香线蕉综合| 久久综合色区| 久久精品二区| 日本国产精品久久| 久久综合五月丁香久久激情| 婷婷久久综合九色综合98| 精品久久8x国产免费观看| 亚洲AV无码成人网站久久精品大| 久久久WWW免费人成精品| 精品久久人妻av中文字幕| 麻豆成人久久精品二区三区免费 | 一级做a爱片久久毛片| 国产韩国精品一区二区三区久久 | 国产成人精品久久一区二区三区av | 久久精品国产秦先生| 久久99亚洲综合精品首页| 国产免费久久精品丫丫| 久久天天躁夜夜躁狠狠躁2022| 人妻精品久久无码专区精东影业| 久久国产免费直播| 国产99久久精品一区二区| 久久狠狠一本精品综合网| 国产成人久久精品一区二区三区 | 精品视频久久久久| 国产精品久久波多野结衣| 精品久久亚洲中文无码| 久久国产三级无码一区二区| 午夜视频久久久久一区| 久久精品无码一区二区三区免费 | 久久综合久久鬼色| 久久99精品国产| 久久99精品国产99久久6男男|