Hello;
Merci de ton message BruNews;
en fait j'ai réussis sans CallBack ou treah.
Je créer juste mes boutons qui restent enfoncés au clcik et ensuite check leurs status, je renvois un bool.
Dans mon apli externe ça fonctionne parfaitement; voici le code, si tu as une correction ou amélioration à proposer ....
/* Replace "dll.h" with the name of your header */
#include "dll.h"
#include <Windows.h>
#include <CommCtrl.h>
#include "Resources.h"
BOOL APIENTRY DllMain (HINSTANCE hInst ,
DWORD reason ,
LPVOID reserved)
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
/* Returns TRUE on success, FALSE on failure */
return TRUE;
}
///////////////////////////////////////////////////////////
//// DeInitialisation /////
///////////////////////////////////////////////////////////
DLLIMPORT int DeinitGui(int Instanc)
{
SendMessage((HWND)Instanc, WM_DESTROY,0,0);
return 1;
}
///////////////////////////////////////////////////////////
//// Ajout de bouton /////
///////////////////////////////////////////////////////////
DLLIMPORT HMENU AddPushButton(char*texte, int Posx, int Posy, int longueur, int largeur, HWND parent, int ID)
{
HWND boutton =CreateWindowEx(
WS_EX_OVERLAPPEDWINDOW,
"BUTTON",
texte,
WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX|BS_PUSHLIKE|BS_FLAT ,
Posx,Posy,
longueur,largeur,
parent,
(HMENU)ID,
GetModuleHandle(NULL),
NULL);
if(boutton!=NULL)
{
CheckDlgButton(boutton,ID,BST_UNCHECKED);
return GetMenu(boutton);
}
}
//////////////////////////////////////////////////////////
DLLIMPORT HMENU AddCheckBox(char*texte, int Posx, int Posy, int longueur, int largeur, HWND parent, int ID)
{
HWND boutton =CreateWindowEx(
WS_EX_OVERLAPPEDWINDOW,
"BUTTON",
texte,
WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX|BS_FLAT ,
Posx,Posy,
longueur,largeur,
parent,
(HMENU)ID,
GetModuleHandle(NULL),
NULL);
if(boutton!=NULL)
{
CheckDlgButton(boutton,ID,BST_UNCHECKED);
return GetMenu(boutton);
}
}
////////////////////////////////////////////////////////
DLLIMPORT HWND ProgressBar(int Posx, int Posy, int longueur, int largeur, HWND parent, int start, int end)
{
HWND boutton =CreateWindowEx(
0, PROGRESS_CLASS, NULL,
WS_CHILD | WS_VISIBLE ,
Posx,Posy,
longueur,largeur,
parent,
NULL,
GetModuleHandle(NULL),
NULL);
if(boutton!=NULL)
{
SendMessage(boutton, PBM_SETPOS, 0, MAKELPARAM(start, end)) ;
return boutton;
}
}
DLLIMPORT void SetProgressBarPos(HWND prog, int value)
{
SendMessage(prog, PBM_SETRANGE, 0, value) ;
}
///////////////////////////////////////////////////////////
//// Détection de click /////
///////////////////////////////////////////////////////////
DLLIMPORT bool ButtonClicked(HWND parent,int ID)
{
POINT pt;
HWND surface = WindowFromPoint(pt);
HMENU id = GetMenu(surface);
/*if(GetAsyncKeyState(VK_LBUTTON) &&0x8000!=0)
{
return true;
}*/
if(IsDlgButtonChecked(parent,ID))
{
CheckDlgButton(parent,ID,BST_UNCHECKED);
return true;
}
return false;
}
///////////////////////////////////////////////////////////
//// Détachement du graphique /////
///////////////////////////////////////////////////////////
DLLIMPORT HWND MoveChart(HWND graph,char*texte)
{
HWND newFen = CreateNewWindow(texte);
if(newFen != NULL && graph!=NULL)
{
SetParent(graph, newFen);
SendMessage(GetParent(graph), WM_SYSCOMMAND, SC_MINIMIZE, 0);
return newFen;
}
}
///////////////////////////////////////////////////////////
//// Crée une fenêtre /////
///////////////////////////////////////////////////////////
DLLIMPORT HWND CreateNewWindow(char*texte)
{
HWND fenetre =CreateWindowEx(
WS_EX_OVERLAPPEDWINDOW,
texte,
texte,
WS_OVERLAPPEDWINDOW ,
CW_USEDEFAULT,CW_USEDEFAULT,
600,600,
HWND_DESKTOP,
NULL,
GetModuleHandle(NULL),
NULL);
if(fenetre!=NULL)
{
return fenetre;
}
}