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

تحريك Buttom عشوائياً كل ضغطة واحدة ( In Mfc Coding )

بدأه CPP-Programmer في 9 نوفمبر 2008 · 9 رد · 647 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته ..

شباب ما الدالة التي تحرك مكان الButtom ??

الذي اريده : ذر بمجرد الضغط عليه ضغطة واحدة تتحرك عشوائيا عن طريق دالة Rand();

طبعا يتحرك داخل الفورم يمين شمال فوق تحت :blink: عملت فاريبل للبوتوم وكتبت بعده النقطة وشفت والله جميع الدوال يعني قرأت اساميها ومااعتقد ولا واحدة فيهم تنفع او يمكن واحدة تنفع بس سهوت عنها لانى بحثت عن كلمة ليفت و رايت و موف وكل هالكلام !!

لو سمحتم يا شباب(لو سمحت يابن العيد اذا دخللت الموضوع) اريد دروس عن الام اف سي في السي++ (الواجهات الرسومية في سي بلس بلس)

والسلام عليكم

Just C++ Life :)

#2

اذا كنت تستخدم winapi :

BOOL MoveWindow(

	HWND hWnd,	// handle of window
	int X,	// horizontal position
	int Y,	// vertical position
	int nWidth,	// width
	int nHeight,	// height
	BOOL bRepaint 	// repaint flag
   );

أو اختها اذا كنت تستعمل MFC :

void CWnd::MoveWindow(
   int x,
   int y,
   int nWidth,
   int nHeight,
   BOOL bRepaint = TRUE 
);

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#3

السلام عليكم ورحمة الله وبركاته

اهلا GM بك نورت :)

جزاك الله خيراً اخي وفتحت مشروع MFC وفتحت السورس ووضعت بأخره الدالة اللي انت وضعتها ولكن ظهر:

 error C2761: 'MoveWindow' : member function redeclaration not allowed

وجربتها انا بنفسي ولكن لم تنجح

هل نجحت معك ؟

Just C++ Life :)

#4

اخي لقد قرأت عن الدالة في ميكروسوفت ووجدت كالتالي

void MoveWindow(
   int x,
   int y,
   int nWidth,
   int nHeight,
   BOOL bRepaint = TRUE 
);

وعمل كومبايل واشتغل تمام

لكن لا اعرف من اين اشغله !! لقد وضعت الكود بداخل buttom وعملت له compile وتم وشغلته ولكن لم يتغير اي مكان !! :(

Just C++ Life :)

#5

ضع الكود الذي كتبته انت .

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#6

1- عملت مشروع Dialog جديد من نوع MFC

2- عملت Buttom به ووضعت بداخلها هذا الكود الذي اخذته من ميكروسوفت

			void MoveWindow(
			   int x,
			   int y,
			   int nWidth,
			   int nHeight,
			   BOOL bRepaint = TRUE );

وتم عمل Compile بنجاح

ملحوظة : الكود موضوع في زر جديد !!

جربت ان احدد حجم y فوضعت ببداية الكود للزر هكذا مثلا

int y=200;
int x=200;
int nHeight=200;
int nWidth=200;

ولم ينجح

Just C++ Life :)

#7

ما قمت به هو تكرار للـdeclaration وليس استخدام للدالة , ليس لدي MFC لعمل مثال لكن الامر كالتالي :

[color= #0000ff;]void EventProcedure [color= #007f00;]// حدث الضغط على الزر()

[color= #000000;]{

    MoveWindow[color= #000000;](hWnd,    [color= #007f00;]// مقبض الزر

        [color= #ff0000;]200,    [color= #007f00;]// الاحداثي السيني

        [color= #ff0000;]200,    [color= #007f00;]// الاحداثي الصادي

        [color= #ff0000;]200,    [color= #007f00;]// العرض

        [color= #ff0000;]200,    [color= #007f00;]// الارتفاع

        [color= #0000ff;]TRUE     [color= #007f00;]// لاعادة رسم نافذة الزر

       [color= #000000;]);

[color= #000000;]};

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#8

السلام عليكم ورحمة الله وبركاته

اهلا بك GM

شكراً لك كثيراً فقد افدتني !! الدالة اشتغلت وانتهت مهتمتك جزاك الله خيراً :) :D:D

تم شكرك والله يكرمك ويوفقك

سلام

Just C++ Life :)

#9

سؤال خارج لماذا تحب اخى GM وضع semicolon بعد كل دالة بالرغم ان الكمبيلر سوف يتلاشاها

amdvsintel22.jpg

--i use AMD--

لا اله الا الله محمد رسول الله

أستعن بالله و لا تعجز

تابعنى على تويتر

***

#10

:D

لا يوجد سبب ... فقط احب وضعها بعد كل كتلة كود ... تجعل الكود مريح لي عند القاء نظرة خاطفة عليه .

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

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