在 VFP 中,凡遇图形处理,大多数情况下,都会涉及到图形文件与剪切板互换的情况。下面给出利用 API 解决的方法。这是原来从网上摘下来的,版权归原作者。
基本处理的代码如下,你可以将其应用到你的代码中。

DECLARE INTEGER OpenClipboard               IN User32 INTEGER
DECLARE INTEGER CloseClipboard              IN User32
DECLARE INTEGER EmptyClipboard              IN User32
DECLARE INTEGER SetClipboardData            IN User32 INTEGER,INTEGER
DECLARE INTEGER LoadImage                   IN WIN32API INTEGER,String,INTEGER,INTEGER,INTEGER,INTEGER
DECLARE INTEGER GetClipboardData            IN User32 INTEGER
DECLARE INTEGER GdipCreateBitmapFromHBITMAP IN GdiPlus.dll INTEGER, INTEGER, INTEGER @
DECLARE INTEGER GdipSaveImageToFile         IN GdiPlus.dll INTEGER,String,String @,String @
DECLARE Long    GdipCreateHBITMAPFromBitmap IN GDIPLUS.DLL Long nativeImage, Long @, Long
DECLARE Long    GdipCreateBitmapFromFile    IN GDIPLUS.DLL String FileName, Long @nBitmap
DECLARE Long    CopyImage                   IN WIN32API Long hImage, Long, Long, Long , Long

#Define CF_BITMAP 2
#Define CF_DIB 8
#Define IMAGE_BITMAP 0
#Define LR_LOADFROMFILE 16

*1.将图形文件保存到剪切板
nBitmap=0
hbm=0
imagefile='图形文件名'
GdipCreateBitmapFromFile(STRCONV(imagefile+0h00,5),@nBitmap)
GdipCreateHBITMAPFromBitmap(nBitmap,@hbm,0)
lhBmp = CopyImage(hbm, 0, 0, 0, 0)
IF OpenClipboard(0)!= 0
   EmptyClipboard()
   SetClipboardData(CF_BITMAP, lhBmp)
   CloseClipboard()
ENDIF

*2.将剪切板图形保存到本地
OpenClipboard(0)
hBitmap = GetClipboardData(CF_BITMAP)
hDib = GetClipboardData(CF_DIB)
CloseClipboard()
uBitmap=0
GdipCreateBitmapFromHBITMAP(hBitmap,2,@uBitmap)
lcOutputFile=STRCONV('C:\_Temp1.jpg'+CHR(0),5)
*!* lqEncoderClsID_BMP=0h00F47C55041AD3119A730000F81EF32E &&BMP格式
lqEncoderClsID_JPG=0h01F47C55041AD3119A730000F81EF32E &&JPG格式
*!* lqEncoderClsID_GIF=0h02F47C55041AD3119A730000F81EF32E &&GIF格式
*!* lqEncoderClsID_TIF=0h05F47C55041AD3119A730000F81EF32E &&TIF格式
*!* lqEncoderClsID_PNG=0h06F47C55041AD3119A730000F81EF32E &&PNG格式
GdipSaveImageToFile(uBitmap,lcOutputFile,lqEncoderClsID_JPG,NULL)

VFP 图形文件与剪切板互换的API解决方法的更多相关文章

  1. Flash10下复制到剪切板的一种新方法

    web开发中常常要实现“复制到剪切板”功能.这个功能很实用,但是由于安全问题,浏览器的限制越来越严,实现的方法也越来越有限了.Firefox默认下不能直接通过Javascript操作剪切板,必须开启相 ...

  2. 【Windows API】OpenClipboard --- 剪切板(转)

    原文转自 http://www.cnblogs.com/wind-net/archive/2012/11/01/2749558.html 剪切板:系统维护的一个全局公共内存区域.每次只允许一个进程对其 ...

  3. Android 高仿UC浏览器监控剪切板弹出悬浮窗功能

    UC浏览器应该是android手机里 最流行的浏览器之一了,他们有一个功能 相信大家都体验过,就是如果你复制了什么文字,(在其他app中 复制也有这个效果!,所以能猜到肯定是监控了剪切板),就会弹出一 ...

  4. 剪切板 复制文本 ClipboardManager

    代码 public class MainActivity extends ListActivity {     private EditText tv_info;     private Clipbo ...

  5. android实现文本复制到剪切板功能(ClipboardManager)

    Android也有剪切板(ClipboardManager),可以复制一些有用的文本到剪贴板,以便用户可以粘贴的地方使用,下面是使用方法   注意:导包的时候 API 11之前: android.te ...

  6. Android剪切板(ClipboardManager) 复制文本

    Android也有剪切板(ClipboardManager) 注意:导包的时候 API 11之前:  android.text.ClipboardManagerAPI 11之后:  android.c ...

  7. ASP.NET MVC实现剪切板功能

    前言 关于复制粘贴的功能,好像不用劳师动众的写后端代码,JS就可以,但正如大家所知道的,兼容性问题,当然这么通用的功能怎么可能没有一个通用的方案呢,于是便找到了一款jquery插件 jquery.cl ...

  8. js复制内容到剪切板,兼容pc和手机端,支持Safari浏览器

      最近,一些项目中用到监听用户复制.剪切的操作. 案例1.在PC端,当用户获得一个京东卡的使用券,当用户使用ctrl + C复制得到的使用券时,将使用券的代号复制到粘贴板,以便于用户ctrl+v进行 ...

  9. C#操作剪切板(Clipboard)

    剪切板是Windows系统提供的功能,从我最早接触到的Windows 3.2版本开始,就一直带着了.以前使用C++的时候,是直接使用Windows API对其进行操作的,到了.NET下,在WinFor ...

随机推荐

  1. Spring Cloud 如何动态刷新 Git 仓库配置?

    有时候在配置中心有些参数是需要修改的,这时候如何不重启而达到实时生效的效果呢? 本文基于以下讲解: Spring Cloud Greenwich.SR3 Spring Boot 2.1.7.RELEA ...

  2. 基于Saltstack、Artifactory打造传统模式下持续部署平台

    一.持续部署 1. 现状 由于没有建立标准的持续部署流程,导致了版本管理混乱,制品管理混乱,上线持续时间长,上线测试覆盖不全面,业务流量上升后故障较多,排查复杂.运维.测试.开发人员每次版本迭代的时候 ...

  3. 七牛云上传视频并截取第一帧为图片(js实现)

    本文出自APICloud官方论坛, 感谢论坛版主 东冥羽的分享. 七牛云上传视频并截取第一帧作为视频的封面图. 使用js上传,模块videoPlayer截取第一帧(有专门的截图模块,但是我使用的有点问 ...

  4. cogs 1963. [HAOI 2015] 树上操作 树链剖分+线段树

    1963. [HAOI 2015] 树上操作 ★★★☆   输入文件:haoi2015_t2.in   输出文件:haoi2015_t2.out   简单对比时间限制:1 s   内存限制:256 M ...

  5. Linux删除文件 清除缓存

    相信很多测试 经常会经历开发叫你清除缓存这种事. 那我们要怎么清呢? 一.首先,确认你要清除的缓存在哪个目录下,然后切换到该目录下,比如 我现在知道我的的缓存目录是在newerp这个目录下,则如图 二 ...

  6. 【Tool】---SVN的超级简单并具体得使用介绍

    又一次被打脸,笔者表示再也不相信自己的记性了.简单的SVN隔了一段时间后,由于项目的需要要重新简历代码库,竟然一下子又忘了.天那,这就好比战士上了战场发现没带枪,这能行吗?因此,趁着今天又简短的复习了 ...

  7. java jvm jre jdk三者的关系

    jvm:java虚拟机器(跨平台的关键) jre:java运行环境 jdk:java 开发工具包(kit) jdk>jre>jvm 环境变量配置 https://www.cnblogs.c ...

  8. [bzoj2115] [洛谷P4151] [Wc2011] Xor

    Description Input 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ,Di,表示 Si 与Ti之间存在 一条权值为 ...

  9. (转) fuzzing XSS filter

    //转自isno在wooyun知识库所写 题记:这是09年自己写的总结文章,之后多年也不搞这个了,技术显然是过时了,但我觉得思路还是有用的,算抛砖引玉吧,各位见笑 0x00 前言 这是一篇学习总结,首 ...

  10. 每天敲一点code

    下面这段代码摘自 <C#并发编程经典实例> 并行LINQ static IEnumerable<int> MultiplyBy2(IEnumerable<int> ...