急如何得到系统剪切板中的内容,,急急急急急急急 1000 分,来者有分如何得到系统剪切板中的内容,,急急急急急急急 1000 分,来者有分最好放到一个位图对象中最好放到一个位图对象中

解决方案 »

  1.   

    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();

    }
    }
      

  2.   

    if(OpenClipboard())
    这个函数如果在CForm类的函数中调用是得到的系统剪切板中的内容吗???
      

  3.   

    msdn->目录-》platform sdk->win32 api->reference->function by category->clipboard function
      

  4.   

    注:这是从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的指标,以後程式的使用者就可以用它来复制文字了。
      

  5.   

    摆脱大家,,我只想得到系统 系统 系统 是系统剪切板中的内容比如用WINDOWS自己的PRINTSCREEN键得到的屏幕内容,它肯定放到系统剪切板中了,,我只想得到这块内存(或成为位图句柄)怎么办啊
      

  6.   

    我这段代码就是得到系统位图句柄是已经测试过的
    得到是HBITMAP以及HPALETTE
      

  7.   

    那我怎么得到位图信息呀,比如宽和高,怎么显示出来,在我的应用程序中不是在WINDOWS的画板之类的工具中有EMAIL吗,