日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

      首頁編程開發(fā)VC|VC++ → VC++語言實現(xiàn)MFC剪貼板操作實例代碼

      VC++語言實現(xiàn)MFC剪貼板操作實例代碼

      相關(guān)軟件相關(guān)文章發(fā)表評論 來源:cplusplus時間:2013/4/14 21:25:12字體大。A-A+

      作者:佚名點擊:0次評論:0次標(biāo)簽: 剪貼板

      ArsClip剪貼板輔助工具V4.12 綠色免費版
      • 類型:數(shù)據(jù)庫類大。1.8M語言:英文 評分:6.6
      • 標(biāo)簽:
      立即下載
      本文主要介紹了VC++語句語言/MFC中如下內(nèi)容的剪貼板操作:

      1、文本內(nèi)容的操作
      2、WMF數(shù)據(jù)的操作
      3、位圖的操作
      4、設(shè)置應(yīng)用自定義各式
      5、感知剪貼板內(nèi)容的改變
      6、自動將數(shù)據(jù)粘貼到另一應(yīng)用程式窗口

      一、文本內(nèi)容的操作
      下面的代碼示范了怎能將文本內(nèi)容復(fù)制到剪貼板(Unicode編碼的先轉(zhuǎn)化為ASCII):

      CString source;
      //文本內(nèi)容保存在source變量中
      if( OpenClipboard() )
      {
      HGLOBAL clipbuffer;
      char * buffer;
      EmptyClipboard();
      clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.GetLength()+1);
      buffer = (char*)GlobalLock(clipbuffer);
      strcpy(buffer, LPCSTR(source));
      GlobalUnlock(clipbuffer);
      SetClipboardData(CF_TEXT,clipbuffer);
      CloseClipboard();
      }
      下面的代碼呈現(xiàn)了怎能從剪貼板上獲得文本內(nèi)容:

      char * buffer = NULL;
      //打開剪貼板
      CString fromClipboard;
      if ( OpenClipboard() )
      {
      HANDLE hData = GetClipboardData(CF_TEXT);
      char * buffer = (char*)GlobalLock(hData);
      fromClipboard = buffer;
      GlobalUnlock(hData);
      CloseClipboard();
      }
      二、WMF數(shù)據(jù)的操作
      在剪貼板上讀寫圖象數(shù)據(jù)是非比尋常有用的功能,并且呈現(xiàn)起來也很簡單。下面的代碼呈現(xiàn)了怎能將擴展圖元文檔復(fù)制到剪貼板:

      if(OpenClipboard());
      {
      EmptyClipboard();
      //創(chuàng)建圖元文檔DC
      CMetaFileDC * cDC = new CMetaFileDC();
      cDC->CreateEnhanced(GetDC(),NULL,NULL,"the_name");
      //調(diào)用繪圖例程
      //關(guān)閉CMetafileDC并獲得它的句柄
      HENHMETAFILE handle = cDC->CloseEnhanced();
      //復(fù)制到剪貼板
      SetClipBoardData(CF_ENHMETAFILE,handle);
      CloseClipboard();
      //刪除dc
      delete cDC;
      }
      下面的代碼演示了從剪貼板獲得圖元文檔并將其繪制到client DC上:

      if(OpenClipboard())
      {
      //獲得剪貼板數(shù)據(jù)
      HENMETAFILE handle = (HENMETAFILE)GetClipboardData(CF_ENHMETAFILE);
      //呈現(xiàn)
      CClientDC dc(this);
      CRect client(0,0,200,200);
      dc.PlayMetaFile(handle,client);
      //關(guān)閉剪貼板
      CloseClipboard();
      }
      三、位圖的操作
      位圖的操作稍微復(fù)雜一點,下面那個例子呈現(xiàn)了怎能在剪貼板保存位圖:

      if(OpenClipboard())
      {
      EmptyClipboard();
      CBitmap * junk = new CBitmap();
      CClientDC cdc(this);
      CDC dc;
      dc.CreateCompatibleDC(&cdc);
      CRect client(0,0,200,200);
      junk->CreateCompatibleBitmap(&cdc,client.Width(),client.Height());
      dc.SelectObject(junk);
      DrawImage(&dc,CString("Bitmap"));
      //復(fù)制數(shù)據(jù)到剪貼板
      SetClipboardData(CF_BITMAP,junk->m_hObject);
      CloseClipboard();
      delete junk;
      }
      下面的代碼呈現(xiàn)了怎能從剪貼板上獲得位圖數(shù)據(jù):

      if(OpenClipboard())
      {
      //獲得剪貼板數(shù)據(jù)
      HBITMAP handle = (HBITMAP)GetClipboardData(CF_BITMAP);
      CBitmap * bm = CBitmap::FromHandle(handle);
      CClientDC cdc(this);
      CDC dc;
      dc.CreateCompatibleDC(&cdc);
      dc.SelectObject(bm);
      cdc.BitBlt(0,0,200,200,&dc,0,0,SRCCOPY);
      CloseClipboard();
      }
      四、設(shè)置并應(yīng)用自定義各式
      應(yīng)用RegisterClipboardFormat()參數(shù),沒出國疑問復(fù)制和粘貼任何你需求的數(shù)據(jù)TYPE。比如咱們有以下唯一的數(shù)據(jù)TYPE:
      struct MyFormatData
      {
      long val1;
      int val2;
      };

      咱們要把它復(fù)制到剪貼板,沒出國疑問應(yīng)用如下的代碼:

      UINT format = RegisterClipBoardFormat("MY_CUSTOM_FORMAT");
      if(OpenClipboard())
      {
      MyFormatData data;
      data.val1 = 100;
      data.val2 = 200;
      HGLOBAL clipbuffer;
      EmptyClipboard();
      clipbuffer = GlobalAlloc(GMEM_DDESHARE, sizeof(MyFormatData));
      MyFormatData * buffer = (MyFormat數(shù)據(jù)*)GlobalLock(clipbuffer);
      //保存到內(nèi)存
      *buffer = data;
      //保存到剪貼板
      GlobalUnlock(clipbuffer);
      SetClipboardData(format,clipbuffer);
      CloseClipboard();
      }
      讀取數(shù)據(jù)應(yīng)用以下代碼:

      UINT format = RegisterClipboardFormat("MY_CUSTOM_FORMAT");
      MyFormatData data;
      if(Openclipboard())
      {
      HANDLE hData =GetClipboardData(format);
      MyFormatData * buffer = (MyFormatData*)GlobalLock(hData);
      data = *buffer;
      GlobalUnlock(hData);
      CloseClipboard();
      }
      五、感知剪貼板內(nèi)容的改變
      經(jīng)過win界面消息沒出國疑問感知剪貼板內(nèi)容也許除了改變,代碼如下:

      //In your initialization code call:
      SetClipboardViewer(); //將咱們的程式添加到剪貼板觀察鏈
      //In your message map add:
      ON_MESSAGE(WM_DRAWCLIPBOARD, OnClipChange) //添加Message handle
      //Which is declared as:
      afx_msg void OnClipChange();
      Finally implement:
      void CDetectClipboardChangeDlg::OnClipChange()
      {
      CTime time = CTime::GetCurrentTime();
      SetDlgItemText(IDC_CHANGED_DATE,time.Format("%a, %b %d, %Y -- %H:%M:%S"));
      DisplayClipboardText();

        相關(guān)評論

        閱讀本文后您有什么感想? 已有人給出評價!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無聊無聊

        熱門評論

        最新評論

        發(fā)表評論 查看所有評論(0)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)
        推薦文章

        沒有數(shù)據(jù)

          沒有數(shù)據(jù)
        最新文章
          沒有數(shù)據(jù)