Bonjour !
Je veux utiliser Allegro dans ma propre DLL. Je veux utiliser les fonctions de «allegro.h » et «alfont.h» dans la procédure de ma DLL.
La procédure de ma DLL que j'appellerai depuis une application VB2008 doit avoir pour paramètre d'entrées (Char*, int) et me retourner un (pointeur) Bitmap ou tableau d'entiers.
Je vous montre ce que j'ai fait avec DEV C++ et VB2008 , mais qui malheureusement ne fonctionne pas !
ma DLL est compilée sans erreur sans warnings sous DEV C++. mais quand je fais l'appel de ma DLL depuis mon application VB2008 ca génere une erreur.
dll.h
#ifndef _DLL_H_
#define _DLL_H_
// entête des fonctions
__declspec (dllexport) int GetBitmap (char*, int);
#endif // _DLL_H_
dllmain.c
#include "dll.h"
#include <stdio.h>
#include <stdlib.h>
#include <allegro.h>
#include <alfont.h>
#include <winalleg.h>
__declspec (dllexport) int GetBitmap (char *_ch , int _h){
BITMAP *bmp ;
ALFONT_FONT *user_font;
int _w=0;
//format pour le codage du texte (ASCII, ascii normal)
set_uformat(U_ASCII);
allegro_init();//initialise allegro
alfont_init();//initialise la font
//Charge une police
user_font = alfont_load_font("times.ttf");
// change la taille de police
alfont_set_font_size(user_font, _h);
//créé un bitmap
_w = alfont_text_length(user_font, _ch);
bmp=create_bitmap(_w,_h);
//initialise le bitmap a 0
clear_to_color(bmp,0);
//Déssine "_ch" a patir de la ppolice "user_font" ds le bitmap "bmp" avec la couleur "makecol(r, g, b)"
alfont_textprintf_ex(bmp, user_font, 0, 0, makecol(0, 255, 0), 0, _ch);
//libere la memoire
destroy_bitmap(bmp);
alfont_destroy_font(user_font);
alfont_exit();
allegro_exit();
return 1;
}
BOOL APIENTRY DllMain (HINSTANCE hInst, // Library instance handle.
DWORD reason, // Reason this function is being called.
LPVOID reserved) // Not used.
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
// Returns TRUE on success, FALSE on failure
return TRUE;
}
VB2008
Module Module1
Public Declare Function GetBitmap Lib "d:\Ecriture_DLL.dll" (ByRef c As Char, ByVal h As Integer) As Integer
End Module
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Text = GetBitmap("a", 10)
End Sub
Merci d'avance !