当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

把其它程序(如网页等)的文字拖放到Memo里

    需要用 COM 接口的 OLE 拖放目标, 程序新建一个支持拖放目标的UnitTMyDropTarget 单元, 在这个单元里创建一个 TMyDropTarget 类。
    这个程序可以使从写字板或者网页等定义的文本块用鼠标拖动, 放到程序的 Memo 里, 插入到 Memo 的拖放的位置。

    首先看看如何使用这个 TMyDropTarget 类:
    在 Form 的头文件里 (例如 Unit1.h) 需要增加的内容(蓝色部分是新增内容):
    #include "UnitTMyDropTarget.h"

    class TForm1 : public TForm
    {
    private: // User declarations
        TMyDropTarget *DropMemo1; //自定义的拖放目标类
        void __fastcall DropMemo1Text(IDropTarget *Sender, AnsiString AText, DWord KeyState, TPoint pt); //拖放事件
    public: // User declarations
        __fastcall TForm1(TComponent* Owner);
        __fastcall ~TForm1();
    };

    在 From 的 .cpp 文件里 (例如 Unit1.cpp), 需要增加的内容(蓝色部分是新增内容):

    __fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
    {
        OleInitialize(NULL);
        DropMemo1 = new TMyDropTarget(Memo1);
        DropMemo1->OnProcessText = DropMemo1Text;
    }
    //---------------------------------------------------------------------------
    __fastcall TForm1::~TForm1()
    {
        DropMemo1->Release();//delete DropMemo1;
        OleUninitialize();
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::DropMemo1Text(IDropTarget *Sender, AnsiString AText, DWORD KeyState, TPoint pt)
    {
        POINTS p={pt.x,pt.y};
        *(long*)&p=SendMessage(Memo1->Handle,EM_CHARFROMPOS,0,*(long*)&p);

共3页 首页 上一页 1 2 3 下一页 尾页 跳转到
相关内容
赞助商链接