DIALOG DEPUIS DLL (WIN32)

cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 - 9 oct. 2006 à 11:29
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 9 oct. 2006 à 14:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/39858-dialog-depuis-dll-win32

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 oct. 2006 à 14:54
typedef struct _BNDLGPARAM {
HWND howner;
TCHAR *psztitle;
TCHAR *pszinfo;
} BNDLGPARAM, *LPBNDLGPARAM;

Tu as vu cette déclaration de structure en haut, elle ne sert qu'à indiquer au compilo comment (à quel offset) récupérer l'élément demandé, bien pour cela que je reprends stricto l'ordre et le type des params reçus en entrée, ainsi offsets seront toujours valables. La fonction affichant un dialog modal, aucun risque que les params soient dépilés et donc adresses invalides.
Résultat des courses, je n'empile absolument rien, tout benef.
emiaille Messages postés 11 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 11 mars 2007
9 oct. 2006 à 13:49
Je cherchais justement un exemple depuis un bon moment, à telle point que je commencais à croire que c'était impossible.
Merci.
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
9 oct. 2006 à 11:29
Comment tu fais pour récupérer ta structure en passant seulement le paramètre &howner dans ta fonction DialogBoxParam

nt __stdcall ShowDlgDll(HWND howner, TCHAR *psztitle, TCHAR *pszinfo)
{
return DialogBoxParam(thismod, MAKEINTRESOURCE(IDD_DLGDLL), howner, DllDlgProc, (LPARAM) &howner);
}

case WM_INITDIALOG:
SetWindowText(hdlg, ((LPBNDLGPARAM) lParam)->psztitle);
SetDlgItemText(hdlg, IDST_INFO, ((LPBNDLGPARAM) lParam)->pszinfo);
return 1;
Rejoignez-nous