Developpement plugin C++

Discussion de programmation pour éviter d'empiéter dans les autres forums

Modérateurs : Modérateurs, Développeurs

Tiboo

Developpement plugin C++

Message par Tiboo »

Bonjour à tous

J'ai un petit souci. Je voudrai bien developper un plugin pour photofiltre (enfin essayer) mais je ne connais que visual C++6 et quand j'essaie de compiler les exemples du SDK, ça ne fonctionne pas. Il y a certainement des modifications à faire dans les fichiers ou des librairies à inclure ou autre chose... Quelqu'un pourrait -il me venir en aide? :D
Merci beaucoup
Antonio
Administrateur(trice)|Administrateur|Administratrice
Administrateur(trice)|Administrateur|Administratrice
Messages : 12768
Inscription : 28 oct. 2003 22:49

Message par Antonio »

Personne n'a réalisé de plugin en Visual C++ ? :cry:
pf
Développeur(se)|Développeur|Développeuse
Développeur(se)|Développeur|Développeuse
Messages : 974
Inscription : 28 avr. 2004 8:45
Version de PhotoFiltre : 6
Système d'exploitation : xp seven
Localisation : 78

Message par pf »

Je vais voir ce que je peux faire.......
Mais VC++............ Pffffffff............. :roll:
Cela dit, il est trés utilisé, faut y passer !!! :lol:
Quand faut y aller, faut y aller !! :wink:
A+
Alain
Habitué(e)|Habitué|Habituée
Habitué(e)|Habitué|Habituée
Messages : 82
Inscription : 02 janv. 2005 17:03
Version de PhotoFiltre : 6.2.7
Système d'exploitation : XP
Mémoire RAM : 1024
Localisation : Aartselaar,Vlaanderen

Message par Alain »

Antonio a écrit :Personne n'a réalisé de plugin en Visual C++ ? :cry:
WB-plugin et écrit avec Borland C++.

Alain
Khazna
Nouveau(elle)|Nouveau|Nouvelle
Nouveau(elle)|Nouveau|Nouvelle
Messages : 49
Inscription : 24 janv. 2007 18:53
Version de PhotoFiltre : Photofiltre studio
Système d'exploitation : windows XP & Kubuntu 7.04
Processeur : Pentium D 2,8 GHz
Mémoire RAM : 1024 MO

Message par Khazna »

Bonjour à tous,
Je profite de ce post pour vous demander si vous pourriez me réaliser un exemple de plugin en C++ avec Dev Cpp, rien que colorpicker s'il vous plaît :cry: ...
En effet je n'utilise que cet EDI et ce langage :oops:
pf
Développeur(se)|Développeur|Développeuse
Développeur(se)|Développeur|Développeuse
Messages : 974
Inscription : 28 avr. 2004 8:45
Version de PhotoFiltre : 6
Système d'exploitation : xp seven
Localisation : 78

Message par pf »

Salut Khazna,
Tu as deux exemples en C dans le sdk PhotoFiltre et un en Visual Cpp 6 ici :viewtopic.php?t=2889
Si tu connais bien le language et ton compilo, tu devrais pouvoir (sans trop de difficultés) adapter les entetes et les sources. :wink:
A+
Khazna
Nouveau(elle)|Nouveau|Nouvelle
Nouveau(elle)|Nouveau|Nouvelle
Messages : 49
Inscription : 24 janv. 2007 18:53
Version de PhotoFiltre : Photofiltre studio
Système d'exploitation : windows XP & Kubuntu 7.04
Processeur : Pentium D 2,8 GHz
Mémoire RAM : 1024 MO

Message par Khazna »

Oui je devrais pouvoir me débrouiller :D

Encore merci!
Heis Spiter
Administrateur(trice)|Administrateur|Administratrice
Administrateur(trice)|Administrateur|Administratrice
Messages : 2038
Inscription : 28 oct. 2003 13:39
Version de PhotoFiltre : 6.2.7/9.0.0
Système d'exploitation : Windows XP Pro SP2
Processeur : Intel Pentium IV 3.2 Ghz HT
Mémoire RAM : 1536 Mo DDR
Localisation : 63

Message par Heis Spiter »

Je dois avouer, j'avais déjà essayé avec Dev-Cpp et c'était très vite devenu compliqué :P. Le compilateur trouvait quelque chose à redire à chaque ligne ou presque.
Khazna
Nouveau(elle)|Nouveau|Nouvelle
Nouveau(elle)|Nouveau|Nouvelle
Messages : 49
Inscription : 24 janv. 2007 18:53
Version de PhotoFiltre : Photofiltre studio
Système d'exploitation : windows XP & Kubuntu 7.04
Processeur : Pentium D 2,8 GHz
Mémoire RAM : 1024 MO

Message par Khazna »

Oui c'est bien vrai, question facilité d'utilisation Dev-Cpp n'est pas le meilleur des EDI :lol:
Khazna
Nouveau(elle)|Nouveau|Nouvelle
Nouveau(elle)|Nouveau|Nouvelle
Messages : 49
Inscription : 24 janv. 2007 18:53
Version de PhotoFiltre : Photofiltre studio
Système d'exploitation : windows XP & Kubuntu 7.04
Processeur : Pentium D 2,8 GHz
Mémoire RAM : 1024 MO

Message par Khazna »

Raaahhhh je n'y arrive pas!! :cry:
Est-ce que quelqu'un aurait l'aimabilité de faire un petit exemple de plugin avec Dev-Cpp (Colorpicker?) en C?
Antonio
Administrateur(trice)|Administrateur|Administratrice
Administrateur(trice)|Administrateur|Administratrice
Messages : 12768
Inscription : 28 oct. 2003 22:49

Message par Antonio »

Je ne pense pas qu'il y ait beaucoup de développeurs sur ce forum, donc ça risque d'être difficil, peut être en posant la question directement sur un forum de dev...?
Khazna
Nouveau(elle)|Nouveau|Nouvelle
Nouveau(elle)|Nouveau|Nouvelle
Messages : 49
Inscription : 24 janv. 2007 18:53
Version de PhotoFiltre : Photofiltre studio
Système d'exploitation : windows XP & Kubuntu 7.04
Processeur : Pentium D 2,8 GHz
Mémoire RAM : 1024 MO

Message par Khazna »

Je vais peut être posé cette question sur http://www.developpez.com... :(
pf
Développeur(se)|Développeur|Développeuse
Développeur(se)|Développeur|Développeuse
Messages : 974
Inscription : 28 avr. 2004 8:45
Version de PhotoFiltre : 6
Système d'exploitation : xp seven
Localisation : 78

Message par pf »

Khazna a écrit :Raaahhhh je n'y arrive pas!! ......
La plupart du temps, les problemes viennent des entetes (*.h)
Il m'a falu un bon momment pour migrer l'exemple de BC++5 a VC++6 et de la patience :wink:
Tu as quoi comme principale erreurs :?:
Khazna
Nouveau(elle)|Nouveau|Nouvelle
Nouveau(elle)|Nouveau|Nouvelle
Messages : 49
Inscription : 24 janv. 2007 18:53
Version de PhotoFiltre : Photofiltre studio
Système d'exploitation : windows XP & Kubuntu 7.04
Processeur : Pentium D 2,8 GHz
Mémoire RAM : 1024 MO

Message par Khazna »

Déjà j'ai modifié l'entête pour que ça colle avec Dev-Cpp (je ne sais pas si c'est bon d'ailleurs :roll: ).
Ensuite j'ai modifié les inclusions headers car il y avait un petit problème.
Mais après quand je compile (tout devrait être) patatra ...ça compile mal:

Le debugger me met que : syntax error before "RegisterPluginHeader"
[warning]data definition has no type or storage class
pour le fichier Democ.h
et encore plein de jolies erreurs pour me démoraliser un peu plus :roll:

je poste les sources de la DLL:
Democ.c

Code : Tout sélectionner

//============================================================================
// MODELE DE PLUGIN POUR PHOTOFILTRE ECRIT AVEC BORLAND C++ 5.02 MODIFIE POUR DEVCPP
// ENTETE MODIFIE
//#ifndef _DLL_H_
#define _DLL_H_

#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */

// ENTETE POUR BC5 => A REVOIR POUR AUTRE COMPILATEUR

// IMPORTANT => 	Calling Convention = StdCall
//                Type de projet Dll 32 Bits standard (Platform:Win32 Target:GUI)
//						Link = "Static Mode" sinon le compilateur ne linkera pas le runtime C
//============================================================================


// INCLUSION HEADERS
#include <windows.h>
#include <windowsx.h>
#include "Ressources.h"
#include "Democ.h"


// PROTOTYPES
BOOL WINAPI DllEntryPoint(HINSTANCE hinstDll,DWORD dwReason,LPVOID plvReserved);
extern struct PluginHeader* DLLEXPORT RegisterPluginHeader(void);
extern struct PluginStruct* DLLEXPORT RegisterPluginStruct(void);
extern int DLLEXPORT RegisterCompatibility(void);
extern int DLLEXPORT Execute(void);
extern HBITMAP DLLEXPORT RegisterPluginGlyph(void);
BOOL DialogProc(HWND hWin,UINT uMsg,WPARAM wParam,LPARAM lParam);
void Affiche(void);

//  VARIABLES GLOBALES
HINSTANCE hInstance;
struct PluginHeader	PHeader;
struct PluginStruct	PStruct;
struct SIMAGE Img;

// SPECIFIQUE PLUGIN
HWND	hDlg;     // Handle DialogBox
INT		Couche; 	// Masque de couche
INT		RetValue; // Retour de la boucle de message
INT		IsInit;		// Autorise/interdit l'affichage
HWND	HROUGE;		// Handle ChekBox Rouge
HWND	HVERT;		// Handle ChekBox Vert
HWND	HBLEU;		// Handle ChekBox Bleu


// DESCRIPTEURS PLUGIN
char HeaderCaption[] = {"Demo Filtre (C)"};
char HeaderVersion[] = {"Version 1.0"};
char HeaderAuthor[] =  {"P@F"};
char HeaderCommentaire[] = {"Conserve ou efface les couches R-V-B.\xA\xD"
														"Plugin de test écrit en C.\xA\xD"
                            "Nécessite PhotoFiltre 5.6 minimum."};
int HeaderPluginType = PT_FILTER;
int HeaderPluginFlag = MF_RGB_COLORS + MF_NEED_IMAGE;

//=========================================================================
// POINT D'ENTREE DU PLUGIN
//=========================================================================
#pragma argsused  // Pour eviter le warning: Parameter '' is never used
BOOL WINAPI DllEntryPoint(HINSTANCE hinstDll,DWORD dwReason,LPVOID plvReserved)
{
if (dwReason == DLL_PROCESS_ATTACH) // Raison d'appel
	{
  hInstance = hinstDll; 	// Recupere l'instance dll du plugin
  // Les structures a zero
	ZeroMemory(&PStruct,sizeof(struct PluginStruct));	// Les structures a zero
  ZeroMemory(&PHeader,sizeof(struct PluginHeader));
  ZeroMemory(&Img,sizeof(struct SIMAGE));
  // Intialisation de la structure d'entete du plugin
	strcpy(PHeader.Caption,HeaderCaption);
	strcpy(PHeader.Version,HeaderVersion);
	strcpy(PHeader.Author,HeaderAuthor);
	strcpy(PHeader.Commentaire,HeaderCommentaire);
	PHeader.PluginType=HeaderPluginType;
	PHeader.Flags=HeaderPluginFlag;
	return(1);	// C'est tout bon !
  }
else
	return(0);	// Les autres raisons d'appel => Niet !
}

//=========================================================================
// FONCTION D'EXECUTION DU PLUGIN
//=========================================================================
extern int DLLEXPORT Execute(void)
{
//==== TEST DE LA VERSION PHOTOFILTRE ET DE LA COMPATIBILITE
// Si RegisterCompatibility retourne 1 ou la version ne gere pas
// la compatibilité niveau 2 => les fonctions niveau 2 sont initialisées a zéro
if (PStruct.TPrepareDialogue == 0)
	{
   MessageBox(NULL,
		"Ce plugin est incompatible avec cette version de PhotoFiltre.\xD\xA"
    "Il Nécessite la version 5.6 minimum.\xD\xA"
    "Vous pouver la télécharger sur le site officiel:\xD\xA"
    "http://www.photofiltre.com/","Ancienne version de PhotoFiltre",
    MB_OK | MB_ICONINFORMATION);
   return(0); // Une petite MsgBox pour etre poli !
   };

//==== DEBUT DU FILTRE (Pour le curseur "sablier" => mettre 1 au lieu de dFALSE
(*PStruct.TBeginFilter)(HeaderCaption,dFALSE); // Signaler le debut a PhotoFiltre
// Lancer Visuel avec hParent = NUL => on laisse PhotoFiltre gerer le mode Modal
DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN),NULL,DialogProc); // Lancer Visuel

//==== FIN DU FILTRE
(*PStruct.TEndFilter)(); // Signaler la fin a PhotoFiltre

//==== LIBERE L'IMAGE
if ( Img.piBitmap != NULL) // Un petit test pour eviter toute mauvaise surprise
	(*PStruct.TFreeDBmp)(&Img);

return(RetValue); // Valeur retournée par le Visuel (1=Modif, 0=NoModif)
}

//=========================================================================
// DialogProc  => Visuel
// Boucle de message de la boite de dialogue
//=========================================================================
#pragma argsused  // Pour eviter le warning: Parameter '' is never used
BOOL CALLBACK DialogProc(HWND hWin,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch(uMsg)
	{
   case WM_INITDIALOG:
   	//== Init VARIABLES ============================
		hDlg = hWin;						// Handle de la boite de dialogues
		IsInit = 0; 						// Interdire l'affichage pour le momment
		Couche = 0;             // Masque de couche
		RetValue = 0;						// Image non modifiée
		Img.piBitmap = NULL;		// Pour etre sur de l'allocation future...

   	//== Init DIALOGBOX ============================
   	SendMessage(hWin,WM_SETICON,ICON_BIG,(LPARAM)LoadIcon(hInstance,(LPSTR)500));

   	//== Init CHECKBOX ============================
   	HROUGE = GetDlgItem(hWin,IDC_ROUGE); 	// Rouge
   	HVERT = GetDlgItem(hWin,IDC_VERT); 		// Vert
   	HBLEU = GetDlgItem(hWin,IDC_BLEU); 		// Bleu
   	SendMessage(HROUGE,BM_SETCHECK,BST_CHECKED,0);
   	SendMessage(HVERT,BM_SETCHECK,BST_CHECKED,0);
   	SendMessage(HBLEU,BM_SETCHECK,BST_CHECKED,0);

   	//== Demande Dialogue Modal a PhotoFiltre ============================
   	(*PStruct.TPrepareDialogue)(hDlg,DM_MODAL,dFALSE,dFALSE);

   	//== Creation de l'image a la bonne taille ============================
   	// Les Rectangles Delphi sont relatifs a l'origine
    // Si il n'y a pas de selection, le rectangle decrit l'image entiere
    Img.piWidth = PStruct.SelRect.right - PStruct.SelRect.left;
    Img.piHeight = PStruct.SelRect.bottom - PStruct.SelRect.top;

		(*PStruct.TCreateDBmp)(&Img);
		if ( Img.piBitmap == NULL)
			{(*PStruct.TEndFilter)();return(0);}

		IsInit=1; 		// Permetre l'affichage
		return(TRUE);
//== Fin de WM_INITDIALOG ============================

	//== WM_COMMAND ======================
	case WM_COMMAND:
      switch(wParam)
      //switch(LOWORD(wParam))
			{
   		//== BOUTON ANNULER ======================
   		case IDC_CANCEL:
   			EndDialog(hWin,FALSE);break;

			//== BOUTON OK ======================
   		case  IDC_OK:
				RetValue=1;
        EndDialog(hWin,TRUE);break;

   		//== CHECKBOX Rouge ======================
   		case IDC_ROUGE:
				if (SendMessage(HROUGE,BM_GETCHECK,0,0) == BST_UNCHECKED)
					Couche |= 1 ;
				else
					Couche &= 0xFFFFFFFE;
      	Affiche();
      	break;

   		//== CHECKBOX Vert ======================
   		case IDC_VERT:
				if (SendMessage(HVERT,BM_GETCHECK,0,0) == BST_UNCHECKED)
         Couche |= 2;
				else
					Couche &= 0xFFFFFFFD;
   			Affiche();
      	break;

  		//== CHECKBOX Bleu ======================
   		case IDC_BLEU:
				if (SendMessage(HBLEU,BM_GETCHECK,0,0) == BST_UNCHECKED)
         Couche |= 4;
				else
      		Couche &= 0xFFFFFFFB;
				Affiche();
      	break;

  		//== DEFAULT COMMAND PROCESS MESSAGE ======================
      default:
      	return(FALSE); // On traite pas le message

		//== FIN DE WM_COMMAND ======================
    } break; //==================================

  //== WM_CLOSE ======================
  case WM_CLOSE:
   	EndDialog(hWin,TRUE);

  //== DEFAUT GLOBAL PROCESS MESSAGE ======================
  default:
  	return(FALSE); // On traite pas le message

//*******************************************************************
	}//== FIN DE LA BOUCLE DE MESSAGE ======================
return(TRUE); // On envois au traitement les autres messages
}


//=========================================================================
// FONCTION D'AFFICHAGE (Pour info)
//=========================================================================
void Affiche(void)
{
UINT CptX,CptY,Tx;
UCHAR *Ptr;

if (!IsInit)
	return; 

//==== RESTAURATION DE L'IMAGE ET RECUPERATION DANS LE BUFFER D'IMAGE
TRestoreUndoBitmap(&PStruct);
(*PStruct.TGetSelBitmap)(Img.piBitmap);

//==== MODIFICATION DU BUFFER D'IMAGE
(*PStruct.TGetScanLineDBmp)(&Img,0);
Ptr = Img.piBuffer;
Tx = Img.piWidth * 3 ;
for (CptY=0; CptY < Img.piHeight ; CptY ++)
	{
	for (CptX=0; CptX < Tx ; CptX +=3)
   	{
    if ((Couche & 4))
    	Ptr[CptX]=0;	// Bleu
    if ((Couche & 2))
    	Ptr[CptX+1]=0;	// Vert
    if ((Couche & 1))
    	Ptr[CptX+2]=0;	// Rouge
    };
   Ptr -= (Img.piScanlineSize);
	};

//==== ACTUALISATION DE L'IMAGE
(*PStruct.TSetSelBitmap)(Img.piBitmap,SF_AUTO);
}

//=========================================================================
// FONCTIONS EXPORTEES
//=========================================================================
extern struct PluginHeader* DLLEXPORT RegisterPluginHeader(void)
{return(&PHeader);}
//-------------------------------------------------------------------------
extern struct PluginStruct* DLLEXPORT RegisterPluginStruct(void)
{return(&PStruct);}
//-------------------------------------------------------------------------
extern int DLLEXPORT RegisterCompatibility(void)
{return(NON_DELPHI);}
//-------------------------------------------------------------------------
extern HBITMAP DLLEXPORT RegisterPluginGlyph(void)
{return(LoadBitmap(hInstance,(LPTSTR)600));}
// OU => {return(LoadBitmap(hInstance,MAKEINTRESOURCE(600)));}

#endif



Democ.h(rien modifié)

Code : Tout sélectionner

#ifndef _DLL_H_
#define _DLL_H_

#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */
//;********************************************************************
//; CONSTANTES PhotoFiltre
//;********************************************************************
#define	RGBColorCount = 256 * 256 * 256 ; 16 millions de couleurs
#define	MaxLongStr 256
#define	MaxShortStr 64

	// Compatibilité Delphi/Non Delphi
#define	DELPHI  1
#define	NON_DELPHI 2

  // type du plugin
#define	PT_FILTER 0
#define	PT_IMAGE 1
#define	PT_FILE_IMPORT 2
#define	PT_FILE_EXPORT 3
#define	PT_TOOL 4

// mode de dialogue
#define	DM_MODAL 0
#define	DM_PREVIEW 1
#define	DM_COLOR_PICKER 2

// flags de sélection
#define	SF_AUTO 0
#define	SF_NONE 1

// flags pour la création d'image
#define	IF_CREATE 0
#define	IF_FILE 1

// flags pour l'activation du menu
#define	MF_RGB_COLORS 0x00000001
#define	MF_INDEXED_COLORS 0x00000002
#define	MF_TRANSPARENT 0x00000004
#define	MF_NOT_TRANSPARENT 0x00000008
#define	MF_SELECTED 0x00000010
#define	MF_NOT_SELECTED 0x00000020
#define	MF_NEED_IMAGE 0x00000040
#define	MF_NEED_MORE_THAN_ONE_IMAGE 0x00000080

// test sur l'extension du fichier en cours
#define	MF_IMAGE_JPEG 0x00010000
#define	MF_IMAGE_GIF 0x00020000
#define	MF_IMAGE_PNG 0x00040000
#define	MF_IMAGE_BMP 0x00080000
#define	MF_IMAGE_TIFF 0x00100000
#define	MF_IMAGE_PFS 0x00200000

// === CONSTANTES FALSE/TRUE POUR DELPHI
#define	dFALSE 0
#define	NIL NULL

//;********************************************************************
//; DESCRIPTION DE LA STRUCTURE D'IMAGE
//;********************************************************************
typedef 		UINT 	DBITMAP;	// Objet Delphi TBitmap
typedef 		UINT 	DFORM;		// Objet Delphi TForm
struct		SIMAGE
	{
  UINT		piSize; 				// Taille de la structure en Octets
  UINT		piWidth;				// Taille X Utile en Pixels
  UINT		piHeight;				// Taille Y Utile en Pixels
  UINT		piWidthSize;		// Taille X Utile en Octets
  UINT		piScanlineSize;	// Taille D'une ScanLine complete en Octets
  UINT		piByteCount;		// NB D'octets par Pixels 
  UINT		piDataSize;			// Taille Totale du Buffer en Octets
  UCHAR*	piBuffer;				// Adresse Buffer
  DBITMAP	piBitmap;				// Pointeur Delphi TBitmap
  HBITMAP	piHandle;				// Pointeur HBitmap
	};

//;********************************************************************
//; DESCRIPTION DES STRUCTURES PHOTOFILTRE
//;********************************************************************
//;=== STRUCTURE D'ENTETE DU PLUGIN
struct		PluginHeader
	{
	char		Caption[MaxShortStr+1];
  char		Version[MaxShortStr+1];
  UINT		PluginType;
  char		Author[MaxShortStr+1];
  char		Commentaire[MaxShortStr+1];
	char		Reserved[MaxShortStr+1];
	UINT		Flags; 								
	};

//;=== STRUCTURE D'EXECUTION DU PLUGIN
struct		PluginStruct
	{
  // Compatibilité Niveau 1
  HWND 	MainHandle;
  INT		ImageExists;
  INT		Selected;
  RECT	SelRect;
  RECT	ImgRect;
  INT		XP_ThemesEnabled;
  INT (*TBeginFilter)(char* Message,int Sablier);
  INT (*TEndFilter)(void);
  INT (*TGetBitmap)(DBITMAP DelphiBitmap);
  INT (*TSetBitmap)(DBITMAP DelphiBitmap);
  INT (*TGetSelBitmap)(DBITMAP DelphiBitmap);
  INT (*TSetSelBitmap)(DBITMAP DelphiBitmap,UINT SelectOption);
  INT (*TGetTransparentColor)();
  INT (*TSetTransparentColor)(UINT Couleur);
  INT (*TGetColorCount)();
  INT (*TSetColorCount)(INT ColorCount);
  INT (*TNewImage)(DBITMAP DelphiBitmap,char* FileName,INT ImageOption,INT ColorCount,UINT TransColor);
  INT (*TShowForm)(DFORM TForm,INT DialogOption,INT MainFormCenter,INT CloseWaiting);
  INT (*TSetAlphaBlend)(INT AlphaRange);
  INT (*TDrawSelBorder)(INT Width,UINT Couleur,INT Antialias);
  INT (*TGetSelMask)(DBITMAP DelphiBitmap);
  void (*TResetSaveMenu)();
  INT (*TGetImgFileName)(char *PlPath,INT Taille);
  INT (*TGetExePath)(char *PlPath,INT Taille);
  INT (*TGetOpenPath)(char *PlPath,INT Taille);
  INT (*TGetSavePath)(char *PlPath,INT Taille);
  INT (*TGetPluginPath)(char *PlPath,INT Taille);
  INT (*TGetIniFile)(char *PlPath,INT Taille);
  INT (*TSetImgFileName)(char *PlPath);
  INT (*TGetBitmapByName)(DBITMAP DelphiBitmap,char* FileName);
  INT (*TGetThumb)(DBITMAP DelphiBitmap,UINT BkColor,
  			INT BorderSize,INT ShadowSize,UINT ShadowBkColor,RECT* R);
  INT (*TGetThumbByName)(DBITMAP DelphiBitmap,char* FileName,UINT BkColor,
  			INT BorderSize,INT ShadowSize,UINT ShadowBkColor,RECT* R);
  INT (*TEnumImages)(char* FileName,INT Width,INT Height,INT NbColor,UINT TransColor);
  // Compatibilité Niveau 2
  INT (*TPrepareDialogue)(HWND HandleF,INT DialogOption,INT MainFormCenter,INT CloseWaiting);
  INT (*TCreateDBmp)(struct SIMAGE *BitmapIn);
	INT (*TFreeDBmp)(struct SIMAGE *BitmapIn);
	HDC (*TReleaseHandleDBmp)(struct SIMAGE *BitmapIn);
	INT (*TGetScanLineDBmp)(struct SIMAGE *BitmapIn,UINT Row);
	INT	(*Reserve1)(void);
	INT	(*Reserve2)(void);
	INT	(*Reserve3)(void);
	INT	(*Reserve4)(void);
	INT	(*Reserve5)(void);
	};

//=========================================================================
// FONCTIONS AUXILIAIRES
//=========================================================================
void TRestoreUndoBitmap(struct PluginStruct* Pls);
void TRestoreUndoBitmap(struct PluginStruct* Pls)
{(*Pls->TSetBitmap)(NULL);}

#endif
democ.rc (rien modifié)

Code : Tout sélectionner

STYLE DS_SYSMODAL | DS_3DLOOK | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "test conversion Colorpicker (C)"
FONT 8, "MS Sans Serif"
{
 CONTROL "&Annuler", IDC_CANCEL, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 4, 60, 46, 14
 CONTROL "&Ok", IDC_OK, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 58, 60, 46, 14
 CONTROL "Afficher La Couche &Verte", IDC_VERT, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 4, 24, 92, 9
 CONTROL "Afficher La Couche &Rouge", IDC_ROUGE, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 4, 8, 96, 9
 CONTROL "Afficher La Couche &Bleue", IDC_BLEU, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 4, 40, 96, 9
 CONTROL "Frame1", IDC_STATICFRAME1, "static", SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 4, 56, 100, 1
}


//=================================================
//== ICONES
500 ICON MOVEABLE PURE LOADONCALL DISCARDABLE "Democ.ico"

//=================================================
//== BITMAP
600 BITMAP MOVEABLE PURE LOADONCALL DISCARDABLE "Democ.bmp"
Ressources.h(rien modifié)

Code : Tout sélectionner

#define IDD_MAIN					1
#define IDI_BITMAP				600
#define IDI_ICON1					500
#define IDC_STATICFRAME1	103
#define IDC_CANCEL				102
#define IDC_OK						101
#define IDC_BLEU					107
#define IDC_VERT					106
#define IDC_ROUGE					105
#define IDC_CHECKBOX1			105
#define IDC_CHECKBOX2			106
#define IDC_CHECKBOX3			107


pf
Développeur(se)|Développeur|Développeuse
Développeur(se)|Développeur|Développeuse
Messages : 974
Inscription : 28 avr. 2004 8:45
Version de PhotoFiltre : 6
Système d'exploitation : xp seven
Localisation : 78

Message par pf »

Je vais jeter un z'yeux, mais je ne te promet rien :wink:
A+