• 0
قطعة سكر

كيف أقوم بعمل واجهة لبرنامجي

سؤال

السلام عليكم جميعا..
انا طالبة حاسب واعمل على مشروع التخرج حاليا..
حيث ان فكرته تقول على steganography (نوع من اناوع التشفير-اخفاء رسالة داخل ملف اخر كإخفاء نص داخل صورة-)

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

او من المكن انت تكون واجهة واحدة ويكتب كل البينات فيها واخيرا يضغط على زر التشفير

لا اعلم بصراحة كيف هو شكل البرنامج بالضبط
ولكن المهم الأن هو كيف استطيع فعل كل هذا؟؟؟

اسفة على الإطالة ولكن ارجوكم ساعدوني وبسرعة
فالإمر مهم

اختكم قطعة سكر

تم تعديل بواسطه مصطفى 36a2
add tags
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

26 إجابة على هذا السؤال .

  • 0

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

يعني هناك طريقتين للواجهة الأولى هي إنشاء مكل شيء بالكود من خلال الHeader Window أو عند عمل مشروع جديد يتم اختيار على ما أذكر

MFC.EXE و بعدها يتم رسم الأدوات فقط ..

و بقية التعديلات يتم بدوال Windows مثل SetWindowText

وشكرا أرجو أن يكون هذا المطلوب

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

على فكرة إذا كان بدك كودات الانتقال من نافذة لأخرى عرفتها من كم يوم ..و كذلك إخفاء و إظهار الأزرار.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

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

اما اذا كنت تبرمجين بأستخدام السي++ فيمكنك استخدام ال MFC او ال Win32 API

موقع كتب

في الرابط السابق ستجدي بعض الكتب عن ال MFC وبرمجة الوندوز

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يمكن برمجة الواجهة عن طريق ادوات مرئية تساعد في ذلك, فبرنامج Visual Studio يحتوي على ادوات لرسم الواجهة, و نفس الشي اعتقد مع برنامج Borlan C++ Builder (او مهما كان اسمه).

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الاخوه ما شاء الله جاوبوا بوضوح في عملية بناء واجهة للبرنامج بالسي ++

ولكي الاختيار بين الـ API في بناء البرنامج وبين MFC مثلا

لكن في نقطه لفتت انتباهي

وقد احترنا في اختيار اللغة لعمل هذا البرنامج حيث اننا نحتاج للتعامل مع البتات للصروة حتى نخفي داخلها النص

ولااعلم ان كنت احتاج لدوال خاصة في السي لعمل ذلك

بامكان معظم اللغات التعامل مع البيانات في نفس المستوى , بنفس الطريقه تقريبا

لغة السي لا تستطيع التعامل مع البت بمفرده , ونفس الحكايه مع أي لغه اخرى , لأن المعالج نفسه لا يوفر هذه الامكانيه في تركيبه وتعليماته , ولكن يمكن باستخدام العمليات المنطقيه التعامل مع البت , وهذه الطريقه تصلح في أكثر من لغه

فمثلا نفس الكود يعمل في السي و السي++ والسي شارب واحد لنفس العمليه

مثلا لاختبار البت الثالث (نبدأ من صفر) في المتغير A من نوع unsigned char نقوم بهذه العمليه

if(((unsigned char)A >> 3) & 1) == 1) {
 ....
}
else {
 ....
}

لعكس قيمته مثلا , اذا كان صفر نجعله 1 , والعكس بالعكس

A = (unsigned char)A ^ 8; // b00001000

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

A = (unsigned char)A & 247; // b11110111

ولجعله يساوي واحد بغض النظر عن قيمته

A = (unsigned char)A | 8; // b00001000

وهذا الكود يمكن تطبيقه في السي , السي++ و السي شارب , كما يمكن اعادة كتابته في أي لغه اخرى والطريقه واحده

تم تعديل بواسطه Asm4all
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

فعلا كلام Asm4all صحيح .. اي لغة توفر عمليات منطقية على البتات bitwise logical operations يمكنها القيام بما تطلبين.

حتى الجافا على ما اعتقد توفر هذه القابلية (مع انها لا توفر مؤشرات!).

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

لغة السي لا تستطيع التعامل مع البت بمفرده , ونفس الحكايه مع أي لغه اخرى , لأن المعالج نفسه لا يوفر هذه الامكانيه في تركيبه وتعليماته , ولكن يمكن باستخدام العمليات المنطقيه التعامل مع البت , وهذه الطريقه تصلح في أكثر من لغه

ربما خارج الموضوع قليلا .. لكن لغة D توفر هذه الإمكانية:

http://www.digitalmars.com/d/arrays.html#bitarrays

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ربما خارج الموضوع قليلا .. لكن لغة D توفر هذه الإمكانية:

http://www.digitalmars.com/d/arrays.html#bitarrays

فعلا لفتت انتباهي الى هذه اللغه , واتمنى من ميكروسوفت (الممول والداعم الأول للغات البرمجه) دعم هذه اللغه بدل من ضياع الوقت في .NET وغيرها من المهاطرات

وللعلم الطريقه التي تتبعها هذه اللغه , هي اخفاء هذه الخطوات و وجعلها اداه جاهزه , وهي في حد ذاتها ميزه , ولكن اذا كانت الاسمبلي تتعامل بنفس الاسلوب مع البيت فهل يوفر المعالج شيء جديد للـ D

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اهلا اخي eias..

اشكرك جدا على ردك ولكن لدي بعض الإستفسارت..

اولا ماذا تقصد بـالHeader Window؟

هل ماتقصده اني اكتب كود في header لعمل الأزرار ومربع النص وغيره؟

ثانيا ماالفرق بينها وبين MFC؟

ثالثا ان كان المقصود بـالHeader Window هو كتابة الكود فيHeader فهل يمكن ان اجد هذه الأكواد جاهزة؟

واخيرا شكرا على الرد والرابط الذي وضعته..

وارجوا ان لا اثقل عليك في انت تضع الكودات اللي ذكرتها فقد استفيد منها :)

وتقبل تحياتي..

اختك..قطعة سكر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اهلا اخي ahmed_3d..

لا ليست هذه اول مرة ابرمج فقد درست لغة الكيو بيسك والباسكال والسي والسي++

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

ولم اعمل يوما على برمجة واجهة برنامج

فقد كنا نكتفي واجهة الويندوز دون اضافة اي شي لها غير تغير العنوان الرئسي لها او بواجهة الدوس السوداء

ولكن هل من الممكن ان تخبرني ايهم افضل واسهل في عمل المطلوب

هل هي MFC او ال Win32 API؟

وشكرا اخي على مرورك:)

اختك..

قطعة سكر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اهلا اخي hasan_aljudy

اشكرك على ردك..

ولكن لم ارى في برنامج السي ++ ادوات مرئية لصنع الواجهة ..ولكن رأيتها في الفيجول بيسك

وبالنسبة للبرنامج الذي ذكرت ..اين اجده؟

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

وشكرا لمرورك..

قطعة سكر:)

تم تعديل بواسطه قطعة سكر
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اختي الكريمة سأجيب عن سؤالي و سأتركهم يجيبون عن أسالتهم ^.^

الHeader المسمى بالWindows هو الملف الرأسي الذي يحوي دوال ويبدوز و من خلاله يتم برمجة الأزرار و النوافذ و كل شيء ..يعني نوافذ اسمه ^.^ لأن كل شيء هو نوافذ

شخصيا أنا بلاقي MFC أسهل اما بالنسبة للكودات فأنا رح أنسقها شوي و اجيبها ..

أما البرمجة في الويندوز فهو أعقد شيء في ++C

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اهلا بك اخي Asm4all..

اشكرك على ردك ..

وهل لك ان تخبرني ايهما الأفضل لي في بناء البرنامج MFC اوAPI

مع العلم اني لم اعمل عليهما كلهم سابقا..

واقصد في اننا احترانا بإختيار اللغة ..اننا لم نعرف هل نختار الفيجول بيسك ام السي++

لأن عمل الواجهة والبرمجة على الفيجول بيسك اسهل

ولكن البعض يقول السي++ يعطي امكانيات اكثر ويمكننا من الدخول بالتفاصيل اكثر

ولا اريد التعامل مع البتات للقيم مباشرة ولكن اقصد ان اتمكن من التغير عليها بالمعادلات والعمليات ومعرفة قيمتها وقرائتها كإستخدام OR -AND-XOR

*سؤال خارج عن الموضوع ..

هل صحيح ان ربط اجراء البنامج في السي++ معقد؟ كربط واجهة البرنامج بكود البرنامج نفسه

وشكرا على مرورك اخي..

قطعة سكر:)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اهلا بعودتك اخي eias..

وشكرا على اجابتك..

لكن لم تقل لي ..هل من الممكن ان اجد هذا الأكواد جاهزة؟

وسوف اعمل على MFC وان شاء الله ما اواجه اي صعوبة فيها:)

وشكرا مرة اخرى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

قبل البدء جواب عن السؤال تبع ربط النوافذ ببعضها فيه بعض الصعوبة ولكن ليس مشكلة :

اعملي مشروع MFC ثم ارسمي زر ثم ضعي فيه الكود التالي:

SetWindowText("The Crash");

هذه أول دالة تغير اسم عنوان النافذة.

زر آخر فيه الكود التالي:

ShowWindow(3);

هذا يظهر النافذة مع التكبير..

زر آخر فيه الكود التالي :lol: :

SetWindowPos(0,0,0,500,500,SWP_SHOWWINDOW);

هذا يحدد وضعية النافذة ..

طبعا الدوال كثيرة وتحتاجين كتاب لإدراكها كلها..

أما الطريقة الثانية افتحي مشروع Consol فارغ و ضعي الكود التالي فيه :

#include <windows.h> 
//دالة الرســائل
LRESULT CALLBACK WndProc( HWND hWnd , UINT message , WPARAM wParam ,

LPARAM lParam)
{
   switch(message){
case WM_CLOSE:
 DestroyWindow(hWnd);
 break;
case WM_DESTROY:
 PostQuitMessage(0);
 break;
 
   }
   return DefWindowProc(hWnd,message,wParam,lParam);
}

INT WINAPI WinMain( HINSTANCE , HINSTANCE , LPSTR , INT )
{
WNDCLASSEX wc;
HWND hWnd;

   // Create A Window Class Structure    
   wc.cbClsExtra = 0;
   wc.cbSize = sizeof(wc);
   wc.cbWndExtra = 0;
   wc.hbrBackground = (HBRUSH)(COLOR_MENU );
   wc.hCursor = LoadCursor(NULL,  IDC_ARROW );
   wc.hIcon = LoadIcon(NULL, IDI_QUESTION );
   wc.hIconSm = LoadIcon(NULL,  IDI_HAND ); //الايقونة التي تظهر بالنافذة
   wc.hInstance = GetModuleHandle(NULL);
   wc.lpfnWndProc = WndProc;
   wc.lpszClassName = "api";
   wc.lpszMenuName = NULL;
   wc.style = CS_VREDRAW|CS_HREDRAW|CS_OWNDC;

   // Register Window Class
if(!RegisterClassEx(&wc))
{
 MessageBox(NULL,"oooops","Arabteam",NULL);
 return 0;
   }

///
    hWnd = CreateWindowEx(  WS_EX_RIGHT ,
       "api", "api lessons",
       WS_BORDER | WS_CAPTION | WS_SYSMENU |

WS_MINIMIZEBOX|WS_VSCROLL,
 100,100,400,200,
       NULL,NULL,wc.hInstance,0);

  if(hWnd==NULL)
   {
 MessageBox(NULL,"OOOOPS","ARABTEAM",NULL);
 return 0;
 }

   ShowWindow(hWnd,SW_SHOW);

   // Message Loop
   MSG msg;
   while(GetMessage(&msg,hWnd,0,0)>0){
       TranslateMessage(&msg);
       DispatchMessage(&msg);
   }

   return 0;
}

الكود للأخ الكريم الشمري و من اجل التعمق في هذه الطريقة يرجى مراجعة الرابط المكتوب في الأعلى ..وشكرا ..

بالنسبة لأكواد MFC فالحقيقة هي نادرة التواجد امذا

لأن حجم البرامج تبعا كبير..للأسف أنا عندي CD في أمثلة رائعة و حتى على برمجة الألعاب(طبعا معقدة) ولكن ما باليد حيلة أقل واحد 10 م.ب

بس أنا أنصحك بتعلم الدوال ..أختي الشوار صعب و طويل مع برمجة ويندوز ..ابدئيها إن شاء الله بتتوفقي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

إذا كان الخيار الاخر هو فجول بيسك .... فبطعا السي بلص بلص أقوى. و لكن هناك ايضا خيارات افضل من سي بلص بلص, مثل سي شارب.

بالنسبة للبرامج .. فأنا لم استخدم borlan C++ builder و لكني اعرف انه يستطيع بناء برامج ++C على طريقة الفجول ..

اذا كنتي قد عملتي من قبل على visual basic فعلى الأكثر تملكين visual studio (او لعلكي تستطيعين الحصول عليه) و هو يحتوي على ++visual C كجزء منه, و تستطيعين من خلاله بناء البرامج بطريقة مرئية.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الأخ eias

ادري تعبتك معي ..

انا سوف ابحث عن كتاب ومواقع فيها اكواد تفيدني

لكن كيف اربط واجهة البرنامج بكود البرنامج ؟

(اقصد بالكود هو الكود الذي يشغل البرنامج كجمع رقمين او في حالتي تشفير النص )

____________--

ماهو Consol

وماذا يفعل الكود الأخير؟

تم تعديل بواسطه قطعة سكر
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اهلا بعودتك hasan_aljudy

وشكرا على ردك وسوف افتح الفيجول واجرب ماقول:)

وشكرا مرة اخرى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أختي الكريمة ببسااطة عند رسم زر أو أي شيء آخر

انقري عليه مرتين بالماوس ..ستظهر لك نافذة فيها مثلا

OnButton1

ثم OK

وبعدها ستصبحين داخل الclass أو لنقل المكان المخصص لكتابة الكود في الزر

الConsol هو البرامج التي تبرمج بواجهة الدوس السوداء

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لا لم اقصد كود تشغيل الواجهة

انما اقصد كود البرنامج نفسه

الا يمكنني ان اعمل الواجهة ببروجت والكود ببروجكت اخر ثم اجمعهم؟

ان كنت استطيع فكيف ادمجهم واربطهم ببعض.. وان كنت لا استطيع كيف اكتب برنامجي ومعادلاتي واين؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يا اختي , طالما انكي تبرمجين بالـسي ++ ومتمكنه من كتابة الكود بها , وتبحثين عن واجهه سهلة مثل الفيجوال بيسيك ولا تحتاج لتعقيدات في التعامل وحمل هم انشاء واجهة البرنامج , فالخيار الأمثل لكي هو السي شارب

واجهتها سهله جدا مثل الفيجوال بيسيك

بناء الكود منسق و برمجه شيئيه وتقريبا نفس كود السي ++ (من دون المؤشرات)

تستطيعي تقسيم المشروع الى أكثر من Class كما في السي++ تماما

يعيب MFC في الفيجوال سي++ أنه ملخبط شويه ( دي وجهة نظري) أقصد في مرحلة التصميم , ويحتاج بعض الوقت للتعود عليه

يعيب البرمجه بالـ API أنكي من المفترض ان تقومي بكتابة كود كل شيء في البرنامج مهما كان قياسيا ومهما كان معتاد استخدامه , فرسم الواجهه تكون بالكود , ووضع الدوات عليها يكون بالكود , في حالة ما يكون البرنامج بسيط للغايه من ناحية الدوات المستخدمه والتعامل مع الواجهه - كما الحال مع مثالك - طبعا يكون من السهل تنفيذ البرنامج بهذا الاسلوب , وطبعا الفائده الكبرى للبرمجه بهذه الطريقه , هي سرعة تنفيذ البرنامج , المساحه النهائيه للبرنامج , عدم احتياج البرنامج للربط مع مكتبات غير قياسيه .....

اما الفيجوال بيسيك : سهل في تصميم الواجهه , منسق في الكود , وسهل المتابعه والفهم , لكن يعيبه بطئ الأداء العام , أحس انه مش دقيق في شغله , يعتمد بصوره اساسيه على مكتبات غير قياسيه , لا يوفر ما توفره لغه مثل السي في التعامل مع الذاكره , لا يعرف شيء عن ترشيد استهلاك الموارد

عن نفسي ارجح لكي اما التعامل بالسي شارب لو تريدين الانتهاء من المشروع بشكل جميل و كود غير معيب, وبسرعه

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

غير هذا يعتبر تضييع للوقت

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اختي الكريمة ..لو كان هناك شيء مما تقولين لكانت كل الناس نقلت كودات فيجوال بيسك إلى ++C و حصلت على أروع برنامج..

للأسف لايمكن ..ولكن الفكرة التي تريدينها معقدة جدا في ++c وتحتاج إلى احترافية و بحث عميق..

كل كود مكانه في مكان طلبه مثل الأزرار

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخ Asm4all

اشكرا جدا جدا جدا على تفصيل وتوضيحك..

وبصراحة لم اتعامل يوما مع السي شارب ..لكن ساحاول فيها ولو وجتها سهلة علي استخدمتها:)

والله يكتب اللي فيه الخير:)

قطعة سكر:)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي eias..

اشكرك على توضيحك

ولكني لا اعتقد ان هذا ماكنت اقصده..

ولكني ايضا سمعت انه يمكنني عمل كود بالسي وربطه مع اكواد ببرنامج الفيجول بيسك

واخيرا يا eias..

اشكرك من كل قلبي على طول بالك واجابتك عن كل استفساراتي

اختك..

قطعة سكر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

طيب اختي ما المشكلة ..إذا كان هدفك هو تعديلات صور و إضافات عليها..فأعتقد هذا يمكن عمليه بسهولة بالvb.net باستخدام الGDI+

خصوصا إذا كان البرنامج غير ضخم..و كنت بتمنى أفيدك ..بهذا الموضوع..بس أنا بنصحك باستخدام Visual Studio.net لأن اللغات تقترب من بعضها..ربما يفيدك ذلك .

وشكرا

تم تعديل بواسطه eias
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .