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!! :-))