برنس فتوشوب  Pr-Photoshop



انضم إلى المنتدى ، فالأمر سريع وسهل

برنس فتوشوب  Pr-Photoshop

برنس فتوشوب  Pr-Photoshop

هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.
تكملة الموضوع ج1 شاشة التوقف Barabeta.com_5454345
تكملة الموضوع ج1 شاشة التوقف 2tz3

المواضيع الأخيرة

» المرأة ....... تعرفوا عليها
تكملة الموضوع ج1 شاشة التوقف Emptyالخميس ديسمبر 02, 2010 11:42 am من طرف فافي

» ارتداء الستيانه
تكملة الموضوع ج1 شاشة التوقف Emptyالثلاثاء يونيو 29, 2010 11:34 am من طرف سمسم العراقي

» انضر الى اجمل ما خلقه الله سبحانه وتعالى
تكملة الموضوع ج1 شاشة التوقف Emptyالأربعاء ديسمبر 02, 2009 1:19 pm من طرف سمسم العراقي

» آخر صور للفنان رضى العبد الله
تكملة الموضوع ج1 شاشة التوقف Emptyالسبت أكتوبر 31, 2009 10:28 am من طرف فافي

» سر دمعتي .......
تكملة الموضوع ج1 شاشة التوقف Emptyالجمعة يوليو 17, 2009 6:50 am من طرف mylove

» كليب كامل يوسف ^^ عزابي ^^ حصرياًَ بس مني
تكملة الموضوع ج1 شاشة التوقف Emptyالثلاثاء يوليو 14, 2009 1:34 pm من طرف فافي

» احلى رقصة بالعالم ارجو الرد.....
تكملة الموضوع ج1 شاشة التوقف Emptyالسبت يوليو 11, 2009 7:52 am من طرف فافي

» سؤال يطرح نفسه بقوة ؟؟؟؟؟
تكملة الموضوع ج1 شاشة التوقف Emptyالجمعة يوليو 10, 2009 6:34 pm من طرف سمسم العراقي

» طفل في الهند له ذيل
تكملة الموضوع ج1 شاشة التوقف Emptyالجمعة يوليو 10, 2009 6:30 pm من طرف سمسم العراقي

تدفق ال RSS


Yahoo! 
MSN 
AOL 
Netvibes 
Bloglines 

    تكملة الموضوع ج1 شاشة التوقف

    Admin
    Admin
    Admin
    Admin


    ذكر عدد المساهمات : 47
    نقاط : 22460
    السٌّمعَة : 0
    تاريخ التسجيل : 21/05/2009

    تكملة الموضوع ج1 شاشة التوقف Empty تكملة الموضوع ج1 شاشة التوقف

    مُساهمة من طرف Admin الأربعاء يونيو 03, 2009 5:55 pm

    تكملة الموضوع ج1 شاشة التوقف

    ولنضع استدعاء لهذه الدالة في الدالة OnInitDialog في الصف نفسه حرر الدالة OnIntialDialog السابقة مضيفا اليها السطر التالي لاستدعاء دالة الحركة بعد عبارة todo// لتصبح بالشكل:
    C++ كود
    IntialMove();



    الآن لن يعمل برنامجك بالتاكيد لاننا لم نحجز قيمة بعد في موارد البرنامج للمؤقت لعمل ذلك اذهب الى نافذة عرض الموارد Resosce View على اليسار
    اضغط بالزر الأيمن على راس الشجرة واختر ID=Resorce Symbols تظهر نافذة قيم تعريف الموارد
    اضغط فيها على الزر New اكتب IDC_TIMER كاسم للمورد واترك القيمة التي اختارها البرنامج ربما 101 مثلا
    الآن عرفت قيمة لتدل على المؤقت وهكذا اصبح بامكانك تنفيذ الأمر SetTimer المذكورة في الكود السابق
    الكود السابق يهيء المتغيرات من أجل الحركة ثم يبدأ تشغيل المؤقت
    وعلينا وضع كود الحركة عند قدح حدث الزمن كيف:
    اذهب الى القائمة view في فيجوال ستديو واختر منها Class wizard اختر التبويب Message Maps
    اختر الحدث WM_TIMER لصندوق الحوار
    اضغط زر Add Function ثم اقبل الاسم المقترح OnTimer بالضغط على موافق ثم اضغط زر Edit Code
    سيفتح لك شاشة تحرير الكود للدالة المذكورة
    عدلها لتصبح بالشكل :
    C++ كود
    _______________________________________________________


    color=blue]
    void CDel19Dlg::OnTimer(UINT nIDEvent)

    {

    int y;

    y=m_ptCorPos.y;

    if(m_ptCorPos.y >= 520)

    {

    m_iYTime=1;

    }

    m_ptCorPos.y = m_iYTime * m_iYTime / 2 - 30 * m_iYTime + 520;

    m_iYTime++;

    if(m_ptCorPos.x <=-5)

    {

    m_iXTime=1;

    m_iXStart= -5;

    m_iXSpeed = 5;

    }

    if(m_ptCorPos.x>=745)

    {

    m_iXTime=1;

    m_iXStart = 745;

    m_iXSpeed = -5;

    }

    m_ptCorPos.x= m_iXSpeed * m_iXTime + m_iXStart ;



    m_iXTime++;



    // التحرك للاعلى

    if(m_ptCorPos.y < y)

    {

    m_ptHorOut.y=m_ptCorPos.y;

    m_ptHorIn.y=0;

    }

    //التحرك للاسفل

    else

    {

    m_ptHorOut.y=m_ptCorPos.y+80;

    m_ptHorIn.y=80;

    }



    m_ptCorIn.y= y - m_ptCorPos.y;

    m_ptVerOut.y=m_ptCorPos.y;

    m_ptVerIn.y=0;



    //التحرك لليمين

    if(m_iXSpeed == 5)

    {

    m_ptVerOut.x=m_ptCorPos.x + 55;

    m_ptVerIn.x=55;

    m_ptCorIn.x= -5;

    }

    //التحرك لليسار

    else

    {

    m_ptVerOut.x= m_ptCorPos.x;

    m_ptVerIn.x=0;

    m_ptCorIn.x=5;

    }



    m_ptHorOut.x= m_ptCorPos.x;

    m_ptHorIn.x=0;



    DrawBall();



    CDialog::OnTimer(nIDEvent);

    }

    [/color]
    ________________________________________________________
    الآن برنامجنا ليس جاهزا ليعمل اذ يبقى علينا اضافة دالة جديدة بالاسم DrawBall() والتي من المفروض انها سترسم الكرة في المكان المحدد
    اضف الدالة بالنقر على الصف CDel19Dlg بالزر الايمن ثم اختيار Add Member Function وسميه DrawBall()
    وانقر موافق سيفتح لك نافذة التحرير للدالة المذكورة
    عدلها لتصبح بالشكل :
    C++ كود
    ________________________________________________________v
    oid CDel19Dlg::DrawBall()

    {

    CClientDC dc2(NULL);

    CDC dcmem;

    dcmem.CreateCompatibleDC(&m_dcConst);

    CBitmap bmbit2;

    bmbit2.CreateCompatibleBitmap(&dc2,60,110);

    CBitmap* bmold2=dcmem.SelectObject(&bmbit2);



    dcmem.BitBlt(m_ptCorIn.x, m_ptCorIn.y,60,110,&m_dcConst,0,0,SRCCOPY);

    dcmem.BitBlt(m_ptHorIn.x , m_ptHorIn.y , 60, 30 , &dc2, m_ptHorOut.x, m_ptHorOut.y,SRCCOPY);

    dcmem.BitBlt(m_ptVerIn.x , m_ptVerIn.y ,5, 110,&dc2,m_ptVerOut.x,m_ptVerOut.y,SRCCOPY);



    m_dcConst.BitBlt(0,0,60,110,&dcmem,0,0,SRCCOPY);





    CBrush brush(RGB(255,255,0));

    CBrush* brold=dcmem.SelectObject(&brush);

    dcmem.Ellipse(5,30,55,80);



    dc2.BitBlt(m_ptCorPos.x,m_ptCorPos.y,60,110,&dcmem ,0,0,SRCCOPY);



    dcmem.SelectObject(brold);

    dcmem.SelectObject(bmold2);

    dcmem.DeleteDC();

    }

    _________________________________________________________

    ايضا اضف دالة جديدة لتحرير الذاكرة عند انهاء البرنامج وذلك للحدث WM_DESTROY عدلها لتصبح بالشكل :
    C++ كود______________________________________________________


    void CDel19Dlg::OnDestroy()

    {

    CDialog::OnDestroy();



    if(m_bTrue)

    {

    m_dcConst.SelectObject(m_bmOld);

    m_dcConst.DeleteDC();

    }

    else

    m_dcConst.DeleteDC();

    }


    ________________________________________________________

    هكذا اصبح البرنامج كاملا تقريبا لكنه برنامج وليس شاشة توقف
    كل ما عملناه حتى الآن هو عرض الحركة لكن بقي علينا التعديل فيه ليعمل كشاشة التوقف
    وفي الرسالة القادمة ساضع خطوات ذلك مع ما امكن من شرح


    يتبع

      الوقت/التاريخ الآن هو السبت نوفمبر 23, 2024 2:46 am