السلام عليكم :
لدي المشكلة الآتية :
في لعبتي لدي أكثر من مرحلة واحدة .. حيث أن كل مرحلة لديها تابع معالجة الكيبورد مختلفة عن الأخرى بمعنى آخر :
لدي :
class level1 {
static LRESULT CALLBACK WindowProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
};المرحلة الثانية :
class level2 {
static LRESULT CALLBACK WindowProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
};قمت بإنشاء النافذة الرئيسية بالشكل التالي :
WNDCLASSEX windowClass; // هنا جعلت تابع معالجة الكيبورد للتابع الموجود في المرحلة الأولى windowClass.lpfnWndProc = (WNDPROC)(Level1::WindowProc); RegisterClassEx (&windowClass); //إنشاء النافذة و إلى آخره ----------------------------
عند الوصول إلى نهاية المرحلة الأولى سيتم نقل المعالجة من المرحلة الأولى إلى المرحلة الثانية ..
حاولت مايلي : (جميع المحاولات صحيحة أي لا يوجد أخطاء و لكن المشكلة ظلت )
قمت بجعل متحول عام WNDCLASSEX windowClass ثم نفذت التعليمة التالية :
windowClass.lpfnWndProc = (WNDPROC)(Level2::WindowProc);
لم تنحل المشكلة و ظل التابع في level1 هو الذي يتولى المعالجة ...
جربت الحل الثاني :
قمت أولاً بعملية unregister للكلاس الذي قمت بإنشائه في المرحلة الأولى
UnregisterClass( );// windowClass للكلاس
ثم انشأت داخل الكلاس level2 صف جديد :
WNDCLASSEX windowClass; // هنا جعلت تابع معالجة الكيبورد للتابع الموجود في المرحلة الثانية windowClass.lpfnWndProc = (WNDPROC)(Level2::WindowProc); RegisterClassEx (&windowClass);
و لم ينجح الأمر ..
فهل من حل ؟؟؟
أو أني سأضطر إلى جعل تابع واحد هو الذي يعالج جميع الأحداث في المراحل ؟؟؟؟؟
و عذراً للإطالة ..