VC如何将指定的字符串复制到剪贴版里

比如有个按钮,点了以后实现功能把CStringa=“1234”复制到CTRL+C那里面... 比如有个按钮,点了以后实现功能把

CString a =“1234”复制到CTRL+C那里面
展开
 我来答
etiu2009
2009-11-14 · TA获得超过968个赞
知道小有建树答主
回答量:481
采纳率:0%
帮助的人:522万
展开全部
如果是 MFC 应用程序,而且是要把编辑框内容复制到剪贴板,直接调用CEdit::Copy 即可。

如果是其他情况,MSDN 有详细说明:

Copying Information to the Clipboard

In the Label application, the application-defined EditCopy function copies the current selection to the clipboard. This function does the following:

Opens the clipboard by calling the OpenClipboard function.
调用 OpenClipboard 打开剪贴板

Empties the clipboard by calling the EmptyClipboard function.
调用 EmptyClipboard 清除剪贴板内容

Calls the SetClipboardData function once for each clipboard format the application provides.
调用 SetClipboardData 将内容放置到剪贴板上

Closes the clipboard by calling the CloseClipboard function.
调用 CloseClipboard 关闭剪贴板

Depending on the current selection, the EditCopy function either copies a range of text or copies an application-defined structure representing an entire label. The structure, called LABELBOX, is defined as follows.

BOOL WINAPI EditCopy(VOID)
{
PLABELBOX pbox;
LPTSTR lptstrCopy;
HGLOBAL hglbCopy;
int ich1, ich2, cch;

if (hwndSelected == NULL)
return FALSE;

// Open the clipboard, and empty it.

if (!OpenClipboard(hwndMain))
return FALSE;
EmptyClipboard();

// Get a pointer to the structure for the selected label.

pbox = (PLABELBOX) GetWindowLong(hwndSelected, 0);

// If text is selected, copy it using the CF_TEXT format.

if (pbox->fEdit)
{
if (pbox->ichSel == pbox->ichCaret) // zero length
{
CloseClipboard(); // selection
return FALSE;
}

if (pbox->ichSel < pbox->ichCaret)
{
ich1 = pbox->ichSel;
ich2 = pbox->ichCaret;
}
else
{
ich1 = pbox->ichCaret;
ich2 = pbox->ichSel;
}
cch = ich2 - ich1;

// Allocate a global memory object for the text.

hglbCopy = GlobalAlloc(GMEM_MOVEABLE,
(cch + 1) * sizeof(TCHAR));
if (hglbCopy == NULL)
{
CloseClipboard();
return FALSE;
}

// Lock the handle and copy the text to the buffer.

lptstrCopy = GlobalLock(hglbCopy);
memcpy(lptstrCopy, &pbox->atchLabel[ich1],
cch * sizeof(TCHAR));
lptstrCopy[cch] = (TCHAR) 0; // null character
GlobalUnlock(hglbCopy);

// Place the handle on the clipboard.

SetClipboardData(CF_TEXT, hglbCopy);
}

// If no text is selected, the label as a whole is copied.

else
{
// Save a copy of the selected label as a local memory
// object. This copy is used to render data on request.
// It is freed in response to the WM_DESTROYCLIPBOARD
// message.

pboxLocalClip = (PLABELBOX) LocalAlloc(
LMEM_FIXED,
sizeof(LABELBOX)
);
if (pboxLocalClip == NULL)
{
CloseClipboard();
return FALSE;
}
memcpy(pboxLocalClip, pbox, sizeof(LABELBOX));
pboxLocalClip->fSelected = FALSE;
pboxLocalClip->fEdit = FALSE;

// Place a registered clipboard format, the owner-display
// format, and the CF_TEXT format on the clipboard using
// delayed rendering.

SetClipboardData(uLabelFormat, NULL);
SetClipboardData(CF_OWNERDISPLAY, NULL);
SetClipboardData(CF_TEXT, NULL);
}

// Close the clipboard.
CloseClipboard();

return TRUE;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式