السلام عليكم ورحمة الله وبركاته
أخوانى الكرام المشكلة باختصار انى قمت بوضع وظيفة لعمل Mask لصورة بملف DLL وأحاول أستخدام الوظيفة من خلال فيجوال بيزيك 6 ولكن الوظيفة لا تعطينى النتيجة المرجوة لماذا لأ أعرف
الوظيفة تعمل بشكل طبيعى على الفيجول سى
واليكم كود الوظيفة الموضوعة بملف ال DLL والكود المكتوب بالفيجوال بيزيك
BITMAP __stdcall Maske (HBITMAP HBitmap ,COLORREF BackColor,HWND hdesWin)
{
HDC Dhdc,memDCSourc,memDCMask;
HBITMAP hBitMapMask;
BITMAP BitMapInf;
Dhdc=GetDC(hdesWin);
GetObject(HBitmap, sizeof(BITMAP), &BitMapInf);
BitMapMask = CreateBitmap(BitMapInf.bmWidth ,BitMapInf.bmHeight , 1, 1,NULL);
memDCMask =CreateCompatibleDC(Dhdc);
SelectObject(memDCMask,hBitMapMask);
memDCSourc=CreateCompatibleDC(Dhdc);
SelectObject(memDCSourc,HBitmap)
SetBkColor(memDCSourc, BackColor);
BitBlt(memDCMask,0,0,BitMapInf.bmWidth ,BitMapInf.bmHeight ,memDCSourc,0,0,SRCCOPY);
BitBlt(Dhdc,0,0,BitMapInf.bmWidth ,BitMapInf.bmHeight ,memDCMask,0,0,SRCCOPY);
ReleaseDC(hdesWin,Dhdc);
DeleteDC(memDCMask);
DeleteDC(memDCSourc);
return hBitMapMask;
}كود الفيجول بيزيك
تم أضافة PictureBox
CommandButton
Private Declare Function Maske Lib "BitmapMask.dll" (ByVal Hptimap As Long, ByVal mhwnd As Long, ByVal BacolorVal As Long) As Long Private Sub Command1_Click() Dim MaskHandle As Long MaskHandle = Maske(Picture1.Picture.Handle, Picture1.hWnd, RGB(110, 155, 188)) End Sub
ارجو المساعدة فى أكتشاف السبب فى عدم عمل هذه الوظيفة ولكم جزيل الشكر