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

مالفرق بين الappliciton والconsol

بدأه dhoooom في 25 ديسمبر 2008 · 6 رد · 1,093 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

ممكن اعرف مالفرق بين الapplicion وبين برامج الconsol

حيث انه لدي مشروع بالapplicition واريد ان اضيف عليه تعديلات من برامج اخرى بالconsol

حيث ان الmain في الاببليكيشن هي كالتالي:

  1. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)

  2. {
  3.  
  4.  
  5.  
  6.  
  7.  
  8. WNDCLASSEX windowClass; // window class
  9. HWND hwnd; // window handle
  10. MSG msg; // message
  11. bool done; // flag saying when our app is complete
  12. DWORD dwExStyle; // Window Extended Style
  13. DWORD dwStyle; // Window Style
  14. RECT windowRect;
  15.  
  16. // temp var's
  17. int width = 800;
  18. int height = 600;
  19. int bits = 32;
  20.  
  21. //fullScreen = TRUE;
  22.  
  23. windowRect.left=(long)0; // Set Left Value To 0
  24. windowRect.right=(long)width; // Set Right Value To Requested Width
  25. windowRect.top=(long)0; // Set Top Value To 0
  26. windowRect.bottom=(long)height; // Set Bottom Value To Requested Height
  27.  
  28. // fill out the window class structure
  29. windowClass.cbSize = sizeof(WNDCLASSEX);
  30. windowClass.style = CS_HREDRAW | CS_VREDRAW;
  31. windowClass.lpfnWndProc = WndProc;
  32. windowClass.cbClsExtra = 0;
  33. windowClass.cbWndExtra = 0;
  34. windowClass.hInstance = hInstance;
  35. windowClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); // default icon
  36. windowClass.hCursor = LoadCursor(NULL, IDC_ARROW); // default arrow
  37. windowClass.hbrBackground = NULL; // don't need background
  38. windowClass.lpszMenuName = NULL; // no menu
  39. windowClass.lpszClassName = "MyClass";
  40. windowClass.hIconSm = LoadIcon(NULL, IDI_WINLOGO); // windows logo small icon
  41.  
  42. // register the windows class
  43. if (!RegisterClassEx(&windowClass))
  44. return 0;
  45.  
  46. if (fullScreen) // fullscreen?
  47. {
  48. DEVMODE dmScreenSettings; // device mode
  49. memset(&dmScreenSettings,0,sizeof(dmScreenSettings));
  50. dmScreenSettings.dmSize = sizeof(dmScreenSettings);
  51. dmScreenSettings.dmPelsWidth = width; // screen width
  52. dmScreenSettings.dmPelsHeight = height; // screen height
  53. dmScreenSettings.dmBitsPerPel = bits; // bits per pixel
  54. dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
  55.  
  56. //
  57. if (ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
  58. {
  59. // setting display mode failed, switch to windowed
  60. MessageBox(NULL, "Display mode failed", NULL, MB_OK);
  61. fullScreen=FALSE;
  62. }
  63. }
  64.  
  65. if (fullScreen) // Are We Still In Fullscreen Mode?
  66. {
  67. dwExStyle=WS_EX_APPWINDOW; // Window Extended Style
  68. dwStyle=WS_POPUP; // Windows Style
  69. ShowCursor(FALSE); // Hide Mouse Pointer
  70. }
  71. else
  72. {
  73. dwExStyle=WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; // Window Extended Style
  74. dwStyle=WS_OVERLAPPEDWINDOW; // Windows Style
  75. }
  76.  
  77. AdjustWindowRectEx(&windowRect, dwStyle, FALSE, dwExStyle); // Adjust Window To True Requested Size
  78.  
  79. // class registered, so now create our window
  80. hwnd = CreateWindowEx(NULL, // extended style
  81. "MyClass", // class name
  82. "Texture Example 2: The Waving Flag Example", // app name
  83. dwStyle | WS_CLIPCHILDREN |
  84. WS_CLIPSIBLINGS,
  85. 0, 0, // x,y coordinate
  86. windowRect.right - windowRect.left,
  87. windowRect.bottom - windowRect.top, // width, height
  88. NULL, // handle to parent
  89. NULL, // handle to menu
  90. hInstance, // application instance
  91. NULL); // no extra params
  92.  
  93. // check if window creation failed (hwnd would equal NULL)
  94. if (!hwnd)
  95. return 0;
  96.  
  97. ShowWindow(hwnd, SW_SHOW); // display the window
  98. UpdateWindow(hwnd); // update the window
  99.  
  100. done = false; // intialize the loop condition variable
  101. Initialize(); // initialize OpenGL
  102.  
  103. // main message loop
  104. while (!done)
  105. {
  106. PeekMessage(&msg, hwnd, NULL, NULL, PM_REMOVE);
  107.  
  108. if (msg.message == WM_QUIT) // do we receive a WM_QUIT message?
  109. {
  110. done = true; // if so, time to quit the application
  111. }
  112. else
  113. {
  114. if (keyPressed[VK_ESCAPE])
  115. done = true;
  116. else
  117. {
  118. Render();renderScene();
  119.  
  120. TranslateMessage(&msg); // translate and dispatch to event queue
  121. DispatchMessage(&msg);
  122. }
  123. }
  124. }
  125.  
  126. free(bitmapData);
  127.  
  128. if (fullScreen)
  129. {
  130. ChangeDisplaySettings(NULL,0); // If So Switch Back To The Desktop
  131. ShowCursor(TRUE); // Show Mouse Pointer
  132. }
  133.  
  134. return msg.wParam;
  135.  
  136. }
  137.  
  138.  

والmain في الكونسول هي كالتالي:

  1. int main(int argc, char **argv)
  2. {
  3.  
  4. glutInit(&argc,argv);
  5.  
  6. glutInit(&argc, argv);
  7. glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGBA);
  8. glutInitWindowPosition(100,100);
  9. glutInitWindowSize(400,400);
  10. glutCreateWindow("sdfghjkjhgfdsdfghj");
  11. glutDisplayFunc(renderScene);
  12. glutReshapeFunc(changeSize);
  13. glutTimerFunc(0,timer,1000);
  14. glutMainLoop();
  15.  
  16. return(0);
  17. }
  18.  

المين الاولى لبرنامج بالابلكيشن وانا اريد ان اضيف له ساعه رقميه لكن الساعه الرقميه بالكونسول كيف ادمجهم مع بعض

بليز حلو لي هذه المشكلة والله اني بحثت عنها بس ما فيه اي شي عنها..

اذا فيه اي شي مو واضح قولولي عشان اوضح لكم

#2

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

بشكل عام WinMain مع GUI يعني البرامج المرئية التي لها واجهة ..

أما main فمع console التي هي عبارة عن شاشة سوداء .

مالفرق ؟

http://blogs.msdn.com/oldnewthing/archive/...04/1205831.aspx

صراحة لا أعرف الفرق بشكل واضح , لأنه يمكن انتاج برامج مرئية بالاعتماد على الدالة main , ولكن حسب ما أظن والله أعلم ,

أنك عندما تعتمد على الدالة main فانه سيتم حجز ذاكرة للBuffer بشاشة الConsole السوداء , لذلك لو لم تحتاج الى الشاشة السوداء console فقم باستدعاء WinMain .

في الاخير .. المترجم يبدأ من نقطة الادخال Entry Point .. التي تحددها أنت من خلال خيارات المترجم , وبناء على تلك النقطة يقوم المترجم بالانطلاق ,, ويمكن يقوم بعمل أشياء أخرى ..

هذا كله غير مهم ..

لكن لم أفهم السؤال الأهم .. وهو

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

البرنامج الأول يعتمد على Win32 API و OpenGL على ما أتوقع.. والثاني يعتمد على OpenGL و GLUT ..

اذا عملت ساعة في البرنامج الثاني .. فانسخي نفس الكود الخاص بالساعة مع عمل التغييرات اللازمة الى الكود الأول :

1- ستتغيّر طريقة الحصول على الوقت ..

يجب ان يوجد الاطلاع الكامل في Win32 API .. حتى يمكن عمل ساعة في البرنامج الاول .

لذلك .. قم بالتالي :

1- ربط OpenGL بالبرنامج الأول ,

2- الحصول على دالة الوقت .. باستخدام الدالة WM_TIMER على سبيل المثال .

3- ارسم الساعة بشكل عادي كما في البرنامج الثاني .

ممكن فهمت السؤال بشكل خاطئ , لذلك أتمنى التوضيح أكثر ..

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#3

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

والحمدلله فيه احد فاهم في هالمجال ...

عشان توضح لك الفكره اكثر

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

اوكي

برنامج العلم يرفرف والصوره

هنا البرنامج

http://www.4nw.net/get-12-2008-zw8poapo.rar

#4

الاخ dhoooom هل بالامكان ان ترفق برنامج ال Console (أن ترفق الملف التنفيذي الخاص به)

#5

لماذا ارفق الكونسول ......

لماذا؟؟؟

#6

يا عم لا تزعل نفسك biggrin.gif

اردت أن أطلع عالكود

تم تعديل هذه المشاركة بواسطة AND في 30 ديسمبر 2008 في 17:40

#7

انا مش زعلان ....

بس ياليت عندما تطلب شي توضح :lol:

الان ممكن اطلب

طلب صغيررررر B)

>>اول مصعب والا ن تتطلب :rolleyes:

ياليت تساعدني

لو عندي هذا البرنااااامج برنامج العلم اوكي

واريد اضيف عليه برنامج اخر .مثلا برنامج يكتب بالعربي

http://www.almlf.com/get-12-2008-6ixfi1ui.txt

كيف اضيفه ...

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

:)

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