ocbslim
Messages postés5Date d'inscriptiondimanche 14 novembre 2004StatutMembreDernière intervention21 mai 2007
-
19 avril 2007 à 20:38
ocbslim
Messages postés5Date d'inscriptiondimanche 14 novembre 2004StatutMembreDernière intervention21 mai 2007
-
22 avril 2007 à 23:46
ocbslim
Bonjour,
Je developpe actuellement (personnel) une application avec une JFrame.
Je doit rendre cette derniere transparente. J'utilise JNI, enfin
j'essaie. Le probleme c'est que le C c'est pas ma tase de T . J'ai donc créé une JFrame test voici le code :
// E:pourcentage d'opacité (0=invisible à 100=opaque=totalement visible)
// S:true=ok false=non réalisé (OS incompatible ou outil non trouvé)
{
// --- Vérifier que l'on tourne sous Win2K
OSVERSIONINFO Version = {sizeof(OSVERSIONINFO)};
GetVersionEx(&Version); bool bWin2K (Version.dwPlatformId VER_PLATFORM_WIN32_NT && Version.dwMajorVersion >= 5);
if (! bWin2K) return false; // OS incompatible
// --- Pointer la fonction utilisée dans la DLL "USER32.DLL"
HMODULE hUser32 = GetModuleHandle("USER32.DLL");
if (hUser32 == NULL) return false; // DLL non trouvée
lpfnSetLayeredWindowAttributes SetLayeredWindowAttributes =
(lpfnSetLayeredWindowAttributes)GetProcAddress(hUser32,"SetLayeredWindowAttributes");
if (SetLayeredWindowAttributes == NULL) return false; // fonction non trouvée
// --- Ajouter le style nécessaire à la fenêtre
SetWindowLong(frame,GWL_EXSTYLE,GetWindowLong(frame,GWL_EXSTYLE) | WS_EX_LAYERED);
// --- Assurer que le pourcentage d'opacité soit entre 0 et 100
iOpacity = iOpacity < 0 ? 0 : (iOpacity > 100 ? 100 : iOpacity);
J'ai récupéré un bout sur un forum (Merci) mais le probleme c que le C JE N'Y COMPREND RIEN
Donc lorsque je compile avec GCC, voici ce que j'obtient:
FrameTransparente.c: In function `Java_FrameTransparente_setAlpha':
FrameTransparente.c:6: parameter name omitted
FrameTransparente.c:12: `OSVERSIONINFO' undeclared (first use in this function)
FrameTransparente.c:12: (Each undeclared identifier is reported only once
FrameTransparente.c:12: for each function it appears in.)
FrameTransparente.c:12: parse error before "Version"
FrameTransparente.c: At top level:
FrameTransparente.c:13: parse error before '&' token
FrameTransparente.c:13: warning: data definition has no type or storage class
FrameTransparente.c:14: parse error before "bWin2K"
FrameTransparente.c:14: `Version' undeclared here (not in a function)
FrameTransparente.c:14: `VER_PLATFORM_WIN32_NT' undeclared here (not in a functi
on)
FrameTransparente.c:14: `Version' undeclared here (not in a function)
FrameTransparente.c:14: warning: data definition has no type or storage class
FrameTransparente.c:15: parse error before "if"
FrameTransparente.c:18: initializer element is not constant
FrameTransparente.c:18: warning: data definition has no type or storage class
FrameTransparente.c:19: parse error before "if"
FrameTransparente.c:21: `lpfnSetLayeredWindowAttributes' undeclared here (not in
a function)
FrameTransparente.c:21: parse error before "GetProcAddress"
FrameTransparente.c:25: parse error before '(' token
FrameTransparente.c:28: initializer element is not constant
FrameTransparente.c:28: warning: data definition has no type or storage class
FrameTransparente.c:32: parse error before numeric constant
FrameTransparente.c:32: parse error before '*' token
FrameTransparente.c:32: `SetLayeredWindowAttributes' declared as function return
ing a function
FrameTransparente.c:32: `SetLayeredWindowAttributes' redeclared as different kin
d of symbol
FrameTransparente.c:20: previous declaration of `SetLayeredWindowAttributes'
FrameTransparente.c:32: parse error before ')' token
Voila donc de quoi s'araché les cheveux...
Donc si quelqu'un pourait me venir en aide...
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 19 avril 2007 à 21:11
Salut:
Ce bout de code doit être compilé avec Visual C++, DevC++, ou tout autre compilateur de l'environnement Windows, tout simplement pour pouvoir inclure le fichier d'entête <windows.h>
________________________________________________________________________________
A.B. :
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 19 avril 2007 à 21:17
Salut,
tu compile avec gcc sous windows ? mingw ? cygwin ? parce que si tu veux compiler un code windows sous linux c'est impossible surtout si celui-ci utilise les api windows comme celui présenté ci-dessus... de plus si tu veux faire de la vrai transparence sous linux je te conseil de voir ce sujet ICI (surtout mon dernier poste (en gros je te donne la solution pour faire de la transparence sous linux) )
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
ocbslim
Messages postés5Date d'inscriptiondimanche 14 novembre 2004StatutMembreDernière intervention21 mai 2007 22 avril 2007 à 23:46
ocbslim
Ba en fait j'utilise minGW sous windows. J'ai récupéré ce code qui fonctionne tres bien seul mais je souhaite juste l'adapter avec jni pour l'utiliser en fait avec une appli java. Mais ce code C hou... bon vous voyer ce que je veux dire alors si quelqu'un maitrise le C et JNI. J'ai deja suivi un tut qui fait la fameuse application "HelloWorld" avec jni ca fonctionnait trés bien mais une fois que le code C se complique ca devient dure.