j'ai un soucis avec CFileDialog. Ce n'est pas la première fois que je l'utilise mais là je bloque complètement... Dans mon programme (MFC), j'utilise le composant flash et lors d'un évènement (ici fscommand), je souhaite ouvrir un CFileDialog mais lors de l'ouverture, la boite apparait très brièvement et l'appli se ferme! Mon code est le suivant :
void CmonDlg::FSCommandShockwaveflash(LPCTSTR command, LPCTSTR args)
{
// Ferme le programme
if (strcmp(command, "quit")==0)
{
CmonDlg::OnCancel();
return;
}
if (strcmp(command, "crea new image")==0)
{
char filterStr[] = "Image jpeg (*.jpg;*.jpeg)|*.jpg;*.jpeg||";
CFileDialog fileOpenDialog( TRUE, //set to true to open file dialog
NULL, //default extension
NULL, //default file name
OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST, //flags
filterStr, this);
fileOpenDialog.m_ofn.lpstrTitle = "Choix d'une photo";
if (fileOpenDialog.DoModal()!=IDOK) //<<<<< PLANTE ICI
return;
tu es sûr que ton code compile, je viens de l'essayer sous VC++6.0 et il ne compile pas.
en déclarant des CString pour filtrestr et le titre et en les utilisant au bon endroit, tout se passe bien.
Tout dépend pourquoi il ne compile pas! Tu as ajusté la classe à ton test? Tu as commenté le code après le premier return? J'ai toujours utilisé char ici, d'ailleur c'est aussi le cas dans l'exemple MSN (mais bon, on va tester avec CString hein!)
Par contre, j'ai une voie. Ca plante uniquement quand le repertoire d'ouverture est "Mes images" dans "Mes documents" et qu'il y a une image. Si le répertoire d'ouverture est autre ou qu'il n'y ai pas d'image, ça plante pas. C'est assez fou je trouve. En attendant, je définie le repertoire par defaut sur C: mais c'est pas top comme solution je trouve...