ok, this is the c++ code my dll...)
in file header.h:
// Fichier de ressource
//Par Piranha
HINSTANCE hInstance; // Instance de la dll
HWND hDlg; // Handle de la boite de dialogue
BOOL reponse_final; // Réponse passée à l'exe (1=ok, 0=annuler...)
// Ressources de la boite de dialogue "Nouveau":
#define ID_DIALOG_NOUVEAU 100
#define IDC_TEXTE 1000
#define IDC_AIDE 1001
#define IDC_NOM_NIVEAU 1002
#define IDC_TAILLE_X 1003
#define IDC_TAILLE_Z 1004
#define IDC_FACETTE_X 1005
#define IDC_FACETTE_Z 1006
in file resource.rc
#include "resource.h"
#include <windows.h>
ID_DIALOG_NOUVEAU DIALOG DISCARDABLE 0, 0, 201, 90
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | WS_CHILD
CAPTION "Nouveau niveau"
FONT 8, "MS Sans Serif"
BEGIN
// Les boutons "OK", "Annuler" et "Aide"
DEFPUSHBUTTON "OK",IDOK,140,7,60,18
PUSHBUTTON "Annuler",IDCANCEL,140,24,60,18
PUSHBUTTON "Aide",IDC_AIDE,140,42,60,18
// Les case:
// Nom du niveau:
LTEXT "Nom du niveau: ",IDC_TEXTE,3,2,130,7
CONTROL "",IDC_NOM_NIVEAU,"Edit",
ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP | WS_GROUP,
1,11,130,12
// Taille en X et en Z:
LTEXT "Taille de la matrice: ",IDC_TEXTE,3,25,130,7
CONTROL "",IDC_TAILLE_X,"Edit",
ES_AUTOHSCROLL | ES_NUMBER | WS_BORDER | WS_TABSTOP ,
1,34,60,12
CTEXT "x",IDC_TEXTE,61,37,10,7
CONTROL "",IDC_TAILLE_Z,"Edit",
ES_AUTOHSCROLL | ES_NUMBER | WS_BORDER | WS_TABSTOP ,
71,34,60,12
// Facette en X et en Z:
LTEXT "Nombre de facettes:",IDC_TEXTE,3,48,110,7
CONTROL "",IDC_FACETTE_X,"Edit",
ES_AUTOHSCROLL | ES_NUMBER | WS_BORDER | WS_TABSTOP ,
1,57,50,12
CTEXT "x",IDC_TEXTE,51,60,10,7
CONTROL "",IDC_FACETTE_Z,"Edit",
ES_AUTOHSCROLL | ES_NUMBER | WS_BORDER | WS_TABSTOP ,
61,57,50,12
//GROUPBOX "Show Tray Controls (ala MuseArc)",IDC_STATIC,7,7,132,76
END
in file main.cpp
int __declspec (dllexport) nouveau() //une fonction exporter
{
#include <windows.h>
#include "resource.h"
// On déclare la fonction MainProc
LRESULT CALLBACK Back_Nouveau(HWND Dlg,UINT message,WPARAM wParam,LPARAM lParam);
// On va lire le fichier ini qui va donner les dernieres valeures:
char nom[255];
GetPrivateProfileString("nouveau","nom","Mon niveau",nom,sizeof(nom),
"EKC - Editor.ini");
char tailleX[255];
GetPrivateProfileString("nouveau","tailleX","1000",tailleX,
sizeof(tailleX),"EKC - Editor.ini");
char tailleZ[255];
GetPrivateProfileString("nouveau","tailleZ","1000",tailleZ,
sizeof(tailleZ),"EKC - Editor.ini");
char facetteX[255];
GetPrivateProfileString("nouveau","facetteX","50",facetteX,
sizeof(facetteX),"EKC - Editor.ini");
char facetteZ[255];
GetPrivateProfileString("nouveau","facetteZ","50",facetteZ,
sizeof(facetteZ),"EKC - Editor.ini");
// On crée la boite de dialogue:
HWND parent; // Handle de la fenêtre parent
parent = GetActiveWindow();
hInstance = GetModuleHandle("Extansions.dll");
hDlg = CreateDialog(hInstance,(LPCTSTR)ID_DIALOG_NOUVEAU,parent,(DLGPROC)Back_Nouveau);
// Et la on associe les valeurs:
SetDlgItemText(hDlg,IDC_NOM_NIVEAU,nom);
SetDlgItemText(hDlg,IDC_TAILLE_X,tailleX);
SetDlgItemText(hDlg,IDC_TAILLE_Z,tailleZ);
SetDlgItemText(hDlg,IDC_FACETTE_X,facetteX);
SetDlgItemText(hDlg,IDC_FACETTE_Z,facetteZ);
// Maintenant on affiche notre beau travail!!!
ShowWindow(hDlg,SW_SHOW);
MSG msg;
while(GetMessage(&msg,NULL,0,0)==TRUE)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return reponse_final;
}
// Fonction qui gère la boite de dialogue
LRESULT CALLBACK Back_Nouveau(HWND Dlg,UINT message,WPARAM wParam,LPARAM lParam)
{
int Select;
switch(message)
{
case WM_COMMAND:
Select=LOWORD(wParam);
switch(Select)
{
case IDOK:
//On récupère les valeurs:
char nom[255];
GetDlgItemText(hDlg,IDC_NOM_NIVEAU,nom,255);
char tailleX[255];
GetDlgItemText(hDlg,IDC_TAILLE_X,tailleX,255);
char tailleZ[255];
GetDlgItemText(hDlg,IDC_TAILLE_Z,tailleZ,255);
char facetteX[255];
GetDlgItemText(hDlg,IDC_FACETTE_X,facetteX,255);
char facetteZ[255];
GetDlgItemText(hDlg,IDC_FACETTE_Z,facetteZ,255);
// On vérifie que les valeurs sont bonnes et on met tout ça
// dans l'ini...
WritePrivateProfileString("nouveau","nom",nom,"EKC - Editor.ini");
WritePrivateProfileString("nouveau","tailleX",tailleX,"EKC - Editor.ini");
WritePrivateProfileString("nouveau","tailleZ",tailleZ,"EKC - Editor.ini");
WritePrivateProfileString("nouveau","facetteX",facetteX,"EKC - Editor.ini");
WritePrivateProfileString("nouveau","facetteZ",facetteZ,"EKC - Editor.ini");
// Finition...
EndDialog(Dlg,0);
PostQuitMessage(0);
reponse_final=TRUE;
return TRUE;
case IDCANCEL:
EndDialog(Dlg,Select);
PostQuitMessage(0);
reponse_final=FALSE;
return TRUE;
}
default:
return FALSE;
}
}
I don't understand why I have this problem...
Sublimons La Beauté, but you can't understand
www.pirasite.fr.st , if you speak french
