Dev c++ Api & dll

Signaler
Messages postés
12
Date d'inscription
vendredi 27 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2003
-
Messages postés
12
Date d'inscription
vendredi 27 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2003
-
Tout d'abord lu a tous :big)
comme j'en avais marre de chercher tout seul dans mon coin, ben j'a decidé de veindre :approve)

Bon voila mon problème, dev c++ ne connait pas la fonction InitializeFlatSB ( et donc tous les composant flat Scroll Bar).
Ces fonctions se trouve dans la dll comctl32.dll ( d'après cro$oft version 4.71 et plus ;) ).
Et voici donc ma question .......
comment fait-on pour aller chercher ces fonctions dans la dll ??? On plus généralement comment fait-on pour se linker avec une fonction d'une librairie ????????

Merci d'avance.

8 réponses

Messages postés
117
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
14 janvier 2003
2
Salut,

Essaye de rajouter l'option -lcomctl32 ou -llibcomctl32 au linker (accessible par Atl+P).
Messages postés
12
Date d'inscription
vendredi 27 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2003

j'avais déja essayé, mais en fait c'est que dev c++ n'a même pas les entêtes de fonction dans le .h qui devrais justement les contenir :sad) , en fait dev c++ ne support ces fonction de l'api window je crois :sad) .

Merci quand même et @+ ;)
Messages postés
117
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
14 janvier 2003
2
Bon OK. Il va donc falloir charger la dll dynamiquement. Voila les etapes :

1- Declare ta fonction :
typedef BOOL (MYINIT*) (HWND)
BOOL type de retour
MYINIT (ou ce que tu veux) alias de la fonction
HWND type des parametres d'entree (ici un seul)

2- Lorsque tu en as besoin il te faut :
HINSTANCE hLib;
MYINIT InitFnt;

3- Charge la dll
hLib = LoadLibrary("comctl32.dll");
Verifie que hLib != NULL

4- Charge la fonction :
InitFnt = (MYINIT) GetProcAddress(hLib, "InitializeFlatSB");

5- Utilise la fonction :
(InitFnt) (hWnd);
C'est comme ci que tu faisais :
InitializeFlatSB(hWnd);

6- Decharge la DLL :
FreeLibrary(hLib);

Voila, c'est lourd dingue mais si tu n'as que dev c++ y aura pas d'autre moyen.
Messages postés
12
Date d'inscription
vendredi 27 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2003

HHHHHHHHHHHAAAAAAAAAAAAA NNNNNNNOOOOOONNNNNNN (crie de douleur !!!!!!!!)

y'a po d'autre moyen que ca parce que c'était le dernière espoir que j'avais avant de le faire et puis même ca sa marche po, sa compile mais sa plante lamentablement (violation d'accès !!!!! :sad) ) SNNNNNNNNNIIIIIIIFFFFFFFFFFFFFFFFFFFF

(au fait t'aurais po vu ca sur MSDN de Mr Gates ??? ;) )
Messages postés
12
Date d'inscription
vendredi 27 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2003

PS: je crois que ton étoile est mal placé typedef BOOL (MYINIT*) (HWND)

ET SURTOUT MERCI DE D'ETRE OCCUPE DE MON MISERABLE CAS.
Messages postés
117
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
14 janvier 2003
2
Euh ecoute, je viens de verifier et ca marche tres bien. Es tu sur que hLib != NULL, parce que sinon la violation d'acces c'est normal.
Et oui c'est vrai l'etoile etait du mauvais cote.
Mais normalement ca doit marcher sans probleme.
Messages postés
12
Date d'inscription
vendredi 27 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2003

tu l'as mis ou l'appelle de fonction ??????

je l'ai mis juste apres le createwindowex c'est pis etre à cause de sa ????????
Messages postés
12
Date d'inscription
vendredi 27 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2003

laisse tombé c'est ca ca fait plus de 30 minutes que je cherches alosr que j'ai bon MERDE!!!!!!!!
c t juste mon code qui était mal placé SNIFFFFFFF

merci pour tout et c'est bien de rencontrer d'autre fou de la bidouille de dll and co MDR

PS: il faut absolement faire un ShowWindow avant d'appeler cette fonction, c'est con mais c'est comme ca ;)