请问:在用TRichEdit 控件编程的时候,怎样识别“拖拽文本”的操作?(100分)

  • 主题发起人 主题发起人 SparkV
  • 开始时间 开始时间
S

SparkV

Unregistered / Unconfirmed
GUEST, unregistred user!
   我在做一个基于TRichEdit 控件的文本编辑程序的时候,需要能够识别出所有的文本编辑操作,其中的大部分都已经实现了,唯一就差“文本拖拽”操作不知从何下手(我说的文本拖拽,指的是从外部程序的窗口中拖拽文字到我的程序中的RichEdit 控件中的这种操作)。我开始的想法是是不是当进行这种操作的时候,Windows 会发送某个消息,然后处理这个消息就行了。可是我翻看了半天Win32API 编程手册,都没有理出个头绪来,希望各位大侠老鸟不吝赐教啊,谢谢啦!
 
看看delphix/demos/richedit/下的例子.<br>处理wm_dropfiles消息
 
wm_dropfiles<br>楼上的这个消息是拖放文件的消息<br>在 IRichEditOle(好像是这么叫,具体忘了)这个接口里有处理拖放的过程
 
文本啊,用OLE Drag and Drop技术。实现IDropSource、IDropTarget这两个接口便可以方便的实现OLE Drag and Drop,前者由允许拖放数据的数据源程序实现,后者由允许接收拖放数据的数据目标程序所实现。
 
呵呵,谢谢wfzha和boot.ini啊,不过两位好像误会了,我想知道的是如何在发生这种操作的时候及时地处理它并获得相关的信息,说得更具体一点就是,该操作一共拖进了多少文本(字节数)、插入的位置在哪里?
 
&nbsp;所有的richedit都会有一个接口,主要是用于对于riched20.dll的回调接口, 里面有一个函数。这个类是从richedit98里找来的所以可能与richedit里面的接口名称不一样<br>&nbsp; TRichEditOleCallback = class(TInterfacedObject, IRichEditOleCallback)<br>&nbsp; protected<br>&nbsp; &nbsp; function GetDragDropEffect(fDrag: BOOL; grfKeyState: DWORD;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var dwEffect: DWORD): HRESULT; stdcall;<br>&nbsp; &nbsp; // 上面这个事件就是richedit发生任何拖动时的函数在这里处理就好啦<br>&nbsp; end;<br><br>
 
TO boot.ini:我正在研究你的的方法,虽然还不是很明白是怎么回事,但还是十分感谢你的回答,以后要是还有什么问题,还需要请教你,请领分~
 
后退
顶部