Mystère DialogBox.....

Signaler
Messages postés
627
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
24 juillet 2011
-
Messages postés
224
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
18 octobre 2010
-
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)..je vous pose la question ici...
Voila, je dispose d'une DLL qui contient une fonction. Celle ci appelle la macro DialogBox afin d'afficher une boitede dialogue modale....en théorie! Rien ne s'affiche et pourtant j'ai filé à cette macro l'instance de la DLL et initialisé les commons controls (d'ailleurs pour l'instant elle en contient aucun common control)...voici mon code...

/* dans la DLL.....linké statiquement au prog */

HINSTANCE hDll;


BOOL APIENTRY DllMain (HINSTANCE hInstance, 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;
}

InitCommonControls();
hDll = hInstance;
return TRUE;
}

BOOL CALLBACK LogoProcedure(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) {

switch(message) {

case WM_INITDIALOG:

MessageBox(0, "Appel interne à la DLL !!!", ":)", 0);
return TRUE;
break;

case WM_CLOSE:

EndDialog(hDlg, 0);
break;
}

return FALSE;
}


extern "C" {


void DLLEXPORT CreateLogo(char* szBmpFile, int longueur, int largeur, DWORD dwShowTime) {

lstrcpy(info.szPicture, szBmpFile);
info.length = longueur;
info.width = largeur;
info.dwTimeOut = dwShowTime;

DialogBox((HINSTANCE) hDll, "LOGO", HWND_DESKTOP, (DLGPROC) LogoProcedure);
}



} // fin du extern C

/* mon prog */

#include <windows.h>


#define DLLEXPORT __declspec(dllexport)


extern "C" {

void DLLEXPORT CreateLogo(char* szBmpFile, int longueur, int largeur, DWORD dwShowTime);


}


int main() {

CreateLogo("D:\\p.bmp", 824, 618, 5000);
}

J'ai essayé avec l'instance de la DLL et avec celle du prog appelant, toujours rien! Pareil pour InitCommonControls(), je l'ai déja mis juste avant l'appel à DialogBox() dans la DLL ainsi que dans la fonction WinMain() du prog...là je en sais vraiment plus quoi faire...
Merci d'avance de votre aide

Gendal67, Dev-C++ 4.9.9.1, J'adore cppfrance!! :-))

6 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Tu peux peut-être essayer de passer GetModulerHandle(0) à DialogBox.
Sinon regarde le message d'erreur retourné par DialogBox ca pourra peut
être t'aider:



void DisplayLastError()

{

LPVOID lpMsgBuf;

if(!FormatMessage(

FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,

NULL,

GetLastError(),

MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),

(LPTSTR)&lpMsgBuf,

0,

NULL))

return;



MessageBox(NULL, (LPCTSTR)lpMsgBuf, TEXT("Error"), MB_ICONINFORMATION);



LocalFree(lpMsgBuf);

}
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
case DLL_PROCESS_ATTACH:
hdll = hInstance; // SEULEMENT ICI
break;

ciao...
BruNews, MVP VC++
Messages postés
627
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
24 juillet 2011

Oui BruNews je viens à l'instant d'essayer..mais cela n'affiche toujours rien...

vecchio56> "Le type de ressource spécifié ne peut être trouvé dans le fichier image" <<< pas callé moi par contre...

Gendal67, Dev-C++ 4.9.9.1, J'adore cppfrance!! :-))
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
donne un ID numérique à ta ressource, je n'ai pourtant jamais de prob avec les dialog dans les DLLs.

ciao...
BruNews, MVP VC++
Messages postés
627
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
24 juillet 2011

BruNews> Non plu, même en mettant un ID (et en appellant donc avec MAKEINTRESOURCE()) j'arrive à que dalle...ça vient p-e du compilo

Gendal67, Dev-C++ 4.9.9.1, J'adore cppfrance!! :-))
Messages postés
224
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
18 octobre 2010

Le fichier de resource et bien compilé et lié dans la DLL? Je vois rien d'autre...