السلام عليكم ورحمة الله وبركاته
أنا حقيقة بتعلم برمجة دايركت أكس عن
Direct Draw
عن طريق ربطها بالفيجوال بيسك فالهمه صدفنى هذا الكود وهو يتكلم عن السطوح الخلفى والرئيسى إلخ
المهم ده الكود
الكود
Option Explicit
Dim Dx As New DirectX7
Dim Dd As DirectDraw7
Dim Ddsd As DDSURFACEDESC2
Dim Primary As DirectDrawSurface7
Dim Back_Buffer As DirectDrawSurface7
Private Sub Command1_Click()
Set Dd = Dx.DirectDrawCreate("")
Dd.SetCooperativeLevel Me.hWnd, DDSCL_EXCLUSIVE Or DDSCL_FULLSCREEN Or DDSCL_ALLOWREBOOT
Dd.SetDisplayMode 800, 600, 16, 0, DDSDM_DEFAULT
Show
With Ddsd
.lFlags = DDSD_CAPS Or DDSD_BACKBUFFERCOUNT
.ddsCaps.lCaps = DDSCAPS_PRIMARYSURFACE Or DDSCAPS_FLIP Or DDSCAPS_COMPLEX
.lBackBufferCount = 1
End With
Set Primary = Dd.CreateSurface(Ddsd)
Ddsd.ddsCaps.lCaps = DDSCAPS_BACKBUFFER
Set Back_Buffer = Primary.GetAttachedSurface(Ddsd.ddsCaps)
Do
Back_Buffer.setDrawWidth 1
Back_Buffer.SetForeColor RGB(0, 0, 0)
Back_Buffer.SetFillColor RGB(0, 20, 100)
Back_Buffer.DrawBox 0, 0, 800, 600
Primary.Flip Nothing, DDFLIP_WAIT
DoEvents
Loop
End Subاللى انا أريد إن أفهمه أولاً
Set Dd = Dx.DirectDrawCreate("")
Dd.SetCooperativeLevel Me.hWnd, DDSCL_EXCLUSIVE Or DDSCL_FULLSCREEN Or DDSCL_ALLOWREBOOT
Dd.SetDisplayMode 800, 600, 16, 0, DDSDM_DEFAULT
Showأنا عارف أنه هذه الجزئية خاصة بربط الديركت أكس بكرت العرض واللى هو رمزه فارغ
والسطر الثانى
Form وهي 1 Direct Draw تحديد الشاشة الرئيسية التي يستخدمها
وجعله ملئ الشاشة وأن يكون كارت العرض مقتصر فقط على البرنامج
والسماح بأظهار الشاشة end task
اللى انا مش فهمه يعنى ايه DDSCL
التى تم ذكرها أكثر من مرة
أما فى السطر
Dd.SetDisplayMode 800, 600, 16, 0, DDSDM_DEFAULT
أيه فائدة الصفر هنا أنا عارف أنه أول رقمين دقة عرض الشاشة والتانى الألوان وكمان يعنى ايه
DDSDM_DEFAULT
وفى السطر الاخير ما فائدة وضع show
وعندما حذفتها الكود لم يعمل
أما هذا الجزء
With Ddsd .lFlags = DDSD_CAPS Or DDSD_BACKBUFFERCOUNT .ddsCaps.lCaps = DDSCAPS_PRIMARYSURFACE Or DDSCAPS_FLIP Or DDSCAPS_COMPLEX .lBackBufferCount = 1 End With Set Primary = Dd.CreateSurface(Ddsd) Ddsd.ddsCaps.lCaps = DDSCAPS_BACKBUFFER Set Back_Buffer = Primary.GetAttachedSurface(Ddsd.ddsCaps)
أنا مش فهمه خالص وحاولت أحذف من الكود وأعدل ولكن مفهمتش ياريت حد يفهونى بشئ من التفصيل
أما بقيت الكود أنا فهمه ولكن أريد إن أفهم
Back_Buffer.DrawBox 0, 0, 800, 600 Primary.Flip Nothing, DDFLIP_WAIT DoEvents Loop

