クリック&ドラッグのイベント処理をC++Builder6でプログラミングする方法を教えて欲しいです。


「OnClick」や「OnMouseMove」の処理は分かるのですが、マウスをクリックしたまま動かす処理が分からず困ってます。どうかよろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/10/03 04:44:48
  • 終了:--

回答(3件)

id:hyohyo No.1

hyohyo回答回数225ベストアンサー獲得回数12005/10/03 05:01:38

ポイント20pt

http://homepage1.nifty.com/yt-works/prog/

Yu TANAKA's Works:�v���O����Tips

http://gimite.ddo.jp/bcbqtree/qtreemain.cgi?mode=thread&thre...

ドラッグ&ドロップしたい - C++ Builder / Turbo C++ 質問の木

これらを参考にしてみてはいかがでしょうか?

id:mt_book

どうもありがとうございます。

参考にさせていただきます。

2005/10/03 05:22:28
id:Brad No.2

Brad回答回数368ベストアンサー獲得回数02005/10/03 05:10:33

ポイント20pt

http://homepage3.nifty.com/mitui707/VisualC/VCtree_drag.html/

ツリービューのアイテムをドラッグ&ドロップする、文字色をかえる

上記URLは、初心者のためのC++サンプル構文のサイトで、「ツリービューのアイテムをドラッグ&ドロップする」の方法につい

て述べられていますので参考にしてください。

id:mt_book

どうもありがとうございます。

これも参考にさせていただきます。

2005/10/03 05:27:16
id:aki73ix No.3

aki73ix回答回数5224ベストアンサー獲得回数272005/10/03 08:53:31

ポイント60pt

OnMouseMove / OnMouseUp / OnMouseDownでそれぞれ処理をするとよいと思います

サンプルをつくってみたので試してみてください


OnMouseDownで左クリックされたら、クリックした座標を退避

OnMouseMoveで移動分を処理し、

OnMouseUpで位置を確定すればOKです


ここではFORMに対して行っていますが、OBJECTでも同じ処理で対応できます

int PX1,PY1,PM;//移動中の座標、クリック状態を保存

void __fastcall TForm1::FormMouseDown(TObject *Sender,

      TMouseButton Button, TShiftState Shift, int X, int Y)

{

  if(Button==mbLeft){//左クリックのみ処理

    POINT P;//マウスの座標を取得

    GetCursorPos(&P);

    PX1=P.x;

    PY1=P.y;

    PM=1; //最初にクリックした位置を保存して、フラグを立てる

  }

}

//---------------------------------------------------------------------------


void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,

      int X, int Y)

{

  if(PM) { //クリック中にマウスが動いた時のみ処理

    int i;

    POINT P;

    GetCursorPos(&P);

    this->Top=this->Top+P.y-PY1;

    this->Left=this->Left+P.x-PX1;

    PX1=P.x;//最初にクリックしたいちとの差分をとる

    PY1=P.y;

  }

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,

      TShiftState Shift, int X, int Y)

{

  if(PM&&Button==mbLeft){

    FormMouseMove(Sender,Shift,X,Y);

    PM=0; //マウスのボタンが離されたら、処理終わり

  }

}

id:mt_book

本当にどうもありがとうございます。素晴らしいです。

ここまでして頂いたらすぐにでも作れそうです。

非常に感謝です^^

2005/10/03 10:11:18

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません