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

فهم البرمجه من الاساس

مغلقرائج
بدأه احمد غريب في 18 سبتمبر 2004 · 57 رد · 19,487 مشاهدة · في المواضيع المميزة
مشاركة: واتساب X فيسبوك تيليجرام
#26

السلام عليكم

MsgCaption db "اول برنامج اسمبلى",0

كما تلاحظ اخى فإن السطر ينتهى بصفر null وهو علامة التوقف, يعنى عندما تستدعى اى function من المتوقع ان يقراء نص وتعطيه عنوان اول حرف, فإنه يقراء حتى يصل إلى علامة الصفر والتى تعنى null:

اقتباس
و db

معناها بايت واحد فلماذا اخترناها هي بالذات

لان النص يتكون من حروف وكل حرف هو عباره عن byte.

اقتباس
فيما يخص البرنامج لم اجد مشاكل في الملفين الاولين لكن لدي العديد من الاسئلة فيما يخص ملف الكود منها

هل تعتبر الوصلتين WinMain و Wnd proc

كبرنامجين صغيرين في البرنامج الام

WinMain هو الذى يقوم بإنشاء النافذه وينظر الحصول على الاوامر من نظام التشغيل,

إذا حصل على امر يقوم بإستدعاء Wnd proc, والذى بدوره يقوم بتنفيذ الامر.

اقتباس
والوصلة الثانية ليست مذكورة في البرنامج الام فكيف يتم استدعاؤها

لو لاحظت فى WinMain ستجد هذا الكود.

.WHILE  TRUE
  invoke  GetMessage, ADDR msg,NULL,0,0
  .BREAK  .IF (!eax)
  invoke  TranslateMessage, ADDR msg
  invoke  DispatchMessage, ADDR msg
	.ENDW

هذا الكود ينتظر امر من نظام التشغيل, وفى حال حصوله على الامر يقوم باستدعاء Wnd proc الذى تم تحديده من قبل فى هذا الكود:

mov    wc.lpfnWndProc, OFFSET WndProc

عندما حددنا محتويات النافذه.

اقتباس
و كيف يمكنني التعديل في النافذة أي كيف يمكنني التعديل في الدالة wc

هذا الموضوع شرحته بالتفصيل فى الدروس اخى. إذا كان لديك سؤال محدد بهذا الصدد يكون افضل لان شرح الموضوع يطول, يعنى قلى مثلاً كيف يتم تغير لون خلفيه النافذه, او تغير الايقونه, حتى اتمكن من مساعدتك.

اقتباس
invoke ExitProcess,eax

هل تم التغيير في محتوى السجل فلقد كان في الاول يحتوي على عنوان البرنامج فهل هو يحتوي الان على عنوان اخر بايت في البرنامج

نعم تم تغير محتوى المسجل من قبل نظام التشغيل, فحين تغلق البرنامج بواصطة علامة X فإن نظام التشغيل يرسل الامر null لبرنامجك وبذالك تطلب انت من البرنامج ان ينهى عمله.

اقتباس
و ارى ان الوصلة الثانية التي تعالج الاوامر هزيلة فكيف يمكننا تسمينها بالاوامر

لم افهم قصدك اخى.

اقتباس
لقد واجهتني مشكلة عند القيام بالكمبايلر للكود وهي لم يفهم هذا البارمتر

WS_EX_LAYOUTRTL

مما اضطرني بالفيام بالنافذة باللغة الانقليزية...لو كانت بالعربية لكانت اجمل

نعم الامر غير موجود فى windows.inc ماعليه القيام به هو التالى :

اذهب إلى المسار c:\masm32\iclude ستجد ملف اسمه windows.inc قم بفتح الملف فى محرر نصوص واضف الامر التالى :

WS_EX_LAYOUTRTL                      equ 00400000h

حاول ان تضعه معى WS_EX_ فهناك عده اسطر تبداء بهذا الامر موجوده فى منتصف الملف.

فى الواقع يمكنك ان تضعه فى ارى مكان فى الملف ولكن من الافضل ان تضعه معى الاوامر التى تشبهه, حتى لا يشوه منظر الكتابه.

اقتباس
و كيف يمكننا اضافه ملف صوتي للبرنامج

ساشرحها لاحقاً إن شاء الله لضيق الوقت.

والسلام

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

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#27

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

لقد ذكرت ان النص يتكون من حروف م كل حرف هو عبارة عن بايت

لكن النص مكتوب بالعربية

اظن عندما يكون النص مكتوب بلغة غير الانقليزية فاننا نستعمل رمز اليونكود

وبالتالي كل حرف يحناج الى 2 بايت

فهل هذا صحيح

و ان كان صحيح فهل معني هذا انه يقوم بقراءة 2 بايت كانهم بايت واحد

اقصد بتسمين الوصلة الثانية التي هي Wnd proc

باضافة بعض الاوامر

اعني ان قائمات البرنامج لا تقوم بشئ

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

و ملحق اخر يقوم زيادة ملف نصي

او يقوم باصدار صوت

السلام عليكم :D

#28

السلام عليكم

نعم معك حق االاحف العربيه هى unicode ولكن وندوز يتعامل معى يونيكود لذالك يحول جميع الحروف إلى يونى كود, يعنى لو كتب احرف انجليزيه سيتم الاحتفاظ بها على شكل يونيكود فى الملف, لذالك يمكنك فى الاسمبلى ان تتعامل معها على اساس انها ascii ودع الباقى للوندوز.

بالتاكيد يمكننا ان نصنع برامج كامله ولكنى لم افعل ذالك لسببين:

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

السبب الثانى هو انى لم اجد الوقت الكافى ولكن إن شاء الله سوف اواصل فيها حالما اجد الفراغ الكافى.

والسلام

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

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#29

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

اخي احمد

لم اعرف مشكلة هذا ملف رسورس <_< ...فهو لا يمكنه التعرف على الصورتين :angry:

#include"c:\masm32\include\resource.h"

#define   ICONBIG              200
#define   ICONSMALL            201




#define   MAINMENU             101

#define   MI_SUJET             001
#define   MI_AHMED             002
#define   MI_THANKS            003
#define   MI_GOOD              004
#define   MI_PERFCT            005
#define   MI_LOVEIT            006

ICONBIG        ICON    DISCARDABLE     " big.ico "
ICONSMALL      ICON    DISCARDABLE     " small.ico"


MAINMENU       MENU    DISCARDABLE
BEGIN

 POPUP"الدلفي"
 BEGIN
   MENUITEM"جيدة",MI_GOOD
 END

    
 POPUP"الجافا"
 BEGIN
   MENUITEM"رائعة",MI_PERFCT
 END


 POPUP"السي"
 BEGIN
   POPUP"ممتازة"
   BEGIN
     MENUITEM"احبها",MI_LOVEIT
   END
 END

 POPUP"الاسمبلي"
 BEGIN
   POPUP"الافضل"
   BEGIN
     MENUITEM"موضوع رائع",MI_SUJET
     MENUITEM"اخي احمد ",MI_AHMED
     MENUITEM"جازاك الله خيرا",MI_THANKS
   END
 END
END

السلام عليكم (h)

#30

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

اخي

قلة المشاركات تعني ان الاعضاء لم ينتبهوا الى الموضوع

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

و ما تزعلش يا سيدي اسئلتي حتكون زي اسئلة عشرة مبتدئين مع بعض :wacko:

السلام عليكم

تم تعديل هذه المشاركة بواسطة محمد فراس في 16 فبراير 2005 في 14:24

#31

السلام عليكم

عليك ان تضع المسار حتى يصل الرسورس إديتور للصور

ICONBIG        ICON    DISCARDABLE     " big.ico "
ICONSMALL      ICON    DISCARDABLE     " small.ico"

لاحظ انك لم تضع المسار, لو إترضنا ان الصور مجوده فى ملف test فى :c إذاً ما علينا إلى كتابة التالى

ICONBIG        ICON    DISCARDABLE     " c:\test\big.ico "
ICONSMALL      ICON    DISCARDABLE     " c:\test\small.ico"

والسلام

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

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#32

السلام عليكم

لقد قمت بالنعديلات اللازمة و الامور عال و الحمد لله

الامور جيدة فقط عند اضافة صورتي الكاميرا الذي اضفتهما

و عندما صممت صورتين و ادمجتها في ملف رسورس

تاتيني مساج الخطا التالية

resource file  test\smile.bmp is not in 3.00 format

فما حكاية 3.00 format

و كيف اصمم ايقونة بهذه الفورمة

السلام عليكم

تم تعديل هذه المشاركة بواسطة محمد فراس في 16 فبراير 2005 في 17:17

#33

السلام عليكم

إليك ما تقوله مايكروسفت:

http://msdn.microsoft.com/library/default....html/RW2003.asp

يعنى الفورمات التى تستخدمها للايقونه فورمات قديمه, حاول ان تستخدم برنامج رسم ايقونات جدبد يدعم format 3.00 .

والسلام

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

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#34

السلام عليكم

لقد تمكنت من ايجاد نسخة تجريبية لبرنامج يحول الايقونات الى format 3.00 .

و الحمد لله

فهل هناك طريقة لقراءة محتوى الملفين

skeleton.res و skeleton.obj

#35

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

نعم يمكنك قراتها بال hex editor ولكن ماذا تريد قرائة هذين الفين, هما الان بلغه الاله ويمنك عمل دمج لهما بواصطة link, وإذا اردت ان تنشئهما من جدبد فلديك الملف الاصلى لهما, ما عليك سوى التعديم ومن ثم الكمبايل.

والسلام

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

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#36

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

اخي الكريم

انا مقتنع بكلامك اخي و سؤالي كان من باب الفضول ليس اكثر

اعلم انهما مكتوبتان بلغة الالة لكني اردت رؤية ذلك

بارك الله فيك

اخي الكريم

لقد قمت بتعريف IDTOOLBAR في ملف skeleton.inc

و لم تقم بذلك في skeleton.rc

فما هو السبب

لقد قمت باضافة TOOLBAR

و هو يوافق على القيام بالكمباير ثم الربط لكن يظهر لي مساج الخطا ولم اعرف السبب

:unsure:

ارجو ان تلقي نظرة على الملف :rolleyes:

السلام عليكم

languages.zip

تم تعديل هذه المشاركة بواسطة محمد فراس في 19 فبراير 2005 في 11:56

#37

السلام عليكم

لديك مشكلتين الاولى هى عدد الالوان فى صورة TOOLBAR فى لابد ان تكون من نوع 256 لون فقط لا اكثر ولا اقل.

المشكله الثانيه ايضاً فى الصوره, فحجم الصور الصغيره التى تتكون منها الصوره ليست مناسبه حيث انك حددت فى البرنامج ان حجمها سيكون 16x16 .

المشكله الاولى قمت بحلها بتحويل الصوره إلى 256 لون, اما الثانيه فلم استطع حلها لان الصوره غير متناسقه, عليك ان ترسم صوره تتكون من صور بحجم عدد الايقونات, وتكون ابعاد كل ايقونه هو نفس الحجم الذى حددته فى البرنامج. على سبيل المثال إذا حددت ان ححم كل ايقونه هو 32 بت ولديك 6 ايقونات فلا بد ان تكون الصوره 32x6 بت عرضر و 32 بت طول.

والسلام

test55.zip

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

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#38

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

بارك الله فيك اخي :lol:

و جازاك الله كل خير :)

السلام عليكم

#39

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

بارك الله فيك اخي :D

لقد قمت باصلاح الخطا

وهذا الملف مع بعض التعديلات

كما ستلاحظ اخي انني استعملت نافذة معربة

لكنني لم اكتب باللغة العربية لان عند الكتابة بالعربية تاتي نقط استفهام بدل الكلمة التي كتبتها

فهل هناك حل لهذه المشكلة :unsure:

السلام عليكم :lol:

languages.zip

#40

السلام عليكم

اظن ان المشكله فى انك تستخدم لغه غير العربيه كلغه اساسيه فى الوندوز, جرب التالى إذهب إلى هذا الرابط:

http://www.2pchelp.net/problems/winxp/winxp.htm

تابع الخطوات وسوف تصبح اللغه العربيه هى الغه الاساسه فى كمبيوترك, وجرب إعاده الكمبايل.

والسلام

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

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#41

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

بارك الله فيك اخي ;)

لقد تم الامر بنجاح B)

و اليك التمرين بالغة العربية

اخي ارجو ان تواصل ما بداته من هذه الدروس الرائعة :unsure: ....و ان لا تحرمنا منها <_<

و كما تعلم فلقد بدات بهذا الموضوع بتاريخ 18 سبتمبر و انا لم ابدا بالاستفادة من هذه الدروس الا يوم 16 فيفري

اي بعد خمسة اشهر الا يومين :blink:

مادام الموضوع مثبت فتاكد ان هناك العديد من المبتدئين الذين سيستفيدون منه :)

السلام عليكم

languages.zip

#42

السلام عليكم

انا ارحب بفكرة اي برنامج بسيط تعلمى نفوم بعمله جماعياً, الان لدينا الاساسيات فى كيفية القيام بعلم نافذه. يمكننا إضافه الكثير إليها مثل وضع صوره او نص , كما يمكننا وضع ازرار لتنفيذ امر معين, إضافة status bar الذى يكون فى اسفل الصفحه الخ, ولكن ارجو التفاعل من من تابع هذه الدروس.

والسلام

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

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#43

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

بارك الله فيك :lol:

ساكون ان شاء الله من المتابعين لكل الدروس B)

السلام عليكم

#44

السلام عليكم

تم إضافه statusbar ,وهو على النحو التالى.

هناك طريقتين لعمل statusbar الطريقه الاولى وهى بإستخدام CreateStatusWindow ولكن هذه الطريقه لا تعطنا الحريه الكامله للتحكم فى محتوياتها, وخاصتاً مشكله التعريب.

الطريقه الثانيه نستخدم فيها CreateWindowEx

اولاً نعرف المتغيرات

StatusText1   db      "ÑÝã 1",0
StatusText2   db      "ÑÝã 2",0
StatusText3   db      "ÑÝã 3",0
StatusText4   db      "ÑÝã 4",0

نريد إنشاء statusbar باربع خانات كل خانه تحتوى على نص معين.

ثم

msctls    db      "msctls_statusbar32",0
StatusParts         dd      50, 100,150, -1

نختار المعرف ل statusbar ,ونضعه فى متغير وهو msctls_statusbar32 , ثم نقوم بتقسيمه على اربع مناطق, تنتهى المنتطقه الاولى عند النقطه 50 والثانيه عند 100 والثالثه عند 150 والاخيره تاخذ باقى الحيز المتاح.

واخيراً نخصص مقبض ليمكنا من إرسال الاوامر إليه.

hStatus    dd	?

والان نصنع ال statusbar

invoke CreateWindowEx,WS_EX_LAYOUTRTL or 100000h,addr msctls,ADDR StatusText1,WS_CHILD + WS_VISIBLE,\
      NULL,NULL,NULL,NULL,hWnd,NULL,NULL,NULL         
    mov     hStatus, eax

هذه الاوامر ستصنعه لنا وتضع النص رقم واحد ولكنه ما زال لم يقسم.

نقسم الان ال statusbar إلى اربع اقسام بالامر التالى :

invoke  SendMessage, hStatus, SB_SETPARTS,4, ADDR StatusParts

وعلى نفس المنوال نرسل الثلاث نصوص الباقيه إلى بقية الاقسام على النحو التالى:

invoke  SendMessage, hStatus, SB_SETTEXT,1, ADDR StatusText2
    invoke  SendMessage, hStatus, SB_SETTEXT,2, ADDR StatusText3
    invoke  SendMessage, hStatus, SB_SETTEXT,3, ADDR StatusText4

لاحظ ان ترقيم الاقسام يبداء بصفر وينتهى ب 3 بينما النصوص بدائت ب 1 وانتهنت ب 4.

البرنامج بالكامل مرفع .

والسلام

skeleton.zip

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

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#45

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

تم الامر بنجاح

بارك الله فيك :lol:

البرنامج بالملف المرفق

السلام عليكم

languages.zip

#46

السلام عليكم

نحن في انتظار الجديد

السلام عليكم

#47

السلام عليكم

إن شاء الله فى نهاية الاسبوع اخى محمد نواصل, الان للاسف الشديد فانا مشغول قليلاً بانهاء مشروع يجب تسليمه خلال هذه الايام.

والسلام

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

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#48

السلام عليكم

الله يوفقك في مشروعك اخي

و انا في انتظارك في نهاية الاسبوع

السلام عليكم

#49

وأنا كمان بإذن الملك القدوس

#50

بارك الله فيك أخي أحمد على الموضوع الرائع و أتمنى المواصل

و ألف شكر لك

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

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