1.MFC清除剪切板问题?
2.workflow怎么用 workflow使用教程
3.使用剪切板传递数据时必须先
MFC清除剪切板问题?
如果想完成功能,取剪切板那可以变通一下,源码如果检测到edit是剪切空的时候,让edit2清空。板代如果是取剪切板想看剪贴板操作问题:
VC 剪贴板操作
-- :
拷贝与粘贴文本
下边的源代码演示了如何将文本(包含在CString对象“source”中)拷贝到剪贴板上。
CString source;
//put your text in source
if(OpenClipboard())
{
HGLOBAL clipbuffer;
char * buffer;
EmptyClipboard();
clipbuffer = GlobalAlloc(GMEM_DDESHARE,源码现金贷款源码 source.GetLength()+1);
buffer = (char*)GlobalLock(clipbuffer);
strcpy(buffer, LPCSTR(source));
GlobalUnlock(clipbuffer);
SetClipboardData(CF_TEXT,clipbuffer);
CloseClipboard();
}
反过来,下面的剪切代码是用来实现从剪贴板上取得文本的。
char * buffer = NULL;
//open the clipboard
CString fromClipboard;
if ( OpenClipboard() )
{
HANDLE hData = GetClipboardData( CF_TEXT );
char * buffer = (char*)GlobalLock( hData );
fromClipboard = buffer;
GlobalUnlock( hData );
CloseClipboard();
}
拷贝与粘贴WMF(enhanced)数据
你想在你的板代程序中往剪贴板上“画”以及向剪贴板读取图形吗?请放心,这个――不难!取剪切板示范代码如下,源码其实现的剪切是往剪贴板上写一enhanced metafile。
if ( OpenClipboard() )
{
EmptyClipboard();
//create the metafile DC
CMetaFileDC * cDC = new CMetaFileDC();
cDC->CreateEnhanced(GetDC(),板代NULL,NULL,"the_name");
//call draw routine here that makes GDI calls int cDC
//close meta CMetafileDC and get its handle
HENHMETAFILE handle = cDC->CloseEnhanced();
//place it on the clipboard
SetClipboardData(CF_ENHMETAFILE,handle);
CloseClipboard();
//delete the dc
delete cDC;
}
好啦,该演示反过来怎么做的取剪切板兔年茅台溯源码代码了。我们从剪贴板上取得metafile并将其画到自己的源码应用程序的客户区DC(设备上下文)上(仅仅是个试验而已,实际上你可能更想将它拷贝一份儿)。剪切
if ( OpenClipboard() )
{
//Get the clipboard data
HENHMETAFILE handle = (HENHMETAFILE)GetClipboardData(CF_ENHMETAFILE);
//play it into a DC (our own DC in this example)
CClientDC dc(this);
CRect client(0,0,,);
dc.PlayMetaFile(handle,client);
//close the clipboard
CloseClipboard();
}
拷贝与粘贴一张位图(BitMap)
拷贝和粘贴位图可是需要一些微妙的处理的,不过基本的思想还是一样。请看下面的代码。
if ( OpenClipboard() )
{
EmptyClipboard();
//create some data
CBitmap * junk = new CBitmap();
CClientDC cdc(this);
CDC dc;
dc.CreateCompatibleDC(&cdc);
CRect client(0,0,,);
junk->CreateCompatibleBitmap(&cdc,client.Width(),client.Height());
dc.SelectObject(junk);
//call draw routine here that makes GDI calls
DrawImage(&dc,CString("Bitmap"));
//put the data on the clipboard
SetClipboardData(CF_BITMAP,junk->m_hObject);
CloseClipboard();
//copy has been made on clipboard so we can delete
delete junk;
}
如下示例代码是从剪贴板上取得一张位图,将它粘贴到客户区DC中。
if ( OpenClipboard() )
{
//Get the clipboard data
HBITMAP handle = (HBITMAP)GetClipboardData(CF_BITMAP);
CBitmap * bm = CBitmap::FromHandle(handle);
CClientDC cdc(this);
CDC dc;
dc.CreateCompatibleDC(&cdc);
dc.SelectObject(bm);
cdc.BitBlt(0,0,,,&dc,0,0,SRCCOPY);
CloseClipboard();
}
建立并使用你自己定做的数据格式
如果你要拷贝、粘贴其它格式的数据,可以用RegisterClipboardFormat() API函数先将此格式注册,然后就可以“为所欲为”了。这简直是博乐达源码拿货太有用了,尤其是在我们自己的应用程序中拷贝资料。假设我们有下面的结构:
struct MyFormatData
{
long val1;
int val2;
};
想将此结构的数据拷贝到剪贴板上。可以这样实现:
UINT format = RegisterClipboardFormat("MY_CUSTOM_FORMAT");
if(OpenClipboard())
{
//make some dummy data
MyFormatData data;
data.val1 = ;
data.val2 = ;
//allocate some global memory
HGLOBAL clipbuffer;
EmptyClipboard();
clipbuffer = GlobalAlloc(GMEM_DDESHARE, sizeof(MyFormatData));
MyFormatData * buffer = (MyFormatData*)GlobalLock(clipbuffer);
//put the data into that memory
*buffer = data;
//Put it on the clipboard
GlobalUnlock(clipbuffer);
SetClipboardData(format,clipbuffer);
CloseClipboard();
}
想把它从剪贴板上读下来的话,也容易:
//第二次调用时,此格式已经注册过了,读下来就行了
UINT format = RegisterClipboardFormat("MY_CUSTOM_FORMAT");
MyFormatData data;
if ( OpenClipboard() )
{
//get the buffer
HANDLE hData = GetClipboardData(format);
MyFormatData * buffer = (MyFormatData *)GlobalLock( hData );
//留一份儿当地拷贝
data = *buffer;
GlobalUnlock( hData );
CloseClipboard();
}
取得剪贴板变化通知(Getting notified of clipboard changes)
一旦剪贴板上的内容发生改变,我们都希望能够获知(经由windows消息),这是很有用的。你可以用函数SetClipboardViewer()来捕获WM_DRAWCLIPBOARD消息。
在你的初始化代码中调用:
SetClipboardViewer(); //add us to clipboard change notification chain
在你的消息映射(message map)中添加:
ON_MESSAGE(WM_DRAWCLIPBOARD, OnClipChange) //clipboard change notification
将其定义为:
afx_msg void OnClipChange(); //clipboard change notification
实现为:
void CDetectClipboardChangeDlg::OnClipChange()
{
//do something here, for example
CTime time = CTime::GetCurrentTime();
SetDlgItemText(IDC_CHANGED_DATE,time.Format("%a, %b %d, %Y -- %H:%M:%S"));
DisplayClipboardText();
}
将数据粘贴到其它应用程序窗口中的方法
我觉得如果能把文本拷贝到剪贴板上(参见上面的代码),然后再在另外一个应用程序中将这些文本粘贴过来,那样才有用。便民黄页114源码我写了一个很不错的本地应用程序,此程序使用了含有此技术的第三方的语言翻译包。很简单,仅是取得目标窗口的句柄,并向它发送“PASTE”消息就OK了。
SendMessage(m_hTextWnd, WM_PASTE, 0, 0);
workflow怎么用 workflow使用教程
如果你尚未听过Workflow,那么它是一款iOS平台的神级自动化流程应用。所谓「流程」,就是将各类任务(Actions)串联起来的流水线(Flow),就好比是一家工厂。这家工厂的任务可以有很多种,比如获取剪切板内容,完整软件库源码或是打开 app,播放歌曲等。若此时,我们以特定的触发条件和执行顺序,将这些单一的任务衔接起来,便可以组成形形色色的流水线。而一旦流水线装配完成后,你会惊奇地发现:任务们就像是被安置在了传送带上一样,流程们会自动地被传送至任意想到达的地点。
而Workflow就是其中这样一家大工厂,它不仅能帮助我们省去每次重复操作的过程,而且还能完成许多不可思议的任务。喂,你有意识到吗,这是一股「平民化」的编程浪潮!听上去很酷不?那就加入这支先锋队吧。
首次打开应用,Workflow会引导进入自带的一例入门教程 制作GIF。该流程的制作过程包括:
- 拖拽「拍照」与「制作 GIF」这两个 Actions 至右侧流程
- 选取拍照的张数,并点击「播放键」运行流程
说到到这儿,相信你会猛然明白Workflow其特有的鲜明之处了吧!
敲代码并不是人人都会,可作为智能手机用户,有谁不会拖拽和点击呢?
而且你得明白iOS平台可是一向以权限限制严格而著称,因此也只有像开发出Workflow这样的越狱天才才懂得如何用最精妙的方式,去在已有的规则下,完成不可思议之作。
以下,我们将从入门、进阶到最后罗列部分实例,来尝试覆盖Workflow一些常用或新奇的玩法。如果大家觉得不满足,可以提出建议和请求,我们后续也会有更新。但是请始终记住:
入手Workflow后最重要的一件事,应该是将所有的Actions和它们对应的用法全浏览个遍。
因为今后,你所有的新奇想法全会从这些 Actions 中迸发出。OK,话不多说,把玩开始!
入门
作为一款效率软件,如何使用Workflow因人而异,但总归也万变不离其宗 目的是去解决一个具体问题。因而,你得很清楚地知道自己需要完成何种目标,然后才能去具象化Workflow流程。
好比现在,我想要找一些绝美的壁纸,如何通过 Workflow 实现呢?其中一个思路就是通过 Unsplash 的随机API来获取精美。整个过程可包括三个任务动作:
- URL中填入/R4l2XJm
Save Webpage to PDF保存网页至 PDF:/R4l2NUK
Scan QR Code扫描二维码,若为网页则打开之:/R4l2p
Report Spam iMessage举报垃圾信息:/RZGGS
Get Network IP获取设备当前公网 IP 地址:/R4l2jDC
Combine Images横向拼接:/R4l2TXd
Astronomy Picture of the Day每日天文图:/R4l2HeE
Search Clipboard by Provider搜索剪切板:/R4leY
需求总是千变万化的,所以也恳请读者们尽可能地将自己的需求描述给我们听,而我们会尽可能的添加和完善Workflow分享社区(比如后面即将介绍给大家的BitTorrent Sync共享文件集)。
要知道,这个星球上从来都不缺乏创新,来自曼切斯特的岁学生两年前就开始了iOS应用的开发之路。这名学生今年岁,他生活在San Francisco,是一名地道的全平台开发者。而你,准备好用Workflow让手头的iOS设备闪闪发光了吗?
使用剪切板传递数据时必须先
使用剪切板在Activity之间传递对象数据,要用到一个特殊的类---Android.util.Base.Java,将对象转换成字符串,再在剪切板中放入要传递的数据,在接收端将字符串还原成对象,在把数据取出来,通过例子来看一下如何实现:
工程结构图:
运行结果如下:
MainActivity截图:
OtherActivity截图:
开始上源代码:
MainActivity.java:
[html] view plain copy print?
package com.intent.activity;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.text.ClipboardManager;
import android.util.Base;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button btn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button)findViewById(R.id.btOpenOtherActivity);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Person person = new Person("wulianghuan","");
//将对象转换成字符串
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
String baseString = "";
try {
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(person);
baseString = Base.encodeToString(byteArrayOutputStream.toByteArray(), Base.DEFAULT);
objectOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
//从Android系统中调用剪切板的服务
ClipboardManager clipboardManager = (ClipboardManager)
getSystemService(Context.CLIPBOARD_SERVICE);
//在剪切板中放入要传递的数据
clipboardManager.setText(baseString);
//定义一个意图
Intent intent = new Intent(MainActivity.this,OtherActivity.class);
startActivity(intent);
}
});
}
}