// If the application is in edit mode, // get the clipboard text.
if (pbox != NULL && pbox->fEdit) { if (!IsClipboardFormatAvailable(CF_TEXT)) return; if (!OpenClipboard(hwndMain)) return;
hglb = GetClipboardData(CF_TEXT); if (hglb != NULL) { lptstr = GlobalLock(hglb); if (lptstr != NULL) { // Call the application-defined ReplaceSelection // function to insert the text and repaint the // window.
OpenClipboard/CloseClipboard/EmptyClipboardVOID WINAPI EditPaste(VOID)
{
PLABELBOX pbox;
HGLOBAL hglb;
LPTSTR lptstr;
PLABELBOX pboxCopy;
int cx, cy;
HWND hwnd;
pbox = hwndSelected == NULL ? NULL :
(PLABELBOX) GetWindowLong(hwndSelected, 0);
// If the application is in edit mode,
// get the clipboard text.
if (pbox != NULL && pbox->fEdit)
{
if (!IsClipboardFormatAvailable(CF_TEXT))
return;
if (!OpenClipboard(hwndMain))
return;
hglb = GetClipboardData(CF_TEXT);
if (hglb != NULL)
{
lptstr = GlobalLock(hglb);
if (lptstr != NULL)
{
// Call the application-defined ReplaceSelection
// function to insert the text and repaint the
// window.
ReplaceSelection(hwndSelected, pbox, lptstr);
GlobalUnlock(hglb);
}
}
CloseClipboard();
return;
}
// If the application is not in edit mode,
// create a label window.
if (!IsClipboardFormatAvailable(uLabelFormat))
return;
if (!OpenClipboard(hwndMain))
return;
hglb = GetClipboardData(uLabelFormat);
if (hglb != NULL)
{
pboxCopy = GlobalLock(hglb);
if (pboxCopy != NULL)
{
cx = pboxCopy->rcText.right + CX_MARGIN;
cy = pboxCopy->rcText.top * 2 + cyText;
hwnd = CreateWindowEx(
WS_EX_NOPARENTNOTIFY | WS_EX_TRANSPARENT,
atchClassChild, NULL, WS_CHILD, 0, 0, cx, cy,
hwndMain, NULL, hinst, NULL
);
if (hwnd != NULL)
{
pbox = (PLABELBOX) GetWindowLong(hwnd, 0);
memcpy(pbox, pboxCopy, sizeof(LABELBOX));
ShowWindow(hwnd, SW_SHOWNORMAL);
SetFocus(hwnd);
}
GlobalUnlock(hglb);
}
}
CloseClipboard();
}
使用剪切板
一:将文本装入剪切板:
CString source("人约黄昏后");
if(OpenClipboard())
{
HGLOBAL hClipGlolbal;
char *buffer;
EmptyClipboard();
hClipGlolbal=GlobalAlloc(GMEM_DDESHARE, source.GetLength()+1);
buffer=(char*)GlobalLock(hClipGlolbal);
strcpy(buffer,LPCSTR(source));
GlobalUnlock(hClipGlolbal);
SetClipboardData(CF_TEXT,hClipGlolbal);
CloseClipboard();
}
从剪接板上获取文本,有两种方法
(1):char * buffer;
if (IsClipboardFormatAvailable(CF_TEXT))
if(OpenClipboard())
{
buffer=(char*)GetClipboardData(CF_TEXT);
AfxMessageBox(buffer);
}
CloseClipboard();
(2):
if(IsClipboardFormatAvailable(CF_TEXT)) //判断剪切板上的数据格式
if (OpenClipboard())
{
HGLOBAL hClipGlolbal;
char *buffer;
hClipGlolbal=GetClipboardData(CF_TEXT);
buffer=(char*)GlobalLock(hClipGlolbal);
GlobalUnlock(hClipGlolbal);
AfxMessageBox(buffer);
}
CloseClipboard();