Ajouter un commentaire

fredericmazue

Houlà là, beaucoup de choses à dire.

1) déjà quand on change quelque chose par rapport à ce qu'on faisait avant, on le dit, pour ne pas enduire d'erreurs ceux qui essaient de t'aider sur un forum. Donc là tu as changé de compilateur car je vois "microsoft visual studio 9.0" Ca c'est Visual Studio 2008. Je ne sais pas quelle version tu as installée du 2008 mais soit:

- il vient avec sa propre SDK, et ta SDK XP et elle se télescopent

- il veut la SDK Vista seulement pour être heureux

Bref normalement tu dois utiliser une SDK du niveau du compilateur, c'est à dire Vista pour 2008. Non non ça ne pose pas de problème pour les API Fax. Si tu lis la MSDN tu verras qu'il faut un Windows 2000 minimum ce qui est ton cas.

Ou alors tu installes un Visual 2005 sur ta machine et tu travailles avec. Tu peux garder le 2008, car les Visual Studio cohabitent sans problème.

Bref si tu fais ça, tout tes warnings sauf un doivent disparaître. Si j'étais toi j'installerais un 2005 car c'est la solution la plus simple et directe pour toi.

2) reste donc comme avertissement:

'HCALL' differs in levels of indirection from 'void *

HCALL est un type opaque. Ca veut dire qu'on ne sait pas ce que c'est et qu'on a pas à le savoir. L'avertissement est normal en C. Tu ne l'aurais pas en C++. D'ailleurs tu aurais bien meilleur compte à écrire ton code en C++, par e que au niveau où tu l'utilises, il n'y a pas beaucoup de différence avec C, MAIS c'est plus agréable de traiter avec la JNI de Java en C++ qu'en C et finalement c'est là que tu veux en arriver. Bon tu vas me dire que tu connais et pas C++, mais moi je vais te répondre que tu ne connais ni l'un nu l'autre alors autant choisir le mieux :)

Bref la MSDN dit de mettre NULL alors tu mets NULL :twisted:

3) En C, c'est int main(void) C'est toujours agaçant d'essayer d'aider sur un forum et de voir que les conseils ne sont pas suivis :(

4)

Quote:
(je pense que le problème vient de lui) "warning C4047: '=' : 'HCALL' differs in levels of indirection from 'void *' "

Non le problème vient de toi. Et ton programme plante bien avant d'arriver là où tu crois. Il plante là:

JobParams->SizeOfStruct=sizeof(FAX_JOB_PARAM); <<-- BANG!!

Parce que tu déclares avant:

PFAX_JOB_PARAM JobParams=NULL;

MAIS PFAX_JOB_PARAM ça déclare un pointeur et non une strucutre FAX_JOB_PARAM comme tu le crois. C'est même pour ça qu'il y a un P dans le nom. P comme Pointeur. Tu as bien lu la MSDN pourtant:

typedef struct _FAX_JOB_PARAM {
    DWORD SizeOfStruct;
    LPCTSTR RecipientNumber;
    LPCTSTR RecipientName;
    LPCTSTR Tsid;
    LPCTSTR SenderName;
    LPCTSTR SenderCompany;
    LPCTSTR SenderDept;
    LPCTSTR BillingCode;
    DWORD ScheduleAction;
    SYSTEMTIME ScheduleTime;
    DWORD DeliveryReportType;
    LPCTSTR DeliveryReportAddress;
    LPCTSTR DocumentName;
    HCALL CallHandle;
    DWORD_PTR Reserved[3];
} FAX_JOB_PARAM, *PFAX_JOB_PARAM;

La petite étoile * ça veut dire POINTEUR;

Bref tu déclares un pointeur NULL et après tu affectes dedans alors évidemment.... C'est un peu comme si tu avais une NullPointerException en Java. Tu dois écrire:

FAX_JOB_PARAM JobParams;

et après

if (!FaxSendDocumentA(hFax,"c:\test_fax1.txt",&JobParams,NULL,FaxJobId)){ 

Remarque bien le & pour passer l'adresse de la structure donc un POINTEUR sur la structure à la fonction comme elle l'attend.

Remarque bien aussi que tu avais déjà ce problème avec:

LPHANDLE hFax=NULL;

dans ton premier exemple et que j'avais déjà corrigé.... :twisted:

Oui oui je sais, c'est dur l'informatique. D'autant plus dur qu'avec Java tu en faisais pas (de l'informatique) et que maintenant tu dois perdre toutes les mauvaises habitudes acquises.
Mais je veux t'encourager aussi.:
Ce fax il va bientôt partir. :)
Tous les étudiants gavés de Java sont dans la même merde que toi et tôt ou tard, il faut programmer avec un langage informatique quand on est informaticien. Donc c'est bien que tu doives le faire :)
Considère de travailler avec C++, l'idée n'est pas aussi folle qu'il n'y parait

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
  GGG   N   N  TTTTTT   QQQ     GGG  
G NN N TT Q Q G
G GG N N N TT Q Q G GG
G G N NN TT Q QQ G G
GGG N N TT QQQQ GGG
Q