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

[ تمت الإجابة ]كيفية عمل Compile لبرنامج

مغلق
بدأه hello_world في 24 نوفمبر 2008 · 14 رد · 3,595 مشاهدة · في أرشيف قسم Windows APIs
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته, تحية طيبة للجميع ... ارغب بتعلم win32 api ولذلك قمت بشراء كتاب windows programming للكاتب petzold ولكن واجهتني مشكلة وهي انني استخدم visual studio 2005 بينما يشرح الكتاب visual studio 6 ... الرجاء مساعدتي لأقوم بعمل compile للبرامج في بيئة visual studio 2005. يعني كيف يمكنني كتابة برامج exe تنفذ على اي جهاز دون الحاجة الى وجود net framework ?????

#2

تجنب فيجوال ستوديو 2005 استعمل PELLES C او DEVC++ او CODEBLOCKS فهي اخف على حاسوبك و اسهل

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#3

شكرا اخي fkugd2003 على التكرم بالرد ... وشكرا على النصيحة القيمة ولكني ارغب في معرفة طريقة عمل تطبيق win32 من خلال visual studio 2005 ... الرجاء التكرم بارشادي الى الطريقة الصحيحة لذلك. وشكرا

#4

VS2005 لا يدعم WIN32 للاسف لكن يمكنك ان تقوم بوضع TEMPLATE انظر الموضوع

http://www.codeproject.com/KB/macros/VCNetCustomWizard.aspx

للعلم المترجم يسمح باستعمال WIN32 الا ان VS لا يظهر ذلك

لذلك تراني انصحك بتجنبه سبب حجمه الكبير و استهلاكه للموارد

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#5
اقتباس
VS2005 لا يدعم WIN32 للاسف

:blink: :blink: :blink:

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#6

كون vs2005 لايدعم win32 api فهذا شيء مستحيل ... قصدي كل برامج ميكروسوفت حتى في windows 7 هي برامج win32 api ومكتوبة بواسطة visual studio وبالتالي فانا فعلا اشك في ان vs2005 لايدعم win32 api !!!!!!!!!!!!!!!!!!!!!! هذا بالاضافة الى ان اغلب tutorials التي وجدتها على النت تنصح بتنفيذ امثلتها باستخدام vs 2005 أو vs 2008 ... انا فعلا محتار في هذا الموضوع

#7

من أجل تنفيذ الكود :

انشئ مشروع جديد فارغ.

أضف اليه ملف امتدادة c وليس cpp

نفذ برنامجك .

جرب المثال التالي:

  1. #include <windows.h>
  2.  
  3. const char g_szClassName[] = "myWindowClass";
  4.  
  5. #define IDC_MAIN_EDIT 101
  6.  
  7. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  8. {
  9. switch(msg)
  10. {
  11. case WM_CREATE:
  12. {
  13. HFONT hfDefault;
  14. HWND hEdit;
  15.  
  16. hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "",
  17. WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHS
    CROLL,
  18. 0, 0, 100, 100, hwnd, (HMENU)IDC_MAIN_EDIT, GetModuleHandle(NULL), NULL);
  19. if(hEdit == NULL)
  20. MessageBox(hwnd, "Could not create edit box.", "Error", MB_OK | MB_ICONERROR);
  21.  
  22. hfDefault = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
  23. SendMessage(hEdit, WM_SETFONT, (WPARAM)hfDefault, MAKELPARAM(FALSE, 0));
  24. }
  25. break;
  26. case WM_SIZE:
  27. {
  28. HWND hEdit;
  29. RECT rcClient;
  30.  
  31. GetClientRect(hwnd, &rcClient);
  32.  
  33. hEdit = GetDlgItem(hwnd, IDC_MAIN_EDIT);
  34. SetWindowPos(hEdit, NULL, 0, 0, rcClient.right, rcClient.bottom, SWP_NOZORDER);
  35. }
  36. break;
  37. case WM_CLOSE:
  38. DestroyWindow(hwnd);
  39. break;
  40. case WM_DESTROY:
  41. PostQuitMessage(0);
  42. break;
  43. default:
  44. return DefWindowProc(hwnd, msg, wParam, lParam);
  45. }
  46. return 0;
  47. }
  48.  
  49. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
  50. LPSTR lpCmdLine, int nCmdShow)
  51. {
  52. WNDCLASSEX wc;
  53. HWND hwnd;
  54. MSG Msg;
  55.  
  56. wc.cbSize = sizeof(WNDCLASSEX);
  57. wc.style = 0;
  58. wc.lpfnWndProc = WndProc;
  59. wc.cbClsExtra = 0;
  60. wc.cbWndExtra = 0;
  61. wc.hInstance = hInstance;
  62. wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  63. wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  64. wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
  65. wc.lpszMenuName = NULL;
  66. wc.lpszClassName = g_szClassName;
  67. wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
  68.  
  69. if(!RegisterClassEx(&wc))
  70. {
  71. MessageBox(NULL, "Window Registration Failed!", "Error!",
  72. MB_ICONEXCLAMATION | MB_OK);
  73. return 0;
  74. }
  75.  
  76. hwnd = CreateWindowEx(
  77. 0,
  78. g_szClassName,
  79. "theForger's Tutorial Application",
  80. WS_OVERLAPPEDWINDOW,
  81. CW_USEDEFAULT, CW_USEDEFAULT, 480, 320,
  82. NULL, NULL, hInstance, NULL);
  83.  
  84. if(hwnd == NULL)
  85. {
  86. MessageBox(NULL, "Window Creation Failed!", "Error!",
  87. MB_ICONEXCLAMATION | MB_OK);
  88. return 0;
  89. }
  90.  
  91. ShowWindow(hwnd, nCmdShow);
  92. UpdateWindow(hwnd);
  93.  
  94. while(GetMessage(&Msg, NULL, 0, 0) > 0)
  95. {
  96. TranslateMessage(&Msg);
  97. DispatchMessage(&Msg);
  98. }
  99. return Msg.wParam;
  100. }
  101.  

من أجل مزيد من الامثله والشرح

tvquran_6.gif

#8

عندما اقوم بعمل build لأي برنامج باستخدام visual studio 2005 فإن كل شيء يعمل كما يجب ( قصدي ان exe الناتج يعمل عند تنفيذه على جهازي ولكن عند نسخه الى جهاز اخر فإنه لا يعمل) بينما عندما اقوم بعمل نفس الخطوات باستخدام visual studio 6 فأن exe الناتج يعمل على اي جهاز انسخه اليه .... شكرا

#9

السلام عليكم ,,

اقتباس
VS2005 لا يدعم WIN32 للاسف لكن يمكنك ان تقوم بوضع TEMPLATE انظر الموضوع

http://www.codeproject.com/KB/macros/VCNetCustomWizard.aspx

للعلم المترجم يسمح باستعمال WIN32 الا ان VS لا يظهر ذلك

لذلك تراني انصحك بتجنبه سبب حجمه الكبير و استهلاكه للموارد

من قال هذا الكلام يا أخي :)

VS2005 كان موجهاً للـ NET. بشكل مباشر و يمكن اعداده لينتج تطبيقات windows أصلية,

العديد من الطلبات اقترحت إضافة ميزة الترجمة إلى Native Code و خصوصاً في ++VC ,, الميزة كانت موجودة أصلاً و لكنها تحتاج إلى تغيير إعدادات المترجم و المكتبات و بعض الإعدادت الأخرى ,,

عموماً الميزة موجودة بشكل افتراضي في 2008 ++VC و الذي أعتقد أنك من المفروض أن تستعمله بدلاً من نسخة 2005 :)

عموماً اختيارك لمترجم مايكروسوفت هو اختيار صائب بحسب رأيي,

و لكن mingw و codeblocks يستحقان التجربة بكل تأكيد,

بالنسبة لترجمة البرنامج و عدم عمله على فتأكد من أن البرنامج تترجمه على الوضعية release و ليس debug ,,

تحياتي ,,

#10

لا تلوموني انا

لا تلوموني انا القيت نظرة خفيفة على VS2005 فلم اجد في IDE مشروع WIN32 لكني قلت ان COMPILER يسمح باخراج برنامج WIN32

انا انسان يستعمل CONSOLE و تعاملي مع MICROSOFT-NET يتم عن طريق #DEVELOP اما VS فلا اقدر ان اتمالك اعصابي حين اري 3GB تطير مع الحمام

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#11

حصل خير أخي :)

اقتباس
اما VS فلا اقدر ان اتمالك اعصابي حين اري 3GB تطير مع الحمام

:D :D :D

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#12

حتى BROOK MILES صاحب THE FORGERS اشار لذلك

http://www.winprog.org/tutorial/msvc.html

اقتباس
This should far and away be your first choice for a Win32 development environment. It's free, it's complete, it is superbly documented by Microsoft and third party authors, and is widely supported by the Win32 community.

رحم الله ايام PELLES C و CODEBLOCKS :(

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#13

بالفعل وكما اشار الأخ Khaled.Alshaya فان المشكلة كانت في انني كنت اتعامل مع الملف الموجود في debug وليس في release .... اشكرك اخي Khaled.Alshaya على مساعدتي في حل هذه المشكله التي واجهتني حتى قبل ان ابدأ واشكر جميع الأخوة الذين ساعدوني واتمنى منكم دائما ان لا تبخلو علينا بمساعدتكم وشكرا للجميع ( fkugd2003 , GamingMasteR, فهدالشلوي)

#14
اقتباس
VS2005 لا يدعم WIN32 للاسف

فيها وجهة نظر إذا كنت بتقصد نسخة الـ Express

دولة الخلافة الاسلامية في المخاض الاخير وميلادها قريب

حزب التحرير : التزم الطريق الصحيح الشرعي الوحيد لاعادة دولة الخلافة الاسلامية .

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

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

#15

لا أعلم بخصوص VS 2005 Express لكن نسخة 2008 منه تدعم win32

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

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

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