ON_WM_RENDERFORMAT()
MFC 消息映射
afx_msg void OnRenderFormat(UINT);
BEGIN_MESSAGE_MAP(CMFCApplication2Dlg, CDialogEx)
ON_WM_RENDERFORMAT()
END_MESSAGE_MAP()
用于剪贴板延迟处理。
此发此消息 SetClipboardData(CF_TEXT, NULL);
发现在.net 想实现 延迟粘贴,只要从IOjbectData 实现一个自定义类型,并且重写getdata接口。
在Clipborad.setdata时,将内容传为Null 在粘贴时就会主动调用 此objectdata的数据getdata函数提供数据。
public class DataObjectErist : DataObject{ public override object GetData(string format, bool autoConvert) { if (String.Compare(format, NativeMethods.CF_TEXT, StringComparison.OrdinalIgnoreCase) == 0 ) { objdata 为你要实际处理的类型的对象数据 base.SetData(NativeMethods.CFSTR_FILEDESCRIPTORW, objdata); return base.GetData(format, autoConvert); }} DataObjectErist.SetData(NativeMethods.CFSTR_FILEDESCRIPTORW, null); Clipboard.SetDataObject(dataObject);
最后由 CF_HDROP 转为 CFSTR_FILEDESCRIPTORW
在需要的时候 写入 FileContents 就可以完成整个任务。
为了监控监贴板内容变化,发现 得写 protected override void WndProc(ref Message m) 得不到消息,需要重写 protected override void DefWndProc(ref Message m)