begin process at 2012 05 29 08:58:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

HInstance et Dll


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

HInstance et Dll

samedi 3 mai 2003 à 21:45:25 | HInstance et Dll

sebastienbro

Bonjour,

J'aimerais comment récupérer le Hinstance lorsque l'on est dans une dll pour pouvoir utiliser la fonction CreateDialog.

Merci

\* -- Seb [Mail] [Web] -- */
samedi 3 mai 2003 à 22:02:37 | Re : HInstance et Dll

BruNews

Administrateur CodeS-SourceS
Enregistre ton HINSTANCE dans une variable quand reason est PROCESS_ATTACH.
BruNews, ciao...


-------------------------------
Réponse au message :
-------------------------------

> Bonjour,
>
> J'aimerais comment récupérer le Hinstance lorsque l'on est dans une dll pour pouvoir utiliser la fonction CreateDialog.
>
> Merci
>
> \* -- Seb [Mail] [Web] -- */
samedi 3 mai 2003 à 22:05:17 | Re : HInstance et Dll

sebastienbro

Mais c'est que je commence en c++, et je sais pas ce que tu me raconte là. Et la fonction DllMain est appelé après ma fonction, donc je n'ai pas le hinstance, et je c po commen faire. une idée ?

\* -- Seb [Mail] [Web] -- */


-------------------------------
Réponse au message :
-------------------------------

> Enregistre ton HINSTANCE dans une variable quand reason est PROCESS_ATTACH.
> BruNews, ciao...
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Bonjour,
> >
> > J'aimerais comment récupérer le Hinstance lorsque l'on est dans une dll pour pouvoir utiliser la fonction CreateDialog.
> >
> > Merci
> >
> > \* -- Seb [Mail] [Web] -- */
>
samedi 3 mai 2003 à 22:19:17 | Re : HInstance et Dll

BruNews

Administrateur CodeS-SourceS
DllMain est appelee AVANT toute autre fonction de la dll.
1ere raison sera PROCESS_ATTACH sinon ton prog n'accederait pas a la dll.
BruNews, ciao...


-------------------------------
Réponse au message :
-------------------------------

> Mais c'est que je commence en c++, et je sais pas ce que tu me raconte là. Et la fonction DllMain est appelé après ma fonction, donc je n'ai pas le hinstance, et je c po commen faire. une idée ?
>
> \* -- Seb [Mail] [Web] -- */
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Enregistre ton HINSTANCE dans une variable quand reason est PROCESS_ATTACH.
> > BruNews, ciao...
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Bonjour,
> > >
> > > J'aimerais comment récupérer le Hinstance lorsque l'on est dans une dll pour pouvoir utiliser la fonction CreateDialog.
> > >
> > > Merci
> > >
> > > \* -- Seb [Mail] [Web] -- */
> >
>
dimanche 4 mai 2003 à 12:08:34 | Re : HInstance et Dll

sebastienbro

Voilà, g fait ca, mais rien a faire, lhModule reste nulle, je comprend pas.

Si quelqu'un à la solution ...

HINSTANCE lhModule;

BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch(ul_reason_for_call) {

case DLL_PROCESS_ATTACH:

lhModule = (HINSTANCE) hModule;

break;

}

return TRUE;
}

\* -- Seb [Mail] [Web] -- */


-------------------------------
Réponse au message :
-------------------------------

> DllMain est appelee AVANT toute autre fonction de la dll.
> 1ere raison sera PROCESS_ATTACH sinon ton prog n'accederait pas a la dll.
> BruNews, ciao...
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Mais c'est que je commence en c++, et je sais pas ce que tu me raconte là. Et la fonction DllMain est appelé après ma fonction, donc je n'ai pas le hinstance, et je c po commen faire. une idée ?
> >
> > \* -- Seb [Mail] [Web] -- */
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Enregistre ton HINSTANCE dans une variable quand reason est PROCESS_ATTACH.
> > > BruNews, ciao...
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Bonjour,
> > > >
> > > > J'aimerais comment récupérer le Hinstance lorsque l'on est dans une dll pour pouvoir utiliser la fonction CreateDialog.
> > > >
> > > > Merci
> > > >
> > > > \* -- Seb [Mail] [Web] -- */
> > >
> >
>
dimanche 4 mai 2003 à 12:14:31 | Re : HInstance et Dll

BruNews

Administrateur CodeS-SourceS
Mets cela en point d'entree:
int WINAPI DllMain(HINSTANCE hInst, DWORD dwReason, PVOID pReserved)
{
if(dwReason == DLL_PROCESS_ATTACH) lhModule = hInst;
return 1;
}
BruNews, ciao...


-------------------------------
Réponse au message :
-------------------------------

> Voilà, g fait ca, mais rien a faire, lhModule reste nulle, je comprend pas.
>
> Si quelqu'un à la solution ...
>
> HINSTANCE lhModule;
>
> BOOL APIENTRY DllMain( HANDLE hModule,
> DWORD ul_reason_for_call,
> LPVOID lpReserved
> )
> {
> switch(ul_reason_for_call) {
>
> case DLL_PROCESS_ATTACH:
>
> lhModule = (HINSTANCE) hModule;
>
> break;
>
> }
>
> return TRUE;
> }
>
> \* -- Seb [Mail] [Web] -- */
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > DllMain est appelee AVANT toute autre fonction de la dll.
> > 1ere raison sera PROCESS_ATTACH sinon ton prog n'accederait pas a la dll.
> > BruNews, ciao...
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Mais c'est que je commence en c++, et je sais pas ce que tu me raconte là. Et la fonction DllMain est appelé après ma fonction, donc je n'ai pas le hinstance, et je c po commen faire. une idée ?
> > >
> > > \* -- Seb [Mail] [Web] -- */
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Enregistre ton HINSTANCE dans une variable quand reason est PROCESS_ATTACH.
> > > > BruNews, ciao...
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > Bonjour,
> > > > >
> > > > > J'aimerais comment récupérer le Hinstance lorsque l'on est dans une dll pour pouvoir utiliser la fonction CreateDialog.
> > > > >
> > > > > Merci
> > > > >
> > > > > \* -- Seb [Mail] [Web] -- */
> > > >
> > >
> >
>
dimanche 4 mai 2003 à 12:42:49 | Re : HInstance et Dll

sebastienbro

Rien a faire, ca ne marche toujour pas. Voici mon code en entier :

#define KRNLWINUX_API __declspec(dllexport) __stdcall

#include "windows.h"


typedef struct {

char *Titre;
char *CopyRight;
char *Description;
char *Version;
char *App;
char *Btn;
HICON Icone;

} LABOUTBOX;

HINSTANCE lhModule;

int WINAPI DllMain(HINSTANCE hInst, DWORD dwReason, PVOID pReserved)
{

if(dwReason == DLL_PROCESS_ATTACH) lhModule = hInst;

return 1;

}


BOOL __stdcall DialogProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{

RECT rc;
unsigned long Ret;

switch(Msg) {

case 0x0110:

GetWindowRect(hWnd, &rc);

SetWindowPos(hWnd, HWND_TOP, (GetSystemMetrics(SM_CXSCREEN) - (rc.right - rc.left)) / 2, (GetSystemMetrics(SM_CYSCREEN) - (rc.bottom - rc.top)) / 2, 0, 0, SWP_NOSIZE);

return 1; // Initialisation du dialogue

break;

case 0x0138:


Ret = SetTextColor((HDC) wParam, RGB(0, 255, 0));
return Ret;
break;

case 0x0111: //Message de commande


if (HIWORD(wParam) == 0) { //Si l'utilisateur à cliquer sur un bouton


EndDialog(hWnd, TRUE); //On quitte

}

break;

default: return 0;

}

}


BOOL KRNLWINUX_API AboutBox(LABOUTBOX Opt)
{

HWND lHandle;
HWND lHandleImg;

lHandle = CreateDialog(lhModule, MAKEINTRESOURCE(101), 0, DialogProc);

if (lHandle == NULL) return FALSE;


lHandleImg = GetDlgItem(lHandle, 11);

if (lHandleImg == NULL) return FALSE;

SendMessage(lHandleImg, STM_SETIMAGE, IMAGE_ICON, (long) Opt.Icone);

if (! SetWindowText(lHandle, strcat("A propos de ", Opt.Titre))) return FALSE;

if (ShowWindow(lHandle, SW_SHOW)) return FALSE;

return TRUE;

}

\* -- Seb [Mail] [Web] -- */


-------------------------------
Réponse au message :
-------------------------------

> Mets cela en point d'entree:
> int WINAPI DllMain(HINSTANCE hInst, DWORD dwReason, PVOID pReserved)
> {
> if(dwReason == DLL_PROCESS_ATTACH) lhModule = hInst;
> return 1;
> }
> BruNews, ciao...
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Voilà, g fait ca, mais rien a faire, lhModule reste nulle, je comprend pas.
> >
> > Si quelqu'un à la solution ...
> >
> > HINSTANCE lhModule;
> >
> > BOOL APIENTRY DllMain( HANDLE hModule,
> > DWORD ul_reason_for_call,
> > LPVOID lpReserved
> > )
> > {
> > switch(ul_reason_for_call) {
> >
> > case DLL_PROCESS_ATTACH:
> >
> > lhModule = (HINSTANCE) hModule;
> >
> > break;
> >
> > }
> >
> > return TRUE;
> > }
> >
> > \* -- Seb [Mail] [Web] -- */
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > DllMain est appelee AVANT toute autre fonction de la dll.
> > > 1ere raison sera PROCESS_ATTACH sinon ton prog n'accederait pas a la dll.
> > > BruNews, ciao...
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Mais c'est que je commence en c++, et je sais pas ce que tu me raconte là. Et la fonction DllMain est appelé après ma fonction, donc je n'ai pas le hinstance, et je c po commen faire. une idée ?
> > > >
> > > > \* -- Seb [Mail] [Web] -- */
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > Enregistre ton HINSTANCE dans une variable quand reason est PROCESS_ATTACH.
> > > > > BruNews, ciao...
> > > > >
> > > > >
> > > > > -------------------------------
> > > > > Réponse au message :
> > > > > -------------------------------
> > > > >
> > > > > > Bonjour,
> > > > > >
> > > > > > J'aimerais comment récupérer le Hinstance lorsque l'on est dans une dll pour pouvoir utiliser la fonction CreateDialog.
> > > > > >
> > > > > > Merci
> > > > > >
> > > > > > \* -- Seb [Mail] [Web] -- */
> > > > >
> > > >
> > >
> >
>
dimanche 4 mai 2003 à 13:02:37 | Re : HInstance et Dll

BruNews

Administrateur CodeS-SourceS
Et tu es certain que lhModule vaut 0, tu l'as teste et affiche pour certitude ?
Le but est bien d'avoir une AboutBox par dll ?
Faut donc qu'elle soit modale, habituel disons.
Faudra l'afficher avec DialogBoxParam().
Insiste un peu, si va toujours pas je te ferai un exemple complet mais pas avant ce soir ou demain, j'ai du taf.
BruNews, ciao...


-------------------------------
Réponse au message :
-------------------------------

> Rien a faire, ca ne marche toujour pas. Voici mon code en entier :
>
> #define KRNLWINUX_API __declspec(dllexport) __stdcall
>
> #include "windows.h"
>
>
> typedef struct {
>
> char *Titre;
> char *CopyRight;
> char *Description;
> char *Version;
> char *App;
> char *Btn;
> HICON Icone;
>
> } LABOUTBOX;
>
> HINSTANCE lhModule;
>
> int WINAPI DllMain(HINSTANCE hInst, DWORD dwReason, PVOID pReserved)
> {
>
> if(dwReason == DLL_PROCESS_ATTACH) lhModule = hInst;
>
> return 1;
>
> }
>
>
> BOOL __stdcall DialogProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
> {
>
> RECT rc;
> unsigned long Ret;
>
> switch(Msg) {
>
> case 0x0110:
>
> GetWindowRect(hWnd, &rc);
>
> SetWindowPos(hWnd, HWND_TOP, (GetSystemMetrics(SM_CXSCREEN) - (rc.right - rc.left)) / 2, (GetSystemMetrics(SM_CYSCREEN) - (rc.bottom - rc.top)) / 2, 0, 0, SWP_NOSIZE);
>
> return 1; // Initialisation du dialogue
>
> break;
>
> case 0x0138:
>
>
> Ret = SetTextColor((HDC) wParam, RGB(0, 255, 0));
> return Ret;
> break;
>
> case 0x0111: //Message de commande
>
>
> if (HIWORD(wParam) == 0) { //Si l'utilisateur à cliquer sur un bouton
>
>
> EndDialog(hWnd, TRUE); //On quitte
>
> }
>
> break;
>
> default: return 0;
>
> }
>
> }
>
>
> BOOL KRNLWINUX_API AboutBox(LABOUTBOX Opt)
> {
>
> HWND lHandle;
> HWND lHandleImg;
>
> lHandle = CreateDialog(lhModule, MAKEINTRESOURCE(101), 0, DialogProc);
>
> if (lHandle == NULL) return FALSE;
>
>
> lHandleImg = GetDlgItem(lHandle, 11);
>
> if (lHandleImg == NULL) return FALSE;
>
> SendMessage(lHandleImg, STM_SETIMAGE, IMAGE_ICON, (long) Opt.Icone);
>
> if (! SetWindowText(lHandle, strcat("A propos de ", Opt.Titre))) return FALSE;
>
> if (ShowWindow(lHandle, SW_SHOW)) return FALSE;
>
> return TRUE;
>
> }
>
> \* -- Seb [Mail] [Web] -- */
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Mets cela en point d'entree:
> > int WINAPI DllMain(HINSTANCE hInst, DWORD dwReason, PVOID pReserved)
> > {
> > if(dwReason == DLL_PROCESS_ATTACH) lhModule = hInst;
> > return 1;
> > }
> > BruNews, ciao...
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Voilà, g fait ca, mais rien a faire, lhModule reste nulle, je comprend pas.
> > >
> > > Si quelqu'un à la solution ...
> > >
> > > HINSTANCE lhModule;
> > >
> > > BOOL APIENTRY DllMain( HANDLE hModule,
> > > DWORD ul_reason_for_call,
> > > LPVOID lpReserved
> > > )
> > > {
> > > switch(ul_reason_for_call) {
> > >
> > > case DLL_PROCESS_ATTACH:
> > >
> > > lhModule = (HINSTANCE) hModule;
> > >
> > > break;
> > >
> > > }
> > >
> > > return TRUE;
> > > }
> > >
> > > \* -- Seb [Mail] [Web] -- */
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > DllMain est appelee AVANT toute autre fonction de la dll.
> > > > 1ere raison sera PROCESS_ATTACH sinon ton prog n'accederait pas a la dll.
> > > > BruNews, ciao...
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > Mais c'est que je commence en c++, et je sais pas ce que tu me raconte là. Et la fonction DllMain est appelé après ma fonction, donc je n'ai pas le hinstance, et je c po commen faire. une idée ?
> > > > >
> > > > > \* -- Seb [Mail] [Web] -- */
> > > > >
> > > > >
> > > > > -------------------------------
> > > > > Réponse au message :
> > > > > -------------------------------
> > > > >
> > > > > > Enregistre ton HINSTANCE dans une variable quand reason est PROCESS_ATTACH.
> > > > > > BruNews, ciao...
> > > > > >
> > > > > >
> > > > > > -------------------------------
> > > > > > Réponse au message :
> > > > > > -------------------------------
> > > > > >
> > > > > > > Bonjour,
> > > > > > >
> > > > > > > J'aimerais comment récupérer le Hinstance lorsque l'on est dans une dll pour pouvoir utiliser la fonction CreateDialog.
> > > > > > >
> > > > > > > Merci
> > > > > > >
> > > > > > > \* -- Seb [Mail] [Web] -- */
> > > > > >
> > > > >
> > > >
> > >
> >
>
dimanche 4 mai 2003 à 13:06:42 | Re : HInstance et Dll

sebastienbro

D'accord, je vais essayé !

Merci

\* -- Seb [Mail] [Web] -- */


-------------------------------
Réponse au message :
-------------------------------

> Et tu es certain que lhModule vaut 0, tu l'as teste et affiche pour certitude ?
> Le but est bien d'avoir une AboutBox par dll ?
> Faut donc qu'elle soit modale, habituel disons.
> Faudra l'afficher avec DialogBoxParam().
> Insiste un peu, si va toujours pas je te ferai un exemple complet mais pas avant ce soir ou demain, j'ai du taf.
> BruNews, ciao...
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Rien a faire, ca ne marche toujour pas. Voici mon code en entier :
> >
> > #define KRNLWINUX_API __declspec(dllexport) __stdcall
> >
> > #include "windows.h"
> >
> >
> > typedef struct {
> >
> > char *Titre;
> > char *CopyRight;
> > char *Description;
> > char *Version;
> > char *App;
> > char *Btn;
> > HICON Icone;
> >
> > } LABOUTBOX;
> >
> > HINSTANCE lhModule;
> >
> > int WINAPI DllMain(HINSTANCE hInst, DWORD dwReason, PVOID pReserved)
> > {
> >
> > if(dwReason == DLL_PROCESS_ATTACH) lhModule = hInst;
> >
> > return 1;
> >
> > }
> >
> >
> > BOOL __stdcall DialogProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
> > {
> >
> > RECT rc;
> > unsigned long Ret;
> >
> > switch(Msg) {
> >
> > case 0x0110:
> >
> > GetWindowRect(hWnd, &rc);
> >
> > SetWindowPos(hWnd, HWND_TOP, (GetSystemMetrics(SM_CXSCREEN) - (rc.right - rc.left)) / 2, (GetSystemMetrics(SM_CYSCREEN) - (rc.bottom - rc.top)) / 2, 0, 0, SWP_NOSIZE);
> >
> > return 1; // Initialisation du dialogue
> >
> > break;
> >
> > case 0x0138:
> >
> >
> > Ret = SetTextColor((HDC) wParam, RGB(0, 255, 0));
> > return Ret;
> > break;
> >
> > case 0x0111: //Message de commande
> >
> >
> > if (HIWORD(wParam) == 0) { //Si l'utilisateur à cliquer sur un bouton
> >
> >
> > EndDialog(hWnd, TRUE); //On quitte
> >
> > }
> >
> > break;
> >
> > default: return 0;
> >
> > }
> >
> > }
> >
> >
> > BOOL KRNLWINUX_API AboutBox(LABOUTBOX Opt)
> > {
> >
> > HWND lHandle;
> > HWND lHandleImg;
> >
> > lHandle = CreateDialog(lhModule, MAKEINTRESOURCE(101), 0, DialogProc);
> >
> > if (lHandle == NULL) return FALSE;
> >
> >
> > lHandleImg = GetDlgItem(lHandle, 11);
> >
> > if (lHandleImg == NULL) return FALSE;
> >
> > SendMessage(lHandleImg, STM_SETIMAGE, IMAGE_ICON, (long) Opt.Icone);
> >
> > if (! SetWindowText(lHandle, strcat("A propos de ", Opt.Titre))) return FALSE;
> >
> > if (ShowWindow(lHandle, SW_SHOW)) return FALSE;
> >
> > return TRUE;
> >
> > }
> >
> > \* -- Seb [Mail] [Web] -- */
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Mets cela en point d'entree:
> > > int WINAPI DllMain(HINSTANCE hInst, DWORD dwReason, PVOID pReserved)
> > > {
> > > if(dwReason == DLL_PROCESS_ATTACH) lhModule = hInst;
> > > return 1;
> > > }
> > > BruNews, ciao...
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Voilà, g fait ca, mais rien a faire, lhModule reste nulle, je comprend pas.
> > > >
> > > > Si quelqu'un à la solution ...
> > > >
> > > > HINSTANCE lhModule;
> > > >
> > > > BOOL APIENTRY DllMain( HANDLE hModule,
> > > > DWORD ul_reason_for_call,
> > > > LPVOID lpReserved
> > > > )
> > > > {
> > > > switch(ul_reason_for_call) {
> > > >
> > > > case DLL_PROCESS_ATTACH:
> > > >
> > > > lhModule = (HINSTANCE) hModule;
> > > >
> > > > break;
> > > >
> > > > }
> > > >
> > > > return TRUE;
> > > > }
> > > >
> > > > \* -- Seb [Mail] [Web] -- */
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > DllMain est appelee AVANT toute autre fonction de la dll.
> > > > > 1ere raison sera PROCESS_ATTACH sinon ton prog n'accederait pas a la dll.
> > > > > BruNews, ciao...
> > > > >
> > > > >
> > > > > -------------------------------
> > > > > Réponse au message :
> > > > > -------------------------------
> > > > >
> > > > > > Mais c'est que je commence en c++, et je sais pas ce que tu me raconte là. Et la fonction DllMain est appelé après ma fonction, donc je n'ai pas le hinstance, et je c po commen faire. une idée ?
> > > > > >
> > > > > > \* -- Seb [Mail] [Web] -- */
> > > > > >
> > > > > >
> > > > > > -------------------------------
> > > > > > Réponse au message :
> > > > > > -------------------------------
> > > > > >
> > > > > > > Enregistre ton HINSTANCE dans une variable quand reason est PROCESS_ATTACH.
> > > > > > > BruNews, ciao...
> > > > > > >
> > > > > > >
> > > > > > > -------------------------------
> > > > > > > Réponse au message :
> > > > > > > -------------------------------
> > > > > > >
> > > > > > > > Bonjour,
> > > > > > > >
> > > > > > > > J'aimerais comment récupérer le Hinstance lorsque l'on est dans une dll pour pouvoir utiliser la fonction CreateDialog.
> > > > > > > >
> > > > > > > > Merci
> > > > > > > >
> > > > > > > > \* -- Seb [Mail] [Web] -- */
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>
dimanche 4 mai 2003 à 16:16:53 | Re : HInstance et Dll

sebastienbro

C'est bon, je ne sais pas ce que j'ai fait, mais ca marche !

Autre question : Avec DialogBox, commen je peu modifier le texte d'un static de ce dialogue ?

Encore merci !

\* -- Seb [Mail] [Web] -- */


-------------------------------
Réponse au message :
-------------------------------

> D'accord, je vais essayé !
>
> Merci
>
> \* -- Seb [Mail] [Web] -- */
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Et tu es certain que lhModule vaut 0, tu l'as teste et affiche pour certitude ?
> > Le but est bien d'avoir une AboutBox par dll ?
> > Faut donc qu'elle soit modale, habituel disons.
> > Faudra l'afficher avec DialogBoxParam().
> > Insiste un peu, si va toujours pas je te ferai un exemple complet mais pas avant ce soir ou demain, j'ai du taf.
> > BruNews, ciao...
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Rien a faire, ca ne marche toujour pas. Voici mon code en entier :
> > >
> > > #define KRNLWINUX_API __declspec(dllexport) __stdcall
> > >
> > > #include "windows.h"
> > >
> > >
> > > typedef struct {
> > >
> > > char *Titre;
> > > char *CopyRight;
> > > char *Description;
> > > char *Version;
> > > char *App;
> > > char *Btn;
> > > HICON Icone;
> > >
> > > } LABOUTBOX;
> > >
> > > HINSTANCE lhModule;
> > >
> > > int WINAPI DllMain(HINSTANCE hInst, DWORD dwReason, PVOID pReserved)
> > > {
> > >
> > > if(dwReason == DLL_PROCESS_ATTACH) lhModule = hInst;
> > >
> > > return 1;
> > >
> > > }
> > >
> > >
> > > BOOL __stdcall DialogProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
> > > {
> > >
> > > RECT rc;
> > > unsigned long Ret;
> > >
> > > switch(Msg) {
> > >
> > > case 0x0110:
> > >
> > > GetWindowRect(hWnd, &rc);
> > >
> > > SetWindowPos(hWnd, HWND_TOP, (GetSystemMetrics(SM_CXSCREEN) - (rc.right - rc.left)) / 2, (GetSystemMetrics(SM_CYSCREEN) - (rc.bottom - rc.top)) / 2, 0, 0, SWP_NOSIZE);
> > >
> > > return 1; // Initialisation du dialogue
> > >
> > > break;
> > >
> > > case 0x0138:
> > >
> > >
> > > Ret = SetTextColor((HDC) wParam, RGB(0, 255, 0));
> > > return Ret;
> > > break;
> > >
> > > case 0x0111: //Message de commande
> > >
> > >
> > > if (HIWORD(wParam) == 0) { //Si l'utilisateur à cliquer sur un bouton
> > >
> > >
> > > EndDialog(hWnd, TRUE); //On quitte
> > >
> > > }
> > >
> > > break;
> > >
> > > default: return 0;
> > >
> > > }
> > >
> > > }
> > >
> > >
> > > BOOL KRNLWINUX_API AboutBox(LABOUTBOX Opt)
> > > {
> > >
> > > HWND lHandle;
> > > HWND lHandleImg;
> > >
> > > lHandle = CreateDialog(lhModule, MAKEINTRESOURCE(101), 0, DialogProc);
> > >
> > > if (lHandle == NULL) return FALSE;
> > >
> > >
> > > lHandleImg = GetDlgItem(lHandle, 11);
> > >
> > > if (lHandleImg == NULL) return FALSE;
> > >
> > > SendMessage(lHandleImg, STM_SETIMAGE, IMAGE_ICON, (long) Opt.Icone);
> > >
> > > if (! SetWindowText(lHandle, strcat("A propos de ", Opt.Titre))) return FALSE;
> > >
> > > if (ShowWindow(lHandle, SW_SHOW)) return FALSE;
> > >
> > > return TRUE;
> > >
> > > }
> > >
> > > \* -- Seb [Mail] [Web] -- */
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Mets cela en point d'entree:
> > > > int WINAPI DllMain(HINSTANCE hInst, DWORD dwReason, PVOID pReserved)
> > > > {
> > > > if(dwReason == DLL_PROCESS_ATTACH) lhModule = hInst;
> > > > return 1;
> > > > }
> > > > BruNews, ciao...
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > Voilà, g fait ca, mais rien a faire, lhModule reste nulle, je comprend pas.
> > > > >
> > > > > Si quelqu'un à la solution ...
> > > > >
> > > > > HINSTANCE lhModule;
> > > > >
> > > > > BOOL APIENTRY DllMain( HANDLE hModule,
> > > > > DWORD ul_reason_for_call,
> > > > > LPVOID lpReserved
> > > > > )
> > > > > {
> > > > > switch(ul_reason_for_call) {
> > > > >
> > > > > case DLL_PROCESS_ATTACH:
> > > > >
> > > > > lhModule = (HINSTANCE) hModule;
> > > > >
> > > > > break;
> > > > >
> > > > > }
> > > > >
> > > > > return TRUE;
> > > > > }
> > > > >
> > > > > \* -- Seb [Mail] [Web] -- */
> > > > >
> > > > >
> > > > > -------------------------------
> > > > > Réponse au message :
> > > > > -------------------------------
> > > > >
> > > > > > DllMain est appelee AVANT toute autre fonction de la dll.
> > > > > > 1ere raison sera PROCESS_ATTACH sinon ton prog n'accederait pas a la dll.
> > > > > > BruNews, ciao...
> > > > > >
> > > > > >
> > > > > > -------------------------------
> > > > > > Réponse au message :
> > > > > > -------------------------------
> > > > > >
> > > > > > > Mais c'est que je commence en c++, et je sais pas ce que tu me raconte là. Et la fonction DllMain est appelé après ma fonction, donc je n'ai pas le hinstance, et je c po commen faire. une idée ?
> > > > > > >
> > > > > > > \* -- Seb [Mail] [Web] -- */
> > > > > > >
> > > > > > >
> > > > > > > -------------------------------
> > > > > > > Réponse au message :
> > > > > > > -------------------------------
> > > > > > >
> > > > > > > > Enregistre ton HINSTANCE dans une variable quand reason est PROCESS_ATTACH.
> > > > > > > > BruNews, ciao...
> > > > > > > >
> > > > > > > >
> > > > > > > > -------------------------------
> > > > > > > > Réponse au message :
> > > > > > > > -------------------------------
> > > > > > > >
> > > > > > > > > Bonjour,
> > > > > > > > >
> > > > > > > > > J'aimerais comment récupérer le Hinstance lorsque l'on est dans une dll pour pouvoir utiliser la fonction CreateDialog.
> > > > > > > > >
> > > > > > > > > Merci
> > > > > > > > >
> > > > > > > > > \* -- Seb [Mail] [Web] -- */
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

1 2

Cette discussion est classée dans : dll, url, hinstance


Répondre à ce message

Sujets en rapport avec ce message

dll,c++,mysql... [ par spidsl ] Je suis newbie en C++, j'apprends a peine, et je me pose plein de kestions !!Primo, a koa servent les dll ??Ensuite, yatil la possibilité de faire des Dll (et ui, tjr la mm chose) [ par sebastienbro ] G un problème ! G fé une dll en c++ (ki d'ailleur, ne marche pas). L est sensé etre utilisé avec vb, mais voila : vb apelle la premiere fonction expor Idle - Hook - dll [ par Manson ] Bonjour,voila, j'ai trouve le code d'une dll permettant de savoirdepuis combien de temps le PC est inactif.Mais voila, elle a un probleme, quelque foi Pb de ressources [ par victorcoasne ] J'ai fait une dll avec une boîte de dialogue sous Dev mais pour que cela fonctionne je suis obligé de remmettre les ressources ds l'executable alors q Mystère DialogBox..... [ par Gendal67 ] Bonjour à tous....Après avoir cherché sur le forum en vain...(j'ai trouvé des problêmes ananlogues mais pas de réponses qui aurait pu m'aider je crois probleme de DLL [ par lamoueste ] bonjour a tous alors j'ai un petit souci j'aurai voulu appelle une fonction d'une dll depuis le projet ci-dessous mais j'ai une erreur : appelleDll.ob probleme de dll [ par lamoueste ] j'ai un probleme avec ma dll : il s'agit d'une fonction qui doit lance une fenetre (dialog box ) en modal mais j'ai une "assertion failed" :( et je ne Lancement d'une URL à partir d'une DLL (avec le browser par défaut) [ par vlacnog ] Bonjour,je voudrais démarrer une URL à partir d'une DLL non managée, sous Visual Studio.NET.La commande : system("start http:\\....") ne fonctionne pa dll et boite de dialogue [ par juguivin ] Bonjour.Je me lance dans la conception de dll pour Pixia , logiciel de graphisme; avec Devcmes dll sont bien reconnues et fonctionnent sauf  la boite 2 questions... [ par babaslow ] Hello,Voilà , j'arrive à lancer ma dll de la manière suivante :#include void __stdcall CALLBACK M2(char *s) {}int APIENTRY WinMain(HINSTANCE hInstance


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,780 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales