سؤال

ولدي DLL C ++ بما في ذلك الموارد النقطية التي تم إنشاؤها بواسطة Visual Studio.

وعلى الرغم من أنني يمكن تحميل DLL في VB6 باستخدام LoadLibrary، وأنا لا يمكن تحميل الموارد الصورة إما باستخدام LoadImage أو باستخدام LoadBitmap. عندما أحاول الحصول على الخطأ باستخدام يقوم GetlastError ()، فإنه لا يتلقى إرجاع أية أخطاء.

ولقد حاولت استخدام LoadImage وLoadBitmap في برنامج آخر C ++ مع نفس DLL وأنها تعمل دون أي مشاكل.

هل هناك أي طريقة أخرى للوصول إلى الصور النقطية الموارد في دلس C ++ باستخدام VB6؟

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

المحلول

ومنذ كنت تستخدم معرف رقمي من الصورة النقطية كسلسلة، لديك لإضافة "#" أمام ذلك:

DLLHandle = LoadLibrary("Mydll.dll")
myimage = LoadBitmap(DLLHandle, "#101")  ' note the "#"

في C ++ يمكنك أيضا استخدام الماكرو MAKEINTRESOURCE، الذي هو مجرد الزهر إلى LPCTSTR:

imagehandle = LoadBitmap(DLLHandle, MAKEINTRESOURCE(101));

نصائح أخرى

وكنت قد حصلت على فكرة الحق. ربما لديك دعوة خاطئة. ربما كنت قد تظهر قليلا من التعليمات البرمجية كما لا أستطيع تخمين لما كنت عابرة.

في VB6:

وأعلن الخاصة الدالة LoadLibrary ليب "KERNEL32" الاسم المستعار "LoadLibraryA" (الأساسية ByVal lpLibFileName كسلسلة) طالما

وأعلن الخاصة وظيفة LoadBitmap ليب "USER32" الاسم المستعار "LoadBitmapA" (الأساسية ByVal HINSTANCE وطويل، الأساسية ByVal lpBitmapName كسلسلة) طالما

وDLLHandle = فشل LoadLibrary ( "Mydll.dll")

وmyimage = LoadBitmap (DLLHandle، "101")

ويأتي مع myimage ك 0 الرغم من DLLHandle غير صفرية، ومع ذلك، في C ++:

وimagehandle = LoadBitmap (DLLHandle، LPCSTR (101))؛

والأعمال!

وشكرا جزيلا

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