本文整理汇总了C++中OpenClipboard函数的典型用法代码示例。如果您正苦于以下问题:C++ OpenClipboard函数的具体用法?C++ OpenClipboard怎么用?C++ OpenClipboard使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了OpenClipboard函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CopyToClipboard
void Clipboard::CopyToClipboard(HWND h)
{
if ( !OpenClipboard(h) )
{
MessageBox(NULL, "Cannot open the Clipboard", "Error", MB_OK);
return;
}
// Remove the current Clipboard contents
if( !EmptyClipboard() )
{
MessageBox(NULL, "Cannot empty the Clipboard", "Error", MB_OK);
return;
}
// ...
// Get the currently selected data
/*************
INCCRunTimeEnvironment::tEnvInfo info;
GetEnvironmentInfoList(info);
int tlen = 0;
int i;
const int ic = eMAXPATHCFGNAMES/2 + eMAXAPPINFONAMES;
PTCHAR *foo = new PTCHAR[ic];
for (i = 0; i < ic; i++)
{
foo[i] = new TCHAR[512];
foo[i][0] = 0;
}
for (i = 0; i < (eMAXPATHCFGNAMES/2); i++)
{
sprintf(foo[i],"%s\t\t%s\t\t%s\t\t%s\r\n",
info.pIniFile->m_Entry[i].name,
info.pIniFile->m_Entry[i].iniValue,
info.pIniFile->m_Entry[i].defIniValue,
info.pIniFile->m_Entry[i].szDesc);
tlen += strlen(foo[i]);
}
for (i = 0; i < (eMAXAPPINFONAMES); i++)
{
sprintf(foo[i + (eMAXPATHCFGNAMES/2)],"%s\t\t%s\t\t%s\t\t%s\r\n",
info.info[i].name,
info.info[i].iniValue,
info.info[i].defIniValue,
info.info[i].szDesc);
tlen += strlen(foo[i]);
}
// Allocate a global memory object for the text.
LPTSTR lptstrCopy;
HGLOBAL hglbCopy;
hglbCopy = GlobalAlloc(GMEM_MOVEABLE, (tlen + 1) * sizeof(TCHAR));
if (hglbCopy == NULL)
{
goto cleanup;
}
// Lock the handle and copy the text to the buffer.
lptstrCopy = (LPSTR)GlobalLock(hglbCopy);
lptstrCopy[0] = (TCHAR) 0; // null character
for (i = 0; i < ic; i++)
{
LPSTR b = foo[i];
size_t l = strlen(b);
strncat(lptstrCopy, b, l);
}
lptstrCopy[tlen] = (TCHAR) 0; // null character
GlobalUnlock(hglbCopy);
// Place the handle on the clipboard.
// For the appropriate data formats...
if ( ::SetClipboardData( CF_TEXT, hglbCopy ) == NULL )
{
MessageBox(NULL, "Unable to set Clipboard data", "Error", MB_OK);
goto cleanup;
}
cleanup:
CloseClipboard();
for (i = 0; i < ic; i++)
{
delete [] foo[i];
}
delete [] foo;
*/
}
示例2: cliprdr_proc
static LRESULT CALLBACK cliprdr_proc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
static wfClipboard* clipboard = NULL;
switch (Msg)
{
case WM_CREATE:
DEBUG_CLIPRDR("info: WM_CREATE");
clipboard = (wfClipboard*)((CREATESTRUCT*) lParam)->lpCreateParams;
if (!AddClipboardFormatListener(hWnd)) {
DEBUG_CLIPRDR("error: AddClipboardFormatListener failed with %#x.", GetLastError());
}
clipboard->hwnd = hWnd;
break;
case WM_CLOSE:
DEBUG_CLIPRDR("info: WM_CLOSE");
RemoveClipboardFormatListener(hWnd);
break;
case WM_CLIPBOARDUPDATE:
DEBUG_CLIPRDR("info: WM_CLIPBOARDUPDATE");
if (clipboard->sync)
{
if ((GetClipboardOwner() != clipboard->hwnd) &&
(S_FALSE == OleIsCurrentClipboard(clipboard->data_obj)))
{
if (clipboard->hmem)
{
GlobalFree(clipboard->hmem);
clipboard->hmem = NULL;
}
cliprdr_send_format_list(clipboard);
}
}
break;
case WM_RENDERALLFORMATS:
DEBUG_CLIPRDR("info: WM_RENDERALLFORMATS");
/* discard all contexts in clipboard */
if (!OpenClipboard(clipboard->hwnd))
{
DEBUG_CLIPRDR("OpenClipboard failed with 0x%x", GetLastError());
break;
}
EmptyClipboard();
CloseClipboard();
break;
case WM_RENDERFORMAT:
DEBUG_CLIPRDR("info: WM_RENDERFORMAT");
if (cliprdr_send_data_request(clipboard, (UINT32) wParam) != 0)
{
DEBUG_CLIPRDR("error: cliprdr_send_data_request failed.");
break;
}
if (!SetClipboardData((UINT) wParam, clipboard->hmem))
{
DEBUG_CLIPRDR("SetClipboardData failed with 0x%x", GetLastError());
if (clipboard->hmem)
{
GlobalFree(clipboard->hmem);
clipboard->hmem = NULL;
}
}
/* Note: GlobalFree() is not needed when success */
break;
case WM_CLIPRDR_MESSAGE:
DEBUG_CLIPRDR("info: WM_CLIPRDR_MESSAGE");
switch (wParam)
{
case OLE_SETCLIPBOARD:
DEBUG_CLIPRDR("info: OLE_SETCLIPBOARD");
if (wf_create_file_obj(clipboard, &clipboard->data_obj))
{
if (OleSetClipboard(clipboard->data_obj) != S_OK)
{
wf_destroy_file_obj(clipboard->data_obj);
clipboard->data_obj = NULL;
}
}
break;
default:
break;
}
break;
case WM_DESTROYCLIPBOARD:
case WM_ASKCBFORMATNAME:
case WM_HSCROLLCLIPBOARD:
case WM_PAINTCLIPBOARD:
case WM_SIZECLIPBOARD:
case WM_VSCROLLCLIPBOARD:
default:
return DefWindowProc(hWnd, Msg, wParam, lParam);
//.........这里部分代码省略.........
示例3: cliprdr_send_format_list
static int cliprdr_send_format_list(wfClipboard* clipboard)
{
int count;
int length;
UINT32 index;
UINT32 numFormats;
UINT32 formatId = 0;
char formatName[1024];
CLIPRDR_FORMAT* format;
CLIPRDR_FORMAT* formats;
CLIPRDR_FORMAT_LIST formatList;
ZeroMemory(&formatList, sizeof(CLIPRDR_FORMAT_LIST));
if (!OpenClipboard(clipboard->hwnd))
return -1;
count = CountClipboardFormats();
numFormats = (UINT32) count;
formats = (CLIPRDR_FORMAT*) calloc(numFormats, sizeof(CLIPRDR_FORMAT));
index = 0;
while (formatId = EnumClipboardFormats(formatId))
{
format = &formats[index++];
format->formatId = formatId;
length = 0;
format->formatName = NULL;
if (formatId >= CF_MAX)
{
length = GetClipboardFormatNameA(formatId, formatName, sizeof(formatName) - 1);
}
if (length > 0)
{
format->formatName = _strdup(formatName);
}
}
CloseClipboard();
formatList.msgFlags = 0;
formatList.numFormats = numFormats;
formatList.formats = formats;
clipboard->context->ClientFormatList(clipboard->context, &formatList);
for (index = 0; index < numFormats; index++)
{
format = &formats[index];
free(format->formatName);
}
free(formats);
return 1;
}
示例4: Scan_clipboard
//------------------------------------------------------------------------------
//http://msdn.microsoft.com/en-us/library/windows/desktop/ms649016%28v=vs.85%29.aspx
DWORD WINAPI Scan_clipboard(LPVOID lParam)
{
//check if local or not :)
if (!LOCAL_SCAN)
{
h_thread_test[(unsigned int)lParam] = 0;
check_treeview(htrv_test, H_tests[(unsigned int)lParam], TRV_STATE_UNCHECK);//db_scan
return 0;
}
//db
sqlite3 *db = (sqlite3 *)db_scan;
if(!SQLITE_FULL_SPEED)sqlite3_exec(db_scan,"BEGIN TRANSACTION;", NULL, NULL, NULL);
//lecture du contenu du presse papier et extraction
if (OpenClipboard(0))
{
char description[MAX_LINE_SIZE], format[DEFAULT_TMP_SIZE],
data[MAX_LINE_SIZE],user[NB_USERNAME_SIZE+1]="";
unsigned int session_id = current_session_id;
HGLOBAL hMem;
//user
DWORD s=NB_USERNAME_SIZE;
GetUserName(user,&s);
int nb_items = CountClipboardFormats();
if (nb_items > 0)
{
unsigned int uFormat = EnumClipboardFormats(0);
#ifdef CMD_LINE_ONLY_NO_DB
printf("\"Clipboard\";\"format\";\"code\";\"description\";\"user\";\"session_id\";\"data\";\r\n");
#endif // CMD_LINE_ONLY_NO_DB
while (uFormat && start_scan && GetLastError() == ERROR_SUCCESS && --nb_items>0)
{
//check if ok
if (IsClipboardFormatAvailable(uFormat) == FALSE)
{
uFormat = EnumClipboardFormats(uFormat);
continue;
}
description[0] = 0;
data[0]= 0;
if (GetClipboardFormatName(uFormat, description, MAX_LINE_SIZE) != 0)
{
hMem = GetClipboardData(uFormat);
if (hMem != NULL)
{
switch(uFormat)
{
case CF_TEXT:
//format
strncpy(format,"CF_TEXT",DEFAULT_TMP_SIZE);
if (description[0]==0)strncpy(description,"Text",DEFAULT_TMP_SIZE);
//datas
strncpy(data,GlobalLock(hMem),MAX_LINE_SIZE);
convertStringToSQL(data, MAX_LINE_SIZE);
GlobalUnlock(hMem);
addClipboardtoDB(format, uFormat, description, data, user, session_id, db);
break;
case CF_BITMAP:
//format
strncpy(format,"CF_BITMAP",DEFAULT_TMP_SIZE);
if (description[0]==0)strncpy(description,"Bitmap Picture",DEFAULT_TMP_SIZE);
//do in bitmap to hexa
SaveBitmapToHexaStr((HBITMAP)hMem , data, MAX_LINE_SIZE);
addClipboardtoDB(format, uFormat, description, data, user, session_id, db);
break;
case CF_METAFILEPICT:
//format
strncpy(format,"CF_METAFILEPICT",DEFAULT_TMP_SIZE);
if (description[0]==0)strncpy(description,"Meta-File Picture",DEFAULT_TMP_SIZE);
//datas
DatatoHexa(GlobalLock(hMem), GlobalSize(hMem), data, MAX_LINE_SIZE);
addClipboardtoDB(format, uFormat, description, data, user, session_id, db);
GlobalUnlock(hMem);
break;
case CF_SYLK:
//format
strncpy(format,"CF_SYLK",DEFAULT_TMP_SIZE);
if (description[0]==0)strncpy(description,"Microsoft Symbolic Link (SYLK) data",DEFAULT_TMP_SIZE);
//datas
snprintf(data,MAX_LINE_SIZE,"%s",(char*)GlobalLock(hMem));
convertStringToSQL(data, MAX_LINE_SIZE);
GlobalUnlock(hMem);
addClipboardtoDB(format, uFormat, description, data, user, session_id, db);
break;
case CF_OEMTEXT:
//format
strncpy(format,"CF_OEMTEXT",DEFAULT_TMP_SIZE);
if (description[0]==0)strncpy(description,"Text (OEM)",DEFAULT_TMP_SIZE);
//datas
strncpy(data,GlobalLock(hMem),MAX_LINE_SIZE);
convertStringToSQL(data, MAX_LINE_SIZE);
GlobalUnlock(hMem);
addClipboardtoDB(format, uFormat, description, data, user, session_id, db);
break;
//.........这里部分代码省略.........
示例5: vboxClipboardProcessMsg
//.........这里部分代码省略.........
{
/* 'hMem' contains the host clipboard data.
* size is 'cb' and format is 'format'. */
HANDLE hClip = SetClipboardData(format, hMem);
Log(("VBoxTray: vboxClipboardProcessMsg: WM_RENDERFORMAT hClip = %p\n", hClip));
if (hClip)
{
/* The hMem ownership has gone to the system. Finish the processing. */
break;
}
/* Cleanup follows. */
}
}
}
if (hMem)
GlobalUnlock(hMem);
}
if (hMem)
GlobalFree(hMem);
}
/* Something went wrong. */
EmptyClipboard();
}
} break;
case WM_RENDERALLFORMATS:
{
/* Do nothing. The clipboard formats will be unavailable now, because the
* windows is to be destroyed and therefore the guest side becomes inactive.
*/
if (OpenClipboard(hwnd))
{
EmptyClipboard();
CloseClipboard();
}
} break;
case WM_USER:
{
/* Announce available formats. Do not insert data, they will be inserted in WM_RENDER*. */
uint32_t u32Formats = (uint32_t)lParam;
if (FALSE == OpenClipboard(hwnd))
{
Log(("VBoxTray: vboxClipboardProcessMsg: WM_USER: Failed to open clipboard! Last error = %ld\n", GetLastError()));
}
else
{
EmptyClipboard();
HANDLE hClip = NULL;
if (u32Formats & VBOX_SHARED_CLIPBOARD_FMT_UNICODETEXT)
{
Log(("VBoxTray: vboxClipboardProcessMsg: WM_USER: VBOX_SHARED_CLIPBOARD_FMT_UNICODETEXT\n"));
hClip = SetClipboardData(CF_UNICODETEXT, NULL);
}
if (u32Formats & VBOX_SHARED_CLIPBOARD_FMT_BITMAP)
{
Log(("VBoxTray: vboxClipboardProcessMsg: WM_USER: VBOX_SHARED_CLIPBOARD_FMT_BITMAP\n"));
hClip = SetClipboardData(CF_DIB, NULL);
}
示例6: ClipboardCopy
BOOL ClipboardCopy(void)
{ HGLOBAL hMem;
char huge *pMem;
LONG lSize;
BOOL WideCharConvert = FALSE;
UINT Codepage = 0;
/*prepare resources...*/
if (!SelectCount) {
Error(209);
return (FALSE);
}
if (!OpenClipboard(hwndMain)) {
ErrorBox(MB_ICONEXCLAMATION, 302);
return (FALSE);
}
lSize = SelectCount + sizeof(BinaryPart);
if (!(GetVersion() & 0x80000000U))
if (UtfEncoding || CharSet == CS_OEM || AnsiCodePage != CP_ACP) {
/*copy as wide chars...*/
Codepage = CharSet == CS_OEM ? OemCodePage : AnsiCodePage;
if (UtfEncoding != 16)
lSize <<= 1;
WideCharConvert = TRUE;
}
hMem = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, lSize);
if (!hMem) {
CloseClipboard();
ErrorBox(MB_ICONEXCLAMATION, 304);
return (FALSE);
}
pMem = GlobalLock(hMem);
if (pMem == NULL) {
CloseClipboard();
GlobalFree(hMem);
ErrorBox(MB_ICONEXCLAMATION, 305);
return (FALSE);
}
/*copy into memory...*/
{ POSITION Pos;
ULONG Bytes = SelectCount;
UINT i;
BOOL NullbyteFound = FALSE;
Pos = SelectStart;
if (UtfEncoding && WideCharConvert) {
POSITION EndPos = Pos;
WCHAR *pw = (WCHAR *)pMem;
Advance(&EndPos, Bytes);
//if (CountBytes(&Pos) != 0 || (i = CharAndAdvance(&Pos)) == C_BOM)
i = CharAndAdvance(&Pos);
for (;;) {
if (ComparePos(&Pos, &EndPos) > 0)
break;
if (i == C_EOF) break;
if (i == C_CRLF) {
if ((char *)pw + 6 > pMem + lSize)
break;
*pw++ = '\r';
i = '\n';
}
if ((char *)pw + 4 > pMem + lSize)
break;
*pw++ = i;
i = CharAndAdvance(&Pos);
}
*pw = '\0';
} else while (Bytes) {
LPSTR p, pNull;
CharAt(&Pos); /*normalize position and enforce page load*/
i = Pos.p->Fill - Pos.i;
if (i > Bytes) i = (UINT)Bytes;
p = Pos.p->PageBuf + Pos.i;
if (!NullbyteFound && (pNull = _fmemchr(p, '\0', i)) != NULL) {
if (ErrorBox(MB_ICONINFORMATION|MB_OKCANCEL, 328) == IDCANCEL) {
CloseClipboard();
GlobalUnlock(hMem);
GlobalFree(hMem);
return (FALSE);
}
NullbyteFound = TRUE;
i = pNull - p + 1;
if (CharSet == CS_EBCDIC) EbcdicConvert(pMem, p, i);
else if (WideCharConvert) {
MultiByteToWideChar(Codepage, 0, p, i, (WCHAR*)pMem, i);
pMem += i;
} else hmemcpy(pMem, p, i);
pMem += i;
Bytes -= --i;
Pos.i += i;
i = wsprintf(BinaryPart, BinaryFormat, Bytes);
if (WideCharConvert) {
MultiByteToWideChar(Codepage, 0, BinaryPart, i,
(WCHAR*)pMem, i);
pMem += i;
} else hmemcpy(pMem, BinaryPart, i);
pMem += i;
//.........这里部分代码省略.........
示例7: DoPaste
VOID
DoPaste(
IN PCONSOLE_INFORMATION Console
)
/*++
Perform paste request into old app by sucking out clipboard
contents and writing them to the console's input buffer
--*/
{
BOOL Success;
HANDLE ClipboardDataHandle;
if (Console->Flags & CONSOLE_SCROLLING) {
return;
}
//
// Get paste data from clipboard
//
Success = OpenClipboard(Console->hWnd);
if (!Success)
return;
if (Console->CurrentScreenBuffer->Flags & CONSOLE_TEXTMODE_BUFFER) {
PWCHAR pwstr;
ClipboardDataHandle = GetClipboardData(CF_UNICODETEXT);
if (ClipboardDataHandle == NULL) {
CloseClipboard(); // Close clipboard
return;
}
pwstr = GlobalLock(ClipboardDataHandle);
DoStringPaste(Console,pwstr,GlobalSize(ClipboardDataHandle));
GlobalUnlock(ClipboardDataHandle);
} else {
HBITMAP hBitmapSource,hBitmapTarget;
HDC hDCMemSource,hDCMemTarget;
BITMAP bm;
PSCREEN_INFORMATION ScreenInfo;
hBitmapSource = GetClipboardData(CF_BITMAP);
if (hBitmapSource) {
ScreenInfo = Console->CurrentScreenBuffer;
NtWaitForSingleObject(ScreenInfo->BufferInfo.GraphicsInfo.hMutex,
FALSE, NULL);
hBitmapTarget = CreateDIBitmap(ScreenInfo->Console->hDC,
&ScreenInfo->BufferInfo.GraphicsInfo.lpBitMapInfo->bmiHeader,
CBM_INIT,
ScreenInfo->BufferInfo.GraphicsInfo.BitMap,
ScreenInfo->BufferInfo.GraphicsInfo.lpBitMapInfo,
ScreenInfo->BufferInfo.GraphicsInfo.dwUsage
);
if (hBitmapTarget) {
hDCMemTarget = CreateCompatibleDC ( Console->hDC );
hDCMemSource = CreateCompatibleDC ( Console->hDC );
SelectObject( hDCMemTarget, hBitmapTarget );
SelectObject( hDCMemSource, hBitmapSource );
GetObjectW(hBitmapSource, sizeof (BITMAP), (LPSTR) &bm);
BitBlt ( hDCMemTarget, 0, 0, bm.bmWidth, bm.bmHeight,
hDCMemSource, 0, 0, SRCCOPY);
GetObjectW(hBitmapTarget, sizeof (BITMAP), (LPSTR) &bm);
// copy the bits from the DC to memory
GetDIBits(hDCMemTarget, hBitmapTarget, 0, bm.bmHeight,
ScreenInfo->BufferInfo.GraphicsInfo.BitMap,
ScreenInfo->BufferInfo.GraphicsInfo.lpBitMapInfo,
ScreenInfo->BufferInfo.GraphicsInfo.dwUsage);
DeleteDC(hDCMemSource);
DeleteDC(hDCMemTarget);
DeleteObject(hBitmapTarget);
InvalidateRect(Console->hWnd,NULL,FALSE); // force repaint
}
NtReleaseMutant(ScreenInfo->BufferInfo.GraphicsInfo.hMutex, NULL);
}
}
CloseClipboard();
return;
}
示例8: CopyToClipboard
bool EventDlg::CopyToClipboard(bool bAll, bool bHeaders)
{
const PTCHAR _cediteol = "\r\n";
if ( !OpenClipboard() )
{
AfxMessageBox( "Cannot open the Clipboard" );
return true;
}
// Remove the current Clipboard contents
if( !EmptyClipboard() )
{
AfxMessageBox( "Cannot empty the Clipboard" );
return true;
}
// Get the currently selected data
int nItem, j, tlen, headeroffset;
const int ic = m_List.GetItemCount();
CStringArray a;
a.SetSize(ic);
tlen = 0;
headeroffset = 0;
if (bHeaders)
{
CString s;
for (j = efhFacility; j < efhHeaderCount; j++)
{
UINT icol = j; // direct mapping from header id to header string
s.Append(CFDMSApp::GetFileHeader(CSVFileHeaderIDs(icol)));
s.AppendChar('\t');
}
s.Append(_cediteol);
a.SetAtGrow(0, s);
tlen += s.GetLength();
headeroffset = 1;
}
// now for the rows
for (nItem = 0; nItem < ic; nItem++)
{
if (!bAll && !m_List.GetItemState(nItem, LVIS_SELECTED))
continue;
CString s = m_List.GetItemText(nItem,0);
for (j = efhFacility; j < efhHeaderCount; j++)
{
if (j == efhDischMonth || j == efhDischYear) // blend of three columns into one
continue;
if (j == efhMeasMonth || j == efhMeasYear) // blend
continue;
UINT icol = ImpEditCol::m_fileheadermap[j];
if (j == efhDischDay) // build combined disch date
{
COleDateTime dt = m_List.GetDateTime(nItem, icol);
s.Append(dt.Format("%d\t%m\t%Y"));
}
else
if (j == efhMeasDay) // build combined meas date
{
COleDateTime dt = m_List.GetDateTime(nItem, icol);
s.Append(dt.Format("%d\t%m\t%Y"));
}
else
if (j == efhStatus) // get status from the related globals
{
s.Append("0"); // the status of all entries in an import dialog is always unmeasured
}
else
if (j == efhMeasType) // convert string to number from the item text
{
CString cs;
cs.Format("%d", tImageToMeasurementType(m_List.GetItemText(nItem,icol)));
s.Append(cs);
}
else
s.Append(m_List.GetItemText(nItem,icol));
s.AppendChar('\t');
}
s.Append(_cediteol);
a.SetAtGrow(nItem + headeroffset, s);
tlen += s.GetLength();
}
// Allocate a global memory object for the text.
LPTSTR lptstrCopy;
HGLOBAL hglbCopy;
hglbCopy = GlobalAlloc(GMEM_MOVEABLE,
(tlen + 1) * sizeof(TCHAR));
if (hglbCopy == NULL)
{
CloseClipboard();
return true;
}
// Lock the handle and copy the text to the buffer.
lptstrCopy = (LPSTR)GlobalLock(hglbCopy);
lptstrCopy[0] = (TCHAR) 0; // null character
for (nItem = 0; nItem < a.GetCount(); nItem++)
{
LPSTR b = a[nItem].GetBuffer();
//.........这里部分代码省略.........
示例9: MessageBox
void
CDynamoRIOView::OnEditCopystats()
{
if (m_ProcessList.GetCurSel() == 0) {
MessageBox(_T("No instance selected"), _T("Error"), MB_OK | MYMBFLAGS);
return;
}
if (!OpenClipboard()) {
MessageBox(_T("Error opening clipboard"), _T("Error"), MB_OK | MYMBFLAGS);
return;
}
EmptyClipboard();
#define CLIPBOARD_BUFSZ USHRT_MAX
TCHAR buf[CLIPBOARD_BUFSZ];
TCHAR *pos = buf;
if (m_selected_pid > 0) {
if (m_stats != NULL) {
pos += _stprintf(pos, _T("Process id = %d\r\n"),
m_stats->process_id);
pos += _stprintf(
pos, _T("Process name = %") ASCII_PRINTF _T("\r\n"),
m_stats->process_name);
pos += _stprintf(pos, _T("Status = %s\r\n"),
m_Exited.GetBuffer(0));
#ifndef DRSTATS_DEMO
pos += _stprintf(pos, _T("Log mask = %s\r\n"),
m_LogMask.GetBuffer(0));
pos += _stprintf(pos, _T("Log level = %s\r\n"),
m_LogLevel.GetBuffer(0));
pos += _stprintf(pos, _T("Log file = %s\r\n"),
m_LogDir.GetBuffer(0));
#endif
pos += _stprintf(pos, _T("\r\nSTATS\r\n"));
uint i;
for (i = 0; i < m_stats->num_stats; i++) {
if (pos >= &buf[STATS_BUFSZ - STAT_NAME_MAX_LEN * 2])
break;
// FIXME: Filter here too
pos += PrintStat(pos, i, TRUE /*filter*/);
assert(pos < &buf[STATS_BUFSZ - 1]);
}
} else {
CString pname;
m_ProcessList.GetLBText(m_ProcessList.GetCurSel(), pname);
_stprintf(pos, _T("%s"), pname.GetString());
pos += _tcslen(pos);
}
}
if (m_clientStats != NULL) {
pos += PrintClientStats(pos, &buf[STATS_BUFSZ - 1]);
}
size_t len = _tcslen(buf);
// Allocate a global memory object for the text.
HGLOBAL hglbCopy = GlobalAlloc(GMEM_DDESHARE, (len + 1) * sizeof(TCHAR));
if (hglbCopy == NULL) {
CloseClipboard();
return;
}
// Lock the handle and copy the text to the buffer.
LPTSTR lptstrCopy = (LPTSTR)GlobalLock(hglbCopy);
memcpy(lptstrCopy, buf, (len + 1) * sizeof(TCHAR));
lptstrCopy[len] = (TCHAR)0; // null TCHARacter
GlobalUnlock(hglbCopy);
// Place the handle on the clipboard.
SetClipboardData(
#ifdef UNICODE
CF_UNICODETEXT,
#else
CF_TEXT,
#endif
hglbCopy);
CloseClipboard();
}
示例10: SetDlgOutlineTextSp
void SetDlgOutlineTextSp(HWND hDlg,const int *idArray,const int *editWndArray)
{
if(!OpenClipboard(hDlg))
{
AfxMessageBox(_T("clipboard fail!"));
return;
}
UINT cfMp3Infp = RegisterClipboardFormat(CF_MP3INFP);
HANDLE hText = GetClipboardData(cfMp3Infp);
if(!hText)
{
return;
}
char *txtData = (char *)GlobalLock(hText);
if(!txtData)
{
return;
}
int readOffset = 0;
while(*(int *)(&(txtData[readOffset])))
{
int id = *(int *)(&(txtData[readOffset]));
readOffset += sizeof(int);
int len = *(int *)(&(txtData[readOffset]));
readOffset += sizeof(int);
if(id != -1)
{
for(int i=0; idArray[i]!=0; i++)
{
if(idArray[i] == id)
{
HWND hwnd = GetDlgItem(hDlg,editWndArray[i]);
LPCTSTR szTxt = (LPCTSTR)&(txtData[readOffset]);
if(!IsButton(hwnd))
{
// Edit or ComboBox
if(GetWindowStyle(hwnd) & CBS_DROPDOWNLIST)
{
// TODO: Do we need to check the window class?
ComboBox_SelectString(hwnd, 0, szTxt);
}
else
{
SetWindowText(hwnd, szTxt);
}
}
else
{
// Checkbox
int val = _ttoi(szTxt) ? 1 : 0;
CheckDlgButton(hDlg,editWndArray[i],val);
}
break;
}
}
}
readOffset += (len + 1) * sizeof(TCHAR);
}
GlobalUnlock(hText);
CloseClipboard();
}
示例11: winProcSetSelectionOwner
//.........这里部分代码省略.........
* clipboard manager then it should be marked as unowned since
* we will be taking ownership of the Win32 clipboard.
*/
if (g_iClipboardWindow == s_iOwners[CLIP_OWN_PRIMARY])
s_iOwners[CLIP_OWN_PRIMARY] = None;
if (g_iClipboardWindow == s_iOwners[CLIP_OWN_CLIPBOARD])
s_iOwners[CLIP_OWN_CLIPBOARD] = None;
/*
* Handle case when selection is being disowned,
* WM_DRAWCLIPBOARD did not do the disowning,
* both monitored selections are no longer owned,
* an owned to not owned transition was detected,
* and we currently own the Win32 clipboard.
*/
if (None == stuff->window
&& g_iClipboardWindow != client->lastDrawableID
&& (None == s_iOwners[CLIP_OWN_PRIMARY]
|| g_iClipboardWindow == s_iOwners[CLIP_OWN_PRIMARY])
&& (None == s_iOwners[CLIP_OWN_CLIPBOARD]
|| g_iClipboardWindow == s_iOwners[CLIP_OWN_CLIPBOARD])
&& fOwnedToNotOwned
&& g_hwndClipboard != NULL
&& g_hwndClipboard == GetClipboardOwner ())
{
#if 0
ErrorF ("winProcSetSelectionOwner - We currently own the "
"clipboard and neither the PRIMARY nor the CLIPBOARD "
"selections are owned, releasing ownership of Win32 "
"clipboard.\n");
#endif
/* Release ownership of the Windows clipboard */
OpenClipboard (NULL);
EmptyClipboard ();
CloseClipboard ();
/* Clear X selection ownership (might still be marked as us owning) */
s_iOwners[CLIP_OWN_PRIMARY] = None;
s_iOwners[CLIP_OWN_CLIPBOARD] = None;
goto winProcSetSelectionOwner_Done;
}
/* Abort if no window at this point */
if (None == stuff->window)
{
#if 0
ErrorF ("winProcSetSelectionOwner - No window, returning.\n");
#endif
goto winProcSetSelectionOwner_Done;
}
/* Abort if invalid selection */
if (!ValidAtom (stuff->selection))
{
ErrorF ("winProcSetSelectionOwner - Found BadAtom, aborting.\n");
goto winProcSetSelectionOwner_Done;
}
/* Cast Window to Drawable */
pDrawable = (DrawablePtr) pWindow;
/* Abort if clipboard manager is owning the selection */
if (pDrawable->id == g_iClipboardWindow)
{
示例12: prn_to_clipboard
int prn_to_clipboard (PRN *prn, int fmt)
{
char *buf = gretl_print_steal_buffer(prn);
char *modbuf = NULL;
int rtf_format = 0;
int err = 0;
if (buf == NULL || *buf == '\0') {
errbox(_("Copy buffer was empty"));
return 0;
}
if (!OpenClipboard(NULL)) {
errbox(_("Cannot open the clipboard"));
return 1;
}
if (fmt == GRETL_FORMAT_RTF || fmt == GRETL_FORMAT_RTF_TXT) {
rtf_format = 1;
}
EmptyClipboard();
err = maybe_post_process_buffer(buf, fmt, W_COPY, &modbuf);
if (!err) {
HGLOBAL winclip;
LPTSTR ptr;
unsigned clip_format;
gunichar2 *ubuf = NULL;
char *winbuf;
glong wrote = 0;
size_t sz;
winbuf = modbuf != NULL ? modbuf : buf;
if (!rtf_format && !gretl_is_ascii(winbuf)) {
/* for Windows clipboard, recode UTF-8 to UTF-16 */
ubuf = g_utf8_to_utf16(winbuf, -1, NULL, &wrote, NULL);
}
if (ubuf != NULL) {
sz = (wrote + 1) * sizeof(gunichar2);
} else {
sz = strlen(winbuf) + 1;
}
winclip = GlobalAlloc(GMEM_MOVEABLE, sz);
ptr = GlobalLock(winclip);
if (ubuf != NULL) {
memcpy(ptr, ubuf, sz);
} else {
memcpy(ptr, winbuf, sz);
}
GlobalUnlock(winclip);
if (ubuf != NULL) {
clip_format = CF_UNICODETEXT;
} else if (rtf_format) {
clip_format = RegisterClipboardFormat("Rich Text Format");
} else if (fmt == GRETL_FORMAT_CSV) {
clip_format = RegisterClipboardFormat("CSV");
} else {
clip_format = CF_TEXT;
}
SetClipboardData(clip_format, winclip);
if (ubuf != NULL) {
g_free(ubuf);
}
}
CloseClipboard();
free(buf);
free(modbuf);
return err;
}
示例13: StringFromClipboard
/**
* Function that attempts to retrieve a string from the O/S clipboard
* If this functionality is not implemented for you O/S or if it fails then
* OSWRAP_FALSE will be returned. Otherwise OSWRAP_TRUE will be returned.
* It is assumed that dest has points to size number of allocated bytes.
* The actual number of bytes written into the destination buffer is
* written into wbytes. If you wish to retrieve all text on the clipboard
* you might want to continue calling this function as long as wbytes
* equals size. Do note that any other proccess can empty the clipboard
* in between calls.
*/
UInt32
StringFromClipboard( char *dest ,
UInt32 size ,
UInt32 *wbytes )
{
#ifdef GUCEF_MSWIN_BUILD
HWND whandle = GetCurrentHWND();
HGLOBAL hglb;
UInt32 success = OSWRAP_FALSE;
#ifdef SDL_SUPPORT
SDL_SysWMinfo winfo;
#endif /* SDL_SUPPORT */
if ( IsClipboardFormatAvailable( CF_TEXT ) )
{
/*
* Open the clipboard with the current task as the owner
*/
if ( !OpenClipboard( whandle ) ) return OSWRAP_FALSE;
/*
* Get a pointer to the data using the global handle we will
* obtain if possible. Then copy the data pointed to by the handle
* into the buffer provided by the user
*/
hglb = GetClipboardData( CF_TEXT );
if ( hglb != NULL )
{
LPTSTR lptstr = (LPTSTR) GlobalLock( hglb );
if ( lptstr != NULL )
{
UInt32 offset = *wbytes;
UInt32 dsize = (UInt32) strlen( lptstr );
if ( dsize > offset )
{
dsize -= offset;
if ( dsize > size-1 ) dsize = size-1;
strncpy( dest, lptstr+offset, dsize );
*wbytes += dsize;
success = OSWRAP_TRUE;
}
GlobalUnlock( hglb );
}
else
{
*wbytes = 0;
}
}
/*
* Close the clipboard so that other tasks have access again
*/
CloseClipboard();
return success;
}
return OSWRAP_FALSE;
#else /* GUCEF_MSWIN_BUILD */
return OSWRAP_FALSE;
#endif /* OS WRAPPING */
}
示例14: StringToClipboard
UInt32
StringToClipboard( const char *str )
{
#ifdef GUCEF_MSWIN_BUILD
if ( str )
{
UInt32 strlength = (UInt32) strlen( str );
HWND whandle = GetCurrentHWND();
UInt32 success = OSWRAP_FALSE;
HGLOBAL hglbcopy;
LPTSTR lptstrcopy;
/*
* Open the clipboard with the current task as the owner
*/
if ( !OpenClipboard( whandle ) ) return OSWRAP_FALSE;
/*
* Try to empty the clipboard so that we can get ownership of the
* clipboard which is needed for placing data on it.
*/
EmptyClipboard();
/*
* Allocate global MS windows managed memory for the text
*/
hglbcopy = GlobalAlloc( GMEM_MOVEABLE ,
(strlength+1) * sizeof(TCHAR) );
if ( hglbcopy == NULL )
{
CloseClipboard();
return OSWRAP_FALSE;
}
/*
* Now we have to lock the memory we just allocated so that
* windows keeps it's paws off of it. After that we can copy
* our text into the global memory buffer
*/
lptstrcopy = (LPTSTR) GlobalLock( hglbcopy );
memcpy( lptstrcopy, str, strlength+1 );
GlobalUnlock( hglbcopy );
/*
* We now attempt to set the string in the clipboard.
* This will fail if the handle we used in OpenClipboard() is
* NULL or incorrect.
*/
if ( SetClipboardData( CF_TEXT, hglbcopy ) )
{
success = OSWRAP_TRUE;
}
else
{
success = OSWRAP_FALSE;
}
/*
* Close the clipboard so that other tasks have access again
*/
CloseClipboard();
return success;
}
return OSWRAP_FALSE;
#else /* GUCEF_MSWIN_BUILD */
return OSWRAP_FALSE;
#endif /* OS WRAPPING */
}
示例15: Window_SetIcon_IcoLib
void CJabberDlgGcJoin::OnInitDialog()
{
CSuper::OnInitDialog();
Window_SetIcon_IcoLib(m_hwnd, g_GetIconHandle(IDI_GROUP));
JabberGcRecentInfo *pInfo = NULL;
if (m_jid)
pInfo = new JabberGcRecentInfo(m_proto, m_jid);
else if (OpenClipboard(m_hwnd)) {
HANDLE hData = GetClipboardData(CF_UNICODETEXT);
if (hData) {
TCHAR *buf = (TCHAR *)GlobalLock(hData);
if (buf && _tcschr(buf, _T('@')) && !_tcschr(buf, _T(' ')))
pInfo = new JabberGcRecentInfo(m_proto, buf);
GlobalUnlock(hData);
}
CloseClipboard();
}
if (pInfo) {
pInfo->fillForm(m_hwnd);
delete pInfo;
}
ptrT tszNick(m_proto->getTStringA("Nick"));
if (tszNick == NULL)
tszNick = JabberNickFromJID(m_proto->m_szJabberJID);
SetDlgItemText(m_hwnd, IDC_NICK, tszNick);
TEXTMETRIC tm = { 0 };
HDC hdc = GetDC(m_hwnd);
GetTextMetrics(hdc, &tm);
ReleaseDC(m_hwnd, hdc);
sttTextLineHeight = tm.tmHeight;
SendDlgItemMessage(m_hwnd, IDC_ROOM, CB_SETITEMHEIGHT, -1, sttTextLineHeight - 1);
LOGFONT lf = { 0 };
HFONT hfnt = (HFONT)SendDlgItemMessage(m_hwnd, IDC_TXT_RECENT, WM_GETFONT, 0, 0);
GetObject(hfnt, sizeof(lf), &lf);
lf.lfWeight = FW_BOLD;
SendDlgItemMessage(m_hwnd, IDC_TXT_RECENT, WM_SETFONT, (WPARAM)CreateFontIndirect(&lf), TRUE);
SendDlgItemMessage(m_hwnd, IDC_BOOKMARKS, BM_SETIMAGE, IMAGE_ICON, (LPARAM)m_proto->LoadIconEx("bookmarks"));
SendDlgItemMessage(m_hwnd, IDC_BOOKMARKS, BUTTONSETASFLATBTN, TRUE, 0);
SendDlgItemMessage(m_hwnd, IDC_BOOKMARKS, BUTTONADDTOOLTIP, (WPARAM)"Bookmarks", 0);
SendDlgItemMessage(m_hwnd, IDC_BOOKMARKS, BUTTONSETASPUSHBTN, TRUE, 0);
m_proto->ComboLoadRecentStrings(m_hwnd, IDC_SERVER, "joinWnd_rcSvr");
int i;
for (i = 0; i < 5; i++) {
TCHAR jid[JABBER_MAX_JID_LEN];
JabberGcRecentInfo info(m_proto);
if (!info.loadRecent(i))
break;
mir_sntprintf(jid, _T("%[email protected]%s (%s)"), info.m_room, info.m_server, info.m_nick ? info.m_nick : TranslateT("<no nick>"));
SetDlgItemText(m_hwnd, IDC_RECENT1 + i, jid);
}
sttJoinDlgShowRecentItems(m_hwnd, i);
}