الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Click & Drag Dialog SOOOOOO Important PlEaSe

مغلق
بدأه storm_est في 30 ديسمبر 2002 · 4 رد · 423 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

من أجل نقل Dialog بواسطة النقر و السحب ( مثل شريط العنوان ) قمت باضافة هذه الأسطر للحدث WM_MOUSEMOVE

void CMy1Dlg::OnMouseMove(UINT nFlags, CPoint point) 

{



	if((nFlags & MK_LBUTTON)== MK_LBUTTON)

	{

  MoveWindow(point.x,point.y,500,500);

	}



	UpdateData(FALSE);



	CDialog::OnMouseMove(nFlags, point);

}

و كانت نتيجة البرنامج كما في الملف المرفق - مع العلم أنني أستخدم MFC لانشاء الـDialog .

فما هو برأيكم السبب في عدم دقة التحريك أو بالأحرى ما هي الطريقة لتصحيح هذا الخطأ .

و شكرا على المساعدة و أرجو أن تتحملوني لأنني هاوي مبتدأ .

1.rar

#2

أخي عدم الدقة ناتج من انك تريد من الزاوية اليسرى للنافذة ان تنتقل الى حيث يوجد المؤشر الان.. لكن عملية التحريك تختلف عن هذا... عملية التحريك هي جعل النافذة تغير مكانها بنفس المقدار الذي غيرت به مكان المؤشر وزر الماوس مضغوط... هذا الحل النظري.. أما العملي فأعتذر لأنني لم أجرب.. وأرجو ممن جرب ان يدلو بدلوه.

#3

السلام عليكم .....

شوف الكود اللي بالأسفل، اعتقد هذا اللي تبيه ...

الكود كتبته بسرعه و لست مـتأكد من انه يعمل بشكل صحيح جدا، حاولت اكتبه بحيث انه يكون سهل القراءة و مفهوم.

تحياتي ...

void CMovingDlgDlg::OnMouseMove(UINT nFlags, CPoint point) 

{

	// TODO: Add your message handler code here and/or call default

	int LengthX;

	int LengthY;

	int PosX;

	int PosY;

	int NewPosX;

	int NewPosY;



	RECT rt;



	if((nFlags & MK_LBUTTON)== MK_LBUTTON)

	{

  LengthX = point.x - m_prePosX;

  LengthY = point.y - m_prePosY;

  GetWindowRect(&rt);

  

  //LengthX = abs(LengthX);

  //LengthY = abs(LengthY);

  PosX = rt.left;

  PosY = rt.top;

  NewPosX = PosX + LengthX;

  NewPosY = PosY + LengthY;

  MoveWindow(NewPosX, NewPosY, 500, 500);

	}

	else

	{

  m_prePosX = point.x;

  m_prePosY= point.y;

	}



	UpdateData(FALSE);



	CDialog::OnMouseMove(nFlags, point);

}
#4

شكرا لك يا أخ ؟Developer .NET

و سأجرب الطريقة بعد قليل

#5

شكرا لكم يا شباب جميعا على الافادة

VeRY SpCiAl To DEvElOpEr .NET

" ThAnKs FoR YoU ToO MuCh"

ThE DiRtY PrOg Is OvEr

هذا الموضوع مغلق.

مواضيع مشابهة