Boite de dialog d'impression qui ne veut pas s'afficher

Signaler
Messages postés
24
Date d'inscription
mardi 18 janvier 2005
Statut
Membre
Dernière intervention
17 juin 2006
-
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
-
pourquoi ce code n'affiche-t-il pas la boite de dialog d'impression?

//---------------------------------------------------------------------------
#include <windows.h>
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
PRINTDLG pd;
HWND hwnd;


// Initialize PRINTDLG
ZeroMemory(&pd, sizeof(pd));
pd.lStructSize = sizeof(pd);
pd.hwndOwner = hwnd;
pd.hDevMode = NULL;
pd.hDevNames = NULL;
pd.Flags = PD_RETURNIC;
pd.nCopies = 1;
pd.nFromPage = 0xFFFF;
pd.nToPage = 0xFFFF;
pd.nMinPage = 1;
pd.nMaxPage = 0xFFFF;


PrintDlg(&pd);
DWORD dw = CommDlgExtendedError();



return 0;
}
//---------------------------------------------------------------------------

huw

7 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
init ton: HWND hwnd = 0;
verif que le compilo a bien insere le code, voyant que ça ne fait rien, il peut tres bien l'avoir zappé.

ciao...
BruNews, MVP VC++
Messages postés
24
Date d'inscription
mardi 18 janvier 2005
Statut
Membre
Dernière intervention
17 juin 2006

j'ai initialiser mon hwnd à 0. j'ai lancer mon prog pas à pas et après l'execution de la ligne "HWND hwnd = 0;
", la variable hwnd = NULL. bref la boite de dialog ne s'affiche toujours pas

huw
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
et PrintDlg(&pd); est bien appelé ?

ciao...
BruNews, MVP VC++
Messages postés
24
Date d'inscription
mardi 18 janvier 2005
Statut
Membre
Dernière intervention
17 juin 2006

je pense oui, je ne comprend pas pourquoi elle la fonction PrintDlg() ne serait pas bien appelée.

j'ai tenté de récupérer l'erreur retournée, voilà le code (me revoie toujour "CDERR_STRUCTSIZE" or pd.lStructSize=68):

//---------------------------------------------------------------------------
#include <windows.h>
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{


PRINTDLG pd;
HWND hwnd;
hwnd = 0;


// Initialize PRINTDLG
ZeroMemory(&pd, sizeof(pd));
pd.lStructSize = sizeof(pd);
pd.hwndOwner = hwnd;
pd.hDevMode = NULL;
pd.hDevNames = NULL;
pd.Flags = PD_RETURNIC;
pd.nCopies = 1;
pd.nFromPage = 1;
pd.nToPage = 1;
pd.nMinPage = 1;
pd.nMaxPage = 1;


PrintDlg(&pd);
DWORD dw = CommDlgExtendedError();


char* temp;


switch(dw)
{
case CDERR_DIALOGFAILURE : temp = "CDERR_DIALOGFAILURE";
case CDERR_FINDRESFAILURE : temp = "CDERR_FINDRESFAILURE";
case CDERR_INITIALIZATION : temp = "CDERR_INITIALIZATION";
case CDERR_LOADRESFAILURE : temp = "CDERR_LOADRESFAILURE";
case CDERR_LOADSTRFAILURE : temp = "CDERR_LOADSTRFAILURE";
case CDERR_LOCKRESFAILURE : temp = "CDERR_LOCKRESFAILURE";
case CDERR_MEMALLOCFAILURE : temp = "CDERR_MEMALLOCFAILURE";
case CDERR_MEMLOCKFAILURE : temp = "CDERR_MEMLOCKFAILURE";
case CDERR_NOHINSTANCE : temp = "CDERR_NOHINSTANCE";
case CDERR_NOHOOK : temp = "CDERR_NOHOOK";
case CDERR_NOTEMPLATE : temp = "CDERR_NOTEMPLATE";
case CDERR_REGISTERMSGFAIL : temp = "CDERR_REGISTERMSGFAIL";
case CDERR_STRUCTSIZE : temp = "CDERR_STRUCTSIZE";
}


MessageBox(NULL, temp, "error", MB_OK);


return 0;
}
//---------------------------------------------------------------------------

huw
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
faudrai aussi mettre un break à la fin des case sinon tu aura toujours le même message (le dernier de la liste).
Messages postés
24
Date d'inscription
mardi 18 janvier 2005
Statut
Membre
Dernière intervention
17 juin 2006

ok c'est fait (merci)


malheureusement mon problème n'est toujours pas résolu :( -> message afficher "CDERR_STRUCTSIZE"


voilà mon code (en entier):


//---------------------------------------------------------------------------
#include <windows.h>
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
PRINTDLG pd;
HWND hwnd;
hwnd = 0;


// Initialize PRINTDLG
ZeroMemory(&pd, sizeof(pd));
pd.lStructSize = sizeof(pd);
pd.hwndOwner = hwnd;
pd.hDevMode = NULL;
pd.hDevNames = NULL;
pd.Flags = PD_RETURNIC;
pd.nCopies = 1;
pd.nFromPage = 1;
pd.nToPage = 1;
pd.nMinPage = 1;
pd.nMaxPage = 1;


PrintDlg(&pd);
DWORD dw = CommDlgExtendedError();


switch(dw)
{
case CDERR_DIALOGFAILURE : MessageBox(NULL, "CDERR_DIALOGFAILURE", "error", MB_OK); break;
case CDERR_FINDRESFAILURE : MessageBox(NULL, "CDERR_FINDRESFAILURE", "error", MB_OK); break;
case CDERR_INITIALIZATION : MessageBox(NULL, "CDERR_INITIALIZATION", "error", MB_OK); break;
case CDERR_LOADRESFAILURE : MessageBox(NULL, "CDERR_LOADRESFAILURE", "error", MB_OK); break;
case CDERR_LOADSTRFAILURE : MessageBox(NULL, "CDERR_LOADSTRFAILURE", "error", MB_OK); break;
case CDERR_LOCKRESFAILURE : MessageBox(NULL, "CDERR_LOCKRESFAILURE", "error", MB_OK); break;
case CDERR_MEMALLOCFAILURE : MessageBox(NULL, "CDERR_MEMALLOCFAILURE", "error", MB_OK); break;
case CDERR_MEMLOCKFAILURE : MessageBox(NULL, "CDERR_MEMLOCKFAILURE", "error", MB_OK); break;
case CDERR_NOHINSTANCE : MessageBox(NULL, "CDERR_NOHINSTANCE", "error", MB_OK); break;
case CDERR_NOHOOK : MessageBox(NULL, "CDERR_NOHOOK", "error", MB_OK); break;
case CDERR_NOTEMPLATE : MessageBox(NULL, "CDERR_NOTEMPLATE", "error", MB_OK); break;
case CDERR_REGISTERMSGFAIL : MessageBox(NULL, "CDERR_REGISTERMSGFAIL", "error", MB_OK); break;
case CDERR_STRUCTSIZE : MessageBox(NULL, "CDERR_STRUCTSIZE", "error", MB_OK); break;
}
return 0;
}
//---------------------------------------------------------------------------



huw
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,

Je viens de tester ton code et ça affiche bien la boite de dialogue
d'impression. Le problème est surement ailleurs. Vérifie ton système et
assure-toi que le pilote de l'imprimante est bien installé.