人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

●質問者: mt_book
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:C++Builder イベント クリック ドラッグ プログラミング
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● hyohyo
●20ポイント

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++ 質問の木

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

◎質問者からの返答

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

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


2 ● Brad
●20ポイント

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

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

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

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

◎質問者からの返答

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

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


3 ● aki73ix
●60ポイント

http://nifberry.727.net/test/hatena152.lzh

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; //マウスのボタンが離されたら、処理終わり

  }

}

◎質問者からの返答

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

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

非常に感謝です^^

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ