begin process at 2012 05 29 13:05:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Graphique

 > 

Mystère DialogBox.....


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

Mystère DialogBox.....

samedi 19 mars 2005 à 10:39:47 | Mystère DialogBox.....

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

samedi 19 mars 2005 à 11:56:40 | Re : Mystère DialogBox.....

vecchio56

Administrateur CodeS-SourceS
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);
}
samedi 19 mars 2005 à 12:49:29 | Re : Mystère DialogBox.....

BruNews

Administrateur CodeS-SourceS
case DLL_PROCESS_ATTACH:
  hdll = hInstance; // SEULEMENT ICI
  break;


ciao...
BruNews, MVP VC++
samedi 19 mars 2005 à 12:57:37 | Re : Mystère DialogBox.....

Gendal67

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!! :-))
samedi 19 mars 2005 à 13:13:26 | Re : Mystère DialogBox.....

BruNews

Administrateur CodeS-SourceS
donne un ID numérique à ta ressource, je n'ai pourtant jamais de prob avec les dialog dans les DLLs.

ciao...
BruNews, MVP VC++
samedi 19 mars 2005 à 14:40:56 | Re : Mystère DialogBox.....

Gendal67

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!! :-))
samedi 19 mars 2005 à 19:43:43 | Re : Mystère DialogBox.....

bayeto

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


Cette discussion est classée dans : dll, case, break, hinstance, dialogbox


Répondre à ce message

Sujets en rapport avec ce message

Pbm HOOK_CBT [ par lastpixl ] J'ai essayé de mettre un en place un hook CBT comme pour les autres types de hooks, mais à chaque fois quand je lance le programme il me plante mon en Point d'entrée DLL [ par victorcoasne ] Bonjour, J'ai Dev-C++ et quand je créé une dll la fonction DllMain() n'est pas apellé quand je charge dans un porgramme cette dll ! Voici le code de Récupérer les événements sur une frame dans C++ via JNI [ par PleoX ] Bonjour,(J'espère avoir mis mon sujet dans le bon thème. J'ai pas trouvé de thème plus aproprié.)Je suis en train de créer une application multi-touch Comport linux : lecture des caracteres [ par kenshin28 ] Bonjour à tous, Je suis actuellement en stage informatique et je dois porter une application qui tourne sur WinXP vers linux. Cette application utili DATE MACHINE en C++ [ par eishtein ] bonjour tout la monde; pouvez vous m'aidez à optimiser la classe suivante de telle sorte à ce qu'elle nous donne la date courante: [code=cpp] class d SFML problème de sprites [ par pop70 ] Bonsoir tout le monde, j'ai un problème avec la bibliothèque SFML : Je veux afficher des surfaces de 50px*50px tout les 50px (normal quoi). Le foncti Pb ecriture sur LP0 ouLPT [ par baptchr55 ] Bonjour à tous, je m'adresse à vous suite à un nouveau problème. Dans la cadre d'un projet je cherche à pouvoir ecrire sur le port // et commander le fonction switch et équivalent [ par gromhouleux ] Bonjour, en fait je cherche un équivalent à la fonction switch en C++. Je m'explique,Switch permet de faire une action en fonction d'une valeur entiè logiciel Borland C++ et DevC++ [ par waldomania ] Bonjour, j'ai un grand problème car j'ai programmé un mini projet sur un Dev C++ mais ça marche pas à Borland C++ le projet est en langage c (!=C++) Deplacement de plusieurs sprites à l'écran (SDL) [ par rasolofomanana ] Bonjour à tous, je débute en C et j'essaie de créer un programme où l'on peut déplacer plusieurs sprites à l'écran, par cases de 40px. Le problème es


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 : 1,154 sec (4)

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