「OnClick」や「OnMouseMove」の処理は分かるのですが、マウスをクリックしたまま動かす処理が分からず困ってます。どうかよろしくお願いします。
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++ 質問の木
これらを参考にしてみてはいかがでしょうか?
http://homepage3.nifty.com/mitui707/VisualC/VCtree_drag.html/
ツリービューのアイテムをドラッグ&ドロップする、文字色をかえる
上記URLは、初心者のためのC++サンプル構文のサイトで、「ツリービューのアイテムをドラッグ&ドロップする」の方法につい
て述べられていますので参考にしてください。
どうもありがとうございます。
これも参考にさせていただきます。
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; //マウスのボタンが離されたら、処理終わり
}
}
本当にどうもありがとうございます。素晴らしいです。
ここまでして頂いたらすぐにでも作れそうです。
非常に感謝です^^
どうもありがとうございます。
参考にさせていただきます。