代码逻辑:
拷贝功能:
1.从编辑控件中获取文本。
2.打开并清空剪贴板。(OpenClipboard,EmptyClipboard)
3.创建一个全局缓冲区。(GlobalAlloc)
4.锁定缓冲区。(GlobalLock)
5.将文本拷贝到缓冲区。(strcpy)
6.解锁缓冲区。(GlobalUnlock)
7.将缓冲区数据设置到剪贴板(SetClipboradData)
8.关闭剪贴板(CloseClipboard)
剪切功能:
1.拷贝(参考拷贝功能)
2.删除文本。
粘贴功能:
1.检查并打开剪贴板.(IsClipboardFormatAvailable,OpenClipboard)
2.获得剪贴板数据.(GetClipboardData)
3.将数据设置到编辑框.
4.关闭剪贴板.(CloseClipboard)
按照上面的代码逻辑顺序主要的代码如下(稍后会提供整个工程文件的下载)
免积分下载地址:http://download.csdn.net/detail/zy_dreamer/5319129
基于对话框的程序Dialog类如下:
- class CMFCClipboardDlg : public CDialog
- {
-
- public:
- CMFCClipboardDlg(CWnd* pParent = NULL);
-
-
- enum { IDD = IDD_MFCCLIPBOARD_DIALOG };
-
- protected:
- virtual void DoDataExchange(CDataExchange* pDX);
-
-
-
- protected:
- HICON m_hIcon;
-
-
- virtual BOOL OnInitDialog();
- afx_msg void OnPaint();
- afx_msg HCURSOR OnQueryDragIcon();
- DECLARE_MESSAGE_MAP()
- public:
- afx_msg void OnBnClickedCopyButton();
- afx_msg void OnBnClickedCutButton();
- afx_msg void OnBnClickedPasteButton();
- private:
- CEdit m_editTarget;
- CEdit m_editSource;
- };
主要功能:
拷贝:
- void CMFCClipboardDlg::OnBnClickedCopyButton()
- {
-
-
-
-
- CString strData;
- m_editSource.GetWindowTextW(strData);
-
- int len = strData.GetLength();
-
- if (len <= 0)
- return;
-
-
-
-
-
-
- if (!OpenClipboard())
- return;
-
- EmptyClipboard();
-
-
-
-
-
-
- HGLOBAL hglbCopy = GlobalAlloc(GMEM_MOVEABLE, (len + 1));
-
- if (hglbCopy == NULL)
- {
- CloseClipboard();
- return;
- }
-
-
-
-
-
-
- char* lptstrCopy = (char*)GlobalLock(hglbCopy);
-
-
-
-
-
-
- strcpy(lptstrCopy, (CStringA)strData);
-
-
-
-
-
-
- GlobalUnlock(hglbCopy);
-
-
-
-
-
-
- SetClipboardData(CF_TEXT, hglbCopy);
-
-
-
-
-
-
- CloseClipboard();
- }
剪贴:
- void CMFCClipboardDlg::OnBnClickedCutButton()
- {
-
-
-
-
- OnBnClickedCopyButton();
-
-
-
-
-
-
- m_editSource.SetWindowTextW(CString(""));
- }
粘贴:
- void CMFCClipboardDlg::OnBnClickedPasteButton()
- {
-
-
-
-
-
- if (!IsClipboardFormatAvailable(CF_TEXT))
- return;
-
- if (!OpenClipboard())
- return;
-
-
-
-
-
-
- HGLOBAL hglb = GetClipboardData(CF_TEXT);
-
-
-
-
-
-
- if (hglb != NULL)
- {
- char* lptstr = (char*) GlobalLock(hglb);
- if (lptstr != NULL)
- {
-
-
-
- CString displayData = CString(lptstr);
- m_editTarget.SetWindowTextW(displayData);
- GlobalUnlock(hglb);
- }
- }
-
-
-
-
-
-
- CloseClipboard();
-
- return;
- }
程序效果如下:

MFC中使用用户剪贴板,布布扣,bubuko.com
MFC中使用用户剪贴板
原文:http://www.cnblogs.com/UnGeek/p/3584439.html