MFC中使用用户剪贴板(User clipboard in MFC)
2013-05-01 00:52
267 查看
原文地址:http://code.msdn.microsoft.com/windowsdesktop/MFCClipboard-3cca4de2
MFC中使用用户剪贴板
技术:MFC,Windows General
主题:剪贴板
MFC程序:MFCClipboard 工程概述
使用:
剪贴板是一系列的函数和消息的集合,能够让应用程序转移数据。由于所有的程序都有权访问剪贴板,数据可以很容易的在程序之间或是程序自身中进行转移。
一个用户一般是通过选取程序编辑菜单中的命令来操作剪贴板。以下是对标准的剪贴板操作的简要描述。
剪切:将选择区域拷贝到剪贴板,然后删除文档中的选择区域。先前剪贴板中的内容会被销毁。
复制:将选择区域拷贝到剪贴板。文档保持不变。先前剪贴板中的内容会被销毁。
粘贴:将当前选择区域的内容用剪贴板的内容进行替换。剪贴板的内容不改变。
删除:从文档中删除选择区域内容。剪贴板的内容不改变。这个命令不涉及到剪贴板,但是它应该同剪贴板命令一同出现在编辑菜单中。
示例演示了如何通过程序来进行拷贝和粘贴文本。
代码逻辑:
拷贝功能:
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类如下:
拷贝:
粘贴:
MFC中使用用户剪贴板
技术:MFC,Windows General
主题:剪贴板
MFC程序:MFCClipboard 工程概述
使用:
剪贴板是一系列的函数和消息的集合,能够让应用程序转移数据。由于所有的程序都有权访问剪贴板,数据可以很容易的在程序之间或是程序自身中进行转移。
一个用户一般是通过选取程序编辑菜单中的命令来操作剪贴板。以下是对标准的剪贴板操作的简要描述。
剪切:将选择区域拷贝到剪贴板,然后删除文档中的选择区域。先前剪贴板中的内容会被销毁。
复制:将选择区域拷贝到剪贴板。文档保持不变。先前剪贴板中的内容会被销毁。
粘贴:将当前选择区域的内容用剪贴板的内容进行替换。剪贴板的内容不改变。
删除:从文档中删除选择区域内容。剪贴板的内容不改变。这个命令不涉及到剪贴板,但是它应该同剪贴板命令一同出现在编辑菜单中。
示例演示了如何通过程序来进行拷贝和粘贴文本。
代码逻辑:
拷贝功能:
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 { // Construction public: CMFCClipboardDlg(CWnd* pParent = NULL); // standard constructor // Dialog Data enum { IDD = IDD_MFCCLIPBOARD_DIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support // Implementation protected: HICON m_hIcon; // Generated message map functions 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() { ///////////////////////////////////////////////////////////////////////// // 1. Get text from edit control. // CString strData; m_editSource.GetWindowTextW(strData); int len = strData.GetLength(); if (len <= 0) return; ///////////////////////////////////////////////////////////////////////// // 2. Open and empty clipboard. (OpenClipboard, EmptyClipboard) // if (!OpenClipboard()) return; EmptyClipboard(); ///////////////////////////////////////////////////////////////////////// // 3. Create global buffer. (GlobalAlloc) // HGLOBAL hglbCopy = GlobalAlloc(GMEM_MOVEABLE, (len + 1)); if (hglbCopy == NULL) { CloseClipboard(); return; } ///////////////////////////////////////////////////////////////////////// // 4. Lock the buffer. (GlobalLock) // char* lptstrCopy = (char*)GlobalLock(hglbCopy); ///////////////////////////////////////////////////////////////////////// // 5. Copy text to the buffer. (strcpy) // strcpy(lptstrCopy, (CStringA)strData); ///////////////////////////////////////////////////////////////////////// // 6. Unlock the buffer. (GlobalUnlock) // GlobalUnlock(hglbCopy); ///////////////////////////////////////////////////////////////////////// // 7. Set buffer data to clipboard. (SetClipboardData) // SetClipboardData(CF_TEXT, hglbCopy); ///////////////////////////////////////////////////////////////////////// // 8. Close clipboard. (CloseClipboard) // CloseClipboard(); }剪贴:
void CMFCClipboardDlg::OnBnClickedCutButton() { ///////////////////////////////////////////////////////////////////////// // 1. Copy // OnBnClickedCopyButton(); ///////////////////////////////////////////////////////////////////////// // 2. Clear the text. // m_editSource.SetWindowTextW(CString("")); }
粘贴:
void CMFCClipboardDlg::OnBnClickedPasteButton() { ///////////////////////////////////////////////////////////////////////// // 1. Check and open clipboard. (IsClipboardFormatAvailable, // OpenClipboard) // if (!IsClipboardFormatAvailable(CF_TEXT)) return; if (!OpenClipboard()) return; ///////////////////////////////////////////////////////////////////////// // 2. Get clipboard data. (GetClipboardData) // HGLOBAL hglb = GetClipboardData(CF_TEXT); ///////////////////////////////////////////////////////////////////////// // 3. Set the data into edit control. // if (hglb != NULL) { char* lptstr = (char*) GlobalLock(hglb); if (lptstr != NULL) { // Call the application-defined ReplaceSelection // function to insert the text and repaint the // window. CString displayData = CString(lptstr); m_editTarget.SetWindowTextW(displayData); GlobalUnlock(hglb); } } ///////////////////////////////////////////////////////////////////////// // 4. Close clipboard. (CloseClipboard) // CloseClipboard(); return; }程序效果如下:
相关文章推荐
- MFC中使用用户剪贴板
- 深入浅出InfoPath2007—使用UserGroup Web Service来得到当前用户所在的群组信息
- MFC用户自定义消息的使用
- 【Android Training - UserInfo】记住登入用户的信息[Lesson 1 - 使用AccountManager来记住用户]
- php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
- 使用HttpContext的User属性来实现用户验证
- 使用product_user_profile来实现用户权限的设定
- 使用CCUserDefault 判断用户是否是第一次登陆系统及UserDefault全路径的获取
- 使用 Office 365 PowerShell 管理用户帐户和许可证(十一)View user accounts with Office 365 PowerShell
- linux 使用copy_from_user而不是memcpy拷贝用户空间数据原因
- 用户控件中使用User.Identity
- MFC/VC++中怎样让用户定义的控件和使用的第三方控件相关联
- 使用HttpContext的User属性来实现用户验证[转载]
- MFC:使用剪贴板,怎么将内容复制到剪贴板
- 使用HttpContext的User属性来实现用户身份验证
- 使用HttpContext的User属性来实现用户验证-.NET教程
- Cocos2d-x3.2 UserDefault用户数据 使用
- Acegi : 使用SwitchUserProcessingFilter实现用户切换
- 使用脚本增加samba用户,smbpasswd -a user
- 使用product_user_profile来实现用户权限的设定