سؤال

لدي .mbm ملف نسخ إلى الجهاز باستخدام هذا الخط في .ملف pkg

"$(EPOCROOT)epoc32\data\z\resource\apps\MyApp.mbm" -"!:\resource\apps\MyApp.mbm"

ثم في رسم وظيفة من الحاويات أفعل هذا..

_LIT(KMBMFile , "\\resource\\apps\\MyApp.mbm" );
CFbsBitmap* iBitmap;

iBitmap->Load(KMBMFile, 0);
gc.BitBlt(Rect().iTl, iBitmap);

ومع ذلك الخط iBitmap->Load(KMBMFile, 0); يثير كيرن-EXEC:0 الذعر

"هذا الذعر التي أثيرت عندما النواة لا يمكن العثور على الكائن في وجوه مؤشر العملية الحالية أو الراهنة الخيط باستخدام الكائن المحدد مؤشر رقم (الخام التعامل مع عدد)."

يمكن لأي شخص أن المكان الذي أنا ذاهب خاطئ ؟

وذلك بفضل!

هل كانت مفيدة؟

المحلول

ولقد كنت dereferencing مؤشر غير مهيأ، هل يمكن أيضا استخدام هذا:

// remember to include the EIK environemnt include file
#include <eikenv.h>

_LIT(KMBMFile , "\\resource\\apps\\MyApp.mbm" );
CFbsBitmap* iBitmap;

iBitmap = iEikonEnv->CreateBitmapL( KMBMFile, 0 );
gc.BitBlt( Rect().iTl, iBitmap );

نصائح أخرى

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

إنشاء ملف MBM في ملف MMP باستخدام مقتطف مثل هذا

START BITMAP    MyApp.mbm
HEADER
TARGETPATH      \resource\apps
SOURCEPATH      ..\gfx
SOURCE          c24 background.bmp
END

ضمان الخاص بك .bmp يتم حفظ الصور في 32 بت من برنامج فوتوشوب أو ما شابه

ثم تأكد من الخاص بك MBM يتم نسخ الملف إلى جهازك في ملف PKG

"$(EPOCROOT)epoc32\data\z\resource\apps\MyApp.mbm" -"!:\resource\apps\MyApp.mbm"

ثم في رسم وظيفة من الحاويات الخاصة بك استخدام التعليمات البرمجية مثل هذا..

_LIT(KMBMFile , "C:\\RESOURCE\\APPS\\MyApp.mbm" );
CFbsBitmap* iBitmap = new (ELeave) CFbsBitmap;
TInt retval = iBitmap->Load(KMBMFile, 0);
gc.BitBlt(Rect().iTl, iBitmap);

وهذا رسم النقطية الخاصة بك في أعلى نقطة اليسرى من الشاشة (مفيدة صورة الخلفية)

CCoeControl::Draw() رمز يجب أن لا تفشل و بالتأكيد يجب أن لا يترك (وقد لا زائدة ..L).في مقتطف الشفرة أعلاه هناك اثنين يحتمل الخطأ-توليد المكالمات - iBitmap منشئ ، iBitmap->Load().الصورة النقطية يجب أن يكون قبل المخصصة ، لم تخصص في Draw() - إذا كان هناك ترك أشياء سيئة ستحدث.

أيضا ، من خلال اتفاقية الطبقة فقط الأعضاء المتغيرات تبدأ مع "أنا" ، iBitmap أعلاه هو لا.

انظر سيمبيان معايير الترميز لمزيد من التفاصيل

ويجب عليك بالتأكيد ليست خلق iBitmap في وظيفة :: رسم لأنه يمكن أن يترك. أفضل للقيام بذلك في ConstructL من CoeControl. نظريا :: دعوة تحميل يمكن التعامل معها في رسم :: لأنها قد تفشل لعدد من الأسباب، وليس كلها قد تكون قاتلة. هل يمكن بسهولة مثلما تفعل هذا عند إنشاء تحكم على الرغم من ذلك ربما كان من الأفضل للتفكير في الامر قليلا. وأود أن أقول أنه إذا كان السيطرة هي في الأساس مجرد وجود لاحتواء نقطية ثم عليك أن تفعل ذلك في ConstructL. إذا كان هناك عدد من الأشياء التي تحكم لا، فإنك قد ترغب في التعامل معها في :: رسم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top