如何得到系统剪切板中的内容,,急急急急急急急 1000 分,来者有分 急如何得到系统剪切板中的内容,,急急急急急急急 1000 分,来者有分如何得到系统剪切板中的内容,,急急急急急急急 1000 分,来者有分最好放到一个位图对象中最好放到一个位图对象中 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 if(OpenClipboard()) { if(::IsClipboardFormatAvailable(CF_BITMAP)){//得到位图 HBITMAP hNewDDB = NULL; HPALETTE hPal = NULL; hNewDDB = (HBITMAP)GetClipboardData(CF_BITMAP); if (::IsClipboardFormatAvailable(CF_PALETTE)) hPal = (HPALETTE)GetClipboardData(CF_PALETTE); CloseClipboard(); } } if(OpenClipboard())这个函数如果在CForm类的函数中调用是得到的系统剪切板中的内容吗??? msdn->目录-》platform sdk->win32 api->reference->function by category->clipboard function 注:这是从windows程序设计中抄下的从剪贴簿上取得文字 从剪贴簿上取得文字只比把文字传送到剪贴簿上稍微复杂一些。您必须首先确定剪贴簿是否含有CF_TEXT格式的资料,最简单的方法是呼叫bAvailable = IsClipboardFormatAvailable (CF_TEXT) ;如果剪贴簿上含有CF_TEXT资料,这个函式将传回TRUE(非零)。我们在第十章的POPPAD2程式中已使用了这个函式,用它来确定「Edit」功能表中「Paste」项是被启用还是被停用的。IsClipboardFormatAvailable是少数几个不需先打开剪贴簿就可以使用的剪贴簿函式之一。但是,如果您之後想再打开剪贴簿以取得这个文字,就应该再做一次检查(使用同样的函式或其他方法),以便确定CF_TEXT资料是否仍然留在剪贴簿中。为了传送出文字,首先打开剪贴簿:OpenClipboard (hwnd) ;会得到代表文字的记忆体块代号:hGlobal = GetClipboardData (CF_TEXT) ;如果剪贴簿不包含CF_TEXT格式的资料,此代号就为NULL。这是确定剪贴簿是否含有文字的另一种方法。如果GetClipboardData传回NULL,则关闭剪贴簿,不做其他任何工作。从GetClipboardData得到的代号并不属於使用者程式-它属於剪贴簿。仅在GetClipboardData和CloseClipboard呼叫之间这个代号才有效。您不能释放这个代号或更改它所引用的资料。如果需要继续存取这些资料,必须制作这个记忆体块的副本。这里有一种将资料复制到使用者程式中的方法。首先,配置一块与剪贴簿资料块大小相同的记忆体块,并配置一个指向该块的指标:pText = (char *) malloc (GlobalSize (hGlobal)) ;再次呼叫hGlobal ,而hGlobal是从GetClipboardData呼叫传回的整体代号。现在锁定代号,获得一个指向剪贴簿块的指标:pGlobal = GlobalLock (hGlobal) ;现在就可以复制资料了:strcpy (pText, pGlobal) ;或者,您可以使用一些简单的C程式码:while (*pText++ = *pGlobal++) ;在关闭剪贴簿之前先解锁记忆体块:GlobalUnlock (hGlobal) ;CloseClipboard () ;现在您有了一个叫做pText的指标,以後程式的使用者就可以用它来复制文字了。 摆脱大家,,我只想得到系统 系统 系统 是系统剪切板中的内容比如用WINDOWS自己的PRINTSCREEN键得到的屏幕内容,它肯定放到系统剪切板中了,,我只想得到这块内存(或成为位图句柄)怎么办啊 我这段代码就是得到系统位图句柄是已经测试过的得到是HBITMAP以及HPALETTE 那我怎么得到位图信息呀,比如宽和高,怎么显示出来,在我的应用程序中不是在WINDOWS的画板之类的工具中有EMAIL吗, 真的一分也没了,关于对话框关闭的问题 ,希望有好心人看看 if (!ProcessShellCommand(cmdInfo))起什么作用? 关于OnPaint与OnDraw 哪有VC的简装版 怎样处理CLongBinary内的内存句柄 100分请教对话框程序的界面问题,分不够可以加。 怎么传输一个int型和COLORREF型的数据? 关于瘟98 float和double用什么VT类型来表示呢? 对光驱使用的控制问题 极其简单的问题,vc中过滤字符串中空格的函数是什么 请问一下多播技术主要用那些方面?
{
if(::IsClipboardFormatAvailable(CF_BITMAP)){//得到位图
HBITMAP hNewDDB = NULL;
HPALETTE hPal = NULL;
hNewDDB = (HBITMAP)GetClipboardData(CF_BITMAP);
if (::IsClipboardFormatAvailable(CF_PALETTE))
hPal = (HPALETTE)GetClipboardData(CF_PALETTE);
CloseClipboard();
}
}
这个函数如果在CForm类的函数中调用是得到的系统剪切板中的内容吗???
从剪贴簿上取得文字
从剪贴簿上取得文字只比把文字传送到剪贴簿上稍微复杂一些。您必须首先确定剪贴簿是否含有CF_TEXT格式的资料,最简单的方法是呼叫bAvailable = IsClipboardFormatAvailable (CF_TEXT) ;
如果剪贴簿上含有CF_TEXT资料,这个函式将传回TRUE(非零)。我们在第十章的POPPAD2程式中已使用了这个函式,用它来确定「Edit」功能表中「Paste」项是被启用还是被停用的。IsClipboardFormatAvailable是少数几个不需先打开剪贴簿就可以使用的剪贴簿函式之一。但是,如果您之後想再打开剪贴簿以取得这个文字,就应该再做一次检查(使用同样的函式或其他方法),以便确定CF_TEXT资料是否仍然留在剪贴簿中。为了传送出文字,首先打开剪贴簿:OpenClipboard (hwnd) ;
会得到代表文字的记忆体块代号:hGlobal = GetClipboardData (CF_TEXT) ;
如果剪贴簿不包含CF_TEXT格式的资料,此代号就为NULL。这是确定剪贴簿是否含有文字的另一种方法。如果GetClipboardData传回NULL,则关闭剪贴簿,不做其他任何工作。从GetClipboardData得到的代号并不属於使用者程式-它属於剪贴簿。仅在GetClipboardData和CloseClipboard呼叫之间这个代号才有效。您不能释放这个代号或更改它所引用的资料。如果需要继续存取这些资料,必须制作这个记忆体块的副本。这里有一种将资料复制到使用者程式中的方法。首先,配置一块与剪贴簿资料块大小相同的记忆体块,并配置一个指向该块的指标:pText = (char *) malloc (GlobalSize (hGlobal)) ;
再次呼叫hGlobal ,而hGlobal是从GetClipboardData呼叫传回的整体代号。现在锁定代号,获得一个指向剪贴簿块的指标:pGlobal = GlobalLock (hGlobal) ;
现在就可以复制资料了:strcpy (pText, pGlobal) ;
或者,您可以使用一些简单的C程式码:while (*pText++ = *pGlobal++) ;
在关闭剪贴簿之前先解锁记忆体块:GlobalUnlock (hGlobal) ;
CloseClipboard () ;
现在您有了一个叫做pText的指标,以後程式的使用者就可以用它来复制文字了。
得到是HBITMAP以及HPALETTE