Bonjour,

Je suis entrain d'essayer de créer une dll qui sert à ajouter des fonctions à un programme déjà existant.

Dans une fonction de la dll, je voudrais pouvoir appeler une boite de dialogue servant à régler la valeur d'un paramètre (un champ, une scrollbar, peu importe...).

Voici le code le plus simple possible de la dll
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/* -----------------------------------------------------------------------
 * Paramics Programmer API    (paramics-support@quadstone.com)
 * Quadstone Ltd.             Tel: +44 131 220 4491
 * 16 Chester Street          Fax: +44 131 220 4492
 * Edinburgh, EH3 7RA, UK     WWW: http://www.paramics-online.com
 * ----------------------------------------------------------------------- */  
 
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include "programmer.h"
 
 
// ---------------------------------------------------------------------
// call api_setup once when the full network has been opened
// ---------------------------------------------------------------------
void qpx_NET_postOpen(void)
{
 
    qps_GUI_printf("Paramics Programmer API: Hello World!\n");
    qps_GUI_addTool("Outil");
}
 
// ---------------------------------------------------------------------
// Called when a layer has been toggled in the Layer Selector.
// ---------------------------------------------------------------------
void qpx_GUI_tool(char *name, Bool on)
{
	if(strcmp(name,"Outil")==0)	
	{
		qps_GUI_printf("Clic sur outil\n");
                int parametre;//paramètre à regler
		//ici, appel à une boite de dialogue ?
	}
}
Et je ne sais absolument pas comment faire ! Je bosse depuis ce matin sous Visul C++ 6, alors que j'ai beaucoup plus l'habitude de Borland...

J'ai trouvé cet exemple de code. Je ne comprends pas cette histoire de AFX_MANAGE_STATE, et surtout, je ne sais pas comment créer l'objet CMyLocalDialog dlg.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
extern __declspec(dllexport) void ShowEditDialog(int &MyData1, int &MyData2)
{
	//ensure we are using our own resources
	AFX_MANAGE_STATE(AfxGetStaticModuleState());
	CMyLocalDialog dlg;
	dlg.Arg1 = MyData1; //specific local data for MyLocalDialog
	dlg.Arg2 = MyData2;
	dlg.DoModal();
	MyData1 = dlg.Arg1; //data after processing
	MyData2 = dlg.Arg2;
}
Y a-t-il une solution rapide ?
Sinon, par quel tutoriel dois-je commencer ?

Merci d'avance !