begin process at 2012 05 27 16:44:50
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > GLISSER DES FICHIERS SUR VOTRE APPLI [WIN32] [UTILISATION WIN32 OU MFC EXPLICITÉ]

GLISSER DES FICHIERS SUR VOTRE APPLI [WIN32] [UTILISATION WIN32 OU MFC EXPLICITÉ]


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Niveau :Initié Date de création :30/08/2004 Date de mise à jour :02/09/2004 11:28:00 Vu / téléchargé :2 313 / 172

Auteur : magic_Nono

Ecrire un message privé
Site perso
Commentaire sur cette source (17)
Ajouter un commentaire et/ou une note

 Description

extrait de MP

on m'a demandé comment gérer le drop de fichiers sur l'appli....

Ca date de 2003 mé bon...


tout d'abord :
une versiion ultra simplifiée

____________________________________
#include "BListeIndir.hpp"
#include <windows.h>

void recupNomFichierDragDrop(HDROP* leDrop,   BLBString* listeResult);

void OnDropFiles(HDROP hDropInfo)
{
        BLBString listeFicSrces;
        recupNomFichierDragDrop0(&hDropInfo, &listeFicSrces);
MessageBox(NULL,listeFicSrces.t oString(),"liste fic drag n drop",MB_OK|MB_ICONINFORMATION);
}


void recupNomFichierDragDrop0(HDROP* leDrop,   BLBString* listeResult)
{
        HDROP hDropInfo=*leDrop;
        BString rep;
        int nb,taille=0,i;
        nb=DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0 );
        if(nb==0)
            PB1("un appel inutil à la fonction BVisuel::recupNomFichierDragDrop");
        char*fic=NULL;
        for( i = 0; i < nb; i++ )
        {
                taille=DragQueryFile(hDropInfo, i, NULL, 0 )+1;
                ALLOUEn(fic , char , taille );
                DragQueryFile(hDropInfo, i, fic, taille );
            //C OK, on a le nom du fichier
                rep=fic;
                FREE(fic);
                if(rep!="")
                    (*listeResult)+=rep;
        }
        DragFinish(hDropInfo);  //vidage de la mem...
        *leDrop=hDropInfo;  //TOCHECK : transmistion de param...
}

Source

  • //appel :sur cet evt : WM_DROPFILES
  • void DMetaProgPrinc::OnDropFiles(HDROP hDropInfo)
  • {
  • /// ----------------------------------------------------------------------------
  • /// ---------------- DMetaProgPrinc::OnDropFiles(HDROP hDropInfo) ----------------
  • /// ----------------------------------------------------------------------------
  • /// ----- Objectif : drag & Drop de fichiers sur la fenêtre
  • /// ----- Auteur(s) : Bruno CELLE 27/04/03
  • /// ----- PreCond : /
  • /// ----- PostCond : /
  • /// ----- Etat : 1 (-1<0<1<2)
  • /// ----------------------------------------------------------------------------
  • /// ----- HDROP hDropInfo : liste d'objets glissés (fichiers)
  • /// ----------------------------------------------------------------------------
  • /// ----- Var : classes externes dont on appelle des méthodes (2) : BFichier ,BVisuel
  • /// ----- Var Utilisées de la classe (5) : bModeAjjout ,listeFicSrces ,m_sNomSrce ,m_sRep ,traitementEnCours
  • /// ----- Var Muettes (cf.partie préc) (1) : hDropInfo
  • /// ----- Var Internes à la fonction (3) : listeExtentionsOK ,nomFic ,plomp
  • /// ----- Var In (4) : bModeAjjout ,hDropInfo ,listeFicSrces ,traitementEnCours
  • /// ----- Var In Globales (1) : iLangageLogiciel
  • /// ----- Var In Globales Constantes (1) : TRAITE_EXCEPTION_B
  • /// ----- Var Out (1) : m_sRep
  • /// ----- Var In-Out (1) : m_sNomSrce
  • UpdateData(true);
  • /// algo : sécu
  • if(traitementEnCours)
  • {
  • BVisuel::alerte("Un traitement est en cours, veuillez renouveller ce Drag & Drop à la fin...!",false);
  • return;
  • }
  • try
  • {
  • {
  • BString plomp=m_sNomSrce;
  • if(!bModeAjjout||plomp.beginWith('.'))
  • listeFicSrces.vide();
  • }
  • BString nomFic;
  • BLBString listeExtentionsOK(true,false);
  • listeExtentionsOK+=(BString)"c"; //operator = pose pb en mode direct
  • listeExtentionsOK+=(BString)"cpp";
  • listeExtentionsOK+=(BString)"h";
  • listeExtentionsOK+=(BString)"hpp";
  • listeExtentionsOK+=(BString)"java";
  • listeExtentionsOK+=(BString)"pl"; //prolog
  • listeExtentionsOK+=(BString)"trace"; //trace d'exécution
  • listeExtentionsOK+=(BString)"ini"; //fichier ini...
  • {
  • nomFic=BFichier::recupNomFichierDragDrop(&hDropInfo,BLang::BLang::getTxtLangue("fichiersDropWarning"), &listeExtentionsOK, &listeFicSrces,false,!bModeAjjout );
  • }
  • m_sNomSrce=nomFic;
  • UpdateData(false);
  • majAffichageChgt();
  • BString plomp;
  • plomp=listeFicSrces.getNbElts();
  • if(iLangageLogiciel>1)
  • plomp+=" éléments";
  • else
  • plomp+=" élément";
  • if(listeFicSrces.getNbElts()>1)
  • plomp+=" s";
  • plomp+=" à traiter : \n";
  • plomp+=listeFicSrces.toString();
  • plomp.winFormat();
  • m_sRep=plomp;
  • }
  • TRAITE_EXCEPTION_B;
  • UpdateData(false);
  • }
  • //rappel de BFichier::recupNomFichierDragDrop
  • BString BFichier::recupNomFichierDragDrop(HDROP* leDrop, const BString& MessageErreur, BLBString* listeExtentionsOK, BLBString* listeResult, bool tolerence, bool imposeMmExtensionPrListe)
  • {
  • /// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  • /// ---------------- BFichier::recupNomFichierDragDrop(HDROP* leDrop ,const BString& MessageErreur ,BLBString* listeExtentionsOK ,BLBString* listeResult ,bool tolerence ,bool imposeMmExtensionPrListe) -> BString ----------------
  • /// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  • /// ----- Objectif : recuperer les Noms de Fichiers glissés (Drag And Drop) accepte certain type de fichier et en tolère éventuellement d'autres
  • /// ----- Auteur(s) : aide Visual - Bruno CELLE 01/03/03
  • /// ----- PreCond : listeResult sans doublon
  • /// ----- PostCond : /
  • /// ----- Etat : 1 (-1<0<1<2)
  • /// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  • /// ----- HDROP* leDrop : var recupérée : en gros, liste de fichiers trainés
  • /// ----- const BString& MessageErreur : cf.nom
  • /// ----- BLBString* listeExtentionsOK : cf.nom
  • /// ----- BLBString* listeResult: liste des fichiers trainés
  • /// ----- bool tolerence : tolerence des fichiers n'ayant pas la bonne extension
  • /// ----- bool imposeMmExtensionPrListe : impose la meme extension pour toute la liste
  • /// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  • /// ----- retour (BString) : le nom long du fichier trainé... ou 'Liste' si une liste est trainée
  • /// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  • /// ----- Var : classes externes dont on appelle des méthodes (1) : BVisuel
  • /// ----- Var Muettes (cf.partie préc) (6) : MessageErreur ,imposeMmExtensionPrListe ,leDrop ,listeExtentionsOK ,listeResult ,tolerence
  • /// ----- Var Internes à la fonction (8) : ext ,extOK ,fic ,hDropInfo ,i ,nb ,rep ,taille
  • /// ----- Var Utilisées par adresse (1) : fic
  • /// ----- Var In (4) : MessageErreur ,imposeMmExtensionPrListe ,listeResult ,tolerence
  • /// ----- Var In-Out (1) : leDrop
  • HDROP hDropInfo=*leDrop;
  • // structure d'un HDROP
  • //UINT DragQueryFile(
  • // HDROP hDrop,
  • // UINT iFile,
  • // LPTSTR lpszFile,
  • // UINT cch
  • //// UpdateData(true);
  • BString rep,ext,extOK;
  • int nb,taille,i;
  • taille=0;
  • nb=0;
  • nb=DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0 );
  • if(nb==0)
  • PB1("un appel inutil à la fonction BVisuel::recupNomFichierDragDrop");
  • char*fic=NULL;
  • // i=0;
  • for( i = 0; i < nb; i++ )
  • {
  • taille=DragQueryFile(hDropInfo, i, NULL, 0 )+1;
  • ALLOUEn(fic , char , taille );
  • DragQueryFile(hDropInfo, i, fic, taille );
  • //C OK, on a le nom du fichier
  • //verif de son type et remplacement si c'est un bak
  • ext=extraitExtension(fic);
  • if(taille>4 && ext=="bak")
  • fic[taille-5]='\0';
  • //ext=BFichier::extraitExtension(fic);
  • ext=extraitExtension(fic);
  • rep=fic;
  • if(!listeExtentionsOK->checkIn(ext))
  • {
  • BString plomp=MessageErreur;
  • plomp+="\n\n fichier trainé : \n";
  • plomp+=rep;
  • plomp+="\n\n\t";
  • if(!tolerence)
  • plomp+="non ";
  • plomp+="toléré";
  • BVisuel::alerte(plomp);
  • if(!tolerence)
  • rep="";
  • }
  • FREE(fic);
  • if(imposeMmExtensionPrListe && i==0)
  • extOK=ext;
  • if(rep!="" && imposeMmExtensionPrListe && i>0 && extOK!=ext)
  • {
  • BString plomp="La liste trainée doit comporter uniquement des éléments de même extension\n";
  • plomp+=extOK;
  • plomp+='\n';
  • plomp+=rep;
  • plomp+="\n ignoré";
  • BVisuel::alerte(plomp,false);
  • rep="";
  • }
  • if(rep!="")
  • (*listeResult)+=rep;
  • }
  • DragFinish(hDropInfo); //vidage de la mem...
  • *leDrop=hDropInfo; //TOCHECK : transmistion de param...
  • if(listeResult->getNbElts()>1)
  • rep="Liste";
  • else
  • if(listeResult->getNbElts()>0)
  • rep=listeResult->getAt(0); //secu pour les fichiers ignorés
  • return rep;
  • }
//appel :sur cet evt : WM_DROPFILES


void DMetaProgPrinc::OnDropFiles(HDROP hDropInfo)
{
/// ----------------------------------------------------------------------------
/// ---------------- DMetaProgPrinc::OnDropFiles(HDROP hDropInfo) ----------------
/// ----------------------------------------------------------------------------
/// -----  Objectif	: drag & Drop de fichiers sur la fenêtre
/// -----  Auteur(s)	: Bruno CELLE 27/04/03
/// -----  PreCond	: /
/// -----  PostCond	: /
/// -----  Etat		: 1			(-1<0<1<2)
/// ----------------------------------------------------------------------------
/// -----  HDROP hDropInfo	: liste d'objets glissés (fichiers)
/// ----------------------------------------------------------------------------
/// -----  Var : classes externes dont on appelle des méthodes (2)	: BFichier ,BVisuel
/// -----  Var Utilisées de la classe (5)	: bModeAjjout ,listeFicSrces ,m_sNomSrce ,m_sRep ,traitementEnCours
/// -----  Var Muettes (cf.partie préc) (1)	: hDropInfo
/// -----  Var Internes à la fonction (3)	: listeExtentionsOK ,nomFic ,plomp
/// -----  Var In  (4)	: bModeAjjout ,hDropInfo ,listeFicSrces ,traitementEnCours
/// -----  Var In  Globales (1)	: iLangageLogiciel
/// -----  Var In  Globales Constantes (1)	: TRAITE_EXCEPTION_B
/// -----  Var Out (1)	: m_sRep
/// -----  Var In-Out (1)	: m_sNomSrce
	UpdateData(true);
	/// algo : sécu
	if(traitementEnCours)
	{
		BVisuel::alerte("Un traitement est en cours, veuillez renouveller ce Drag & Drop à la fin...!",false);
		return;
	}
	try
	{
		{
			BString plomp=m_sNomSrce;
			if(!bModeAjjout||plomp.beginWith('.'))
				listeFicSrces.vide();
		}
		BString nomFic;
		BLBString listeExtentionsOK(true,false);
		listeExtentionsOK+=(BString)"c";	//operator = pose pb en mode direct
		listeExtentionsOK+=(BString)"cpp";
		listeExtentionsOK+=(BString)"h";
		listeExtentionsOK+=(BString)"hpp";
		listeExtentionsOK+=(BString)"java";
		listeExtentionsOK+=(BString)"pl";	//prolog
		listeExtentionsOK+=(BString)"trace";	//trace d'exécution
		listeExtentionsOK+=(BString)"ini";	//fichier ini...
		{
			nomFic=BFichier::recupNomFichierDragDrop(&hDropInfo,BLang::BLang::getTxtLangue("fichiersDropWarning"), &listeExtentionsOK, &listeFicSrces,false,!bModeAjjout );
		}
		m_sNomSrce=nomFic;
		UpdateData(false);
		majAffichageChgt();
		BString plomp;
		plomp=listeFicSrces.getNbElts();
		if(iLangageLogiciel>1)
			plomp+=" éléments";
		else
			plomp+=" élément";
		if(listeFicSrces.getNbElts()>1)
			plomp+=" s";
		plomp+=" à traiter : \n";
		plomp+=listeFicSrces.toString();
		plomp.winFormat();
		m_sRep=plomp;
	}
	TRAITE_EXCEPTION_B;
	UpdateData(false);
}



//rappel de BFichier::recupNomFichierDragDrop

BString BFichier::recupNomFichierDragDrop(HDROP* leDrop, const BString& MessageErreur, BLBString* listeExtentionsOK, BLBString* listeResult, bool tolerence, bool imposeMmExtensionPrListe)
{
/// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/// ---------------- BFichier::recupNomFichierDragDrop(HDROP* leDrop ,const BString& MessageErreur ,BLBString* listeExtentionsOK ,BLBString* listeResult ,bool tolerence ,bool imposeMmExtensionPrListe) -> BString ----------------
/// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/// -----  Objectif	: recuperer les Noms de Fichiers glissés (Drag And Drop) accepte certain type de fichier et en tolère éventuellement d'autres
/// -----  Auteur(s)	: aide Visual - Bruno CELLE 01/03/03
/// -----  PreCond	: listeResult sans doublon
/// -----  PostCond	: /
/// -----  Etat		: 1			(-1<0<1<2)
/// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/// -----  HDROP* leDrop	: var recupérée : en gros, liste de fichiers trainés
/// -----  const BString& MessageErreur	: cf.nom
/// -----  BLBString* listeExtentionsOK	: cf.nom
/// -----  BLBString* listeResult: liste des fichiers trainés
/// -----  bool tolerence	: tolerence des fichiers n'ayant pas la bonne extension
/// -----  bool imposeMmExtensionPrListe	: impose la meme extension pour toute la  liste
/// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/// -----  retour (BString)	: le nom long du fichier trainé... ou 'Liste' si une liste est trainée
/// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/// -----  Var : classes externes dont on appelle des méthodes (1)	: BVisuel
/// -----  Var Muettes (cf.partie préc) (6)	: MessageErreur ,imposeMmExtensionPrListe ,leDrop ,listeExtentionsOK ,listeResult ,tolerence
/// -----  Var Internes à la fonction (8)	: ext ,extOK ,fic ,hDropInfo ,i ,nb ,rep ,taille
/// -----  Var Utilisées par adresse (1)	: fic
/// -----  Var In  (4)	: MessageErreur ,imposeMmExtensionPrListe ,listeResult ,tolerence
/// -----  Var In-Out (1)	: leDrop
		HDROP hDropInfo=*leDrop;
	// structure d'un HDROP
	//UINT DragQueryFile(
	//    HDROP hDrop,
	//    UINT iFile,
	//   LPTSTR lpszFile,
	//    UINT cch
	////	UpdateData(true);
		BString rep,ext,extOK;
		int nb,taille,i;
		taille=0;
		nb=0;
		nb=DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0 );
		if(nb==0)
			PB1("un appel inutil à la fonction BVisuel::recupNomFichierDragDrop");
		char*fic=NULL;
	//	i=0;
		for( i = 0; i < nb; i++ )
		{
				taille=DragQueryFile(hDropInfo, i, NULL, 0 )+1;
				ALLOUEn(fic , char , taille );
				DragQueryFile(hDropInfo, i, fic, taille );
			//C OK, on a le nom du fichier
			//verif de son type et remplacement si c'est un bak
				ext=extraitExtension(fic);
				if(taille>4 && ext=="bak")
					fic[taille-5]='\0';
			//ext=BFichier::extraitExtension(fic);
				ext=extraitExtension(fic);
				rep=fic;
				if(!listeExtentionsOK->checkIn(ext))
				{
						BString plomp=MessageErreur;
						plomp+="\n\n fichier trainé : \n";
						plomp+=rep;
						plomp+="\n\n\t";
						if(!tolerence)
							plomp+="non ";
						plomp+="toléré";
						BVisuel::alerte(plomp);
						if(!tolerence)
							rep="";
				}
				FREE(fic);
				if(imposeMmExtensionPrListe && i==0)
					extOK=ext;
				if(rep!="" && imposeMmExtensionPrListe && i>0 && extOK!=ext)
				{
						BString plomp="La liste trainée doit comporter uniquement des éléments de même extension\n";
						plomp+=extOK;
						plomp+='\n';
						plomp+=rep;
						plomp+="\n ignoré";
						BVisuel::alerte(plomp,false);
						rep="";
				}
				if(rep!="")
					(*listeResult)+=rep;
		}
		DragFinish(hDropInfo);	//vidage de la mem...
		*leDrop=hDropInfo;	//TOCHECK : transmistion de param...
		if(listeResult->getNbElts()>1)
			rep="Liste";
		else
			if(listeResult->getNbElts()>0)
				rep=listeResult->getAt(0);	//secu pour les fichiers ignorés
		return rep;
}


 Conclusion

Bonne Prog
++

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

01 septembre 2004 20:45:58 :
l'ensemble de mes bibli maj ds le zip Fonctionne sur Visual, Borland, dev C++ , djgpp, borland builder.... & Linux !
01 septembre 2004 21:18:15 :
.
02 septembre 2004 10:02:51 :
titre changé
02 septembre 2004 11:28:01 :
une fonction ultraSimplifiée produite...

 Sources du même auteur

Source avec Zip [MFC] BCOMBOBOX & BLISTBOX
Source avec Zip Source avec une capture [ C++ WIN32 ] REMPLISSAGE DE FICHE - FENETRE DYNAMIQUE
Source avec Zip Source avec une capture WIN32 - MFC - VC6 - PLACE D'UNE APPLI : BARRE DES TACHES OU ...
Source avec Zip [WIN32] [VC6] BOITE À CHOIX MULTIPLE PAR BOUTONS
Source avec Zip TEMPLATE DE DIALOG/FENETRE (VC++)

 Sources de la même categorie

Source avec Zip WIN32 TLS LENT par dguilmain
Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64) par BruNews
Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip DELETE DIRECTORY (WIN64) par BruNews
Source avec Zip ENUM DIRECTORY (WIN64) par BruNews

Commentaires et avis

Commentaire de magic_Nono le 31/08/2004 10:41:49

Add On

pour activer le déposé: il faut activer la gestion de l'evt
WM_DROPFILES

2soluces

MFC :
//rajouter ds la MessageMap
ON_WM_DROPFILES()



sans MFC :
//WS_EX_ACCEPTFILES !!!
  hwnd = CreateWindowEx (
           WS_EX_ACCEPTFILES,szClassName,"Windows App",WS_OVERLAPPEDWINDOW,
           CW_USEDEFAULT,CW_USEDEFAULT,544,375,HWND_DESKTOP,NULL,
           hThisInstance,NULL);

Commentaire de victorcoasne le 31/08/2004 10:49:26

Impect ce que je cherchais ;-)

J'ai l'imprésion que cette source est faite pour moi mais j'en suis pas sûr !!

Commentaire de victorcoasne le 31/08/2004 10:49:54

J'allait oublier 10/10

Commentaire de DeAtHCrAsH le 31/08/2004 20:48:31

Existe déja dans mes sources en beaucoup plus simple et en beaucoup plus performant.

Tes Bxxx ne font que compliqués le code et deterioré les performances, surtout pour si peu de chose!

Voici l'url :
http://www.cppfrance.com/code.aspx?id=24907

Shell

Commentaire de magic_Nono le 31/08/2004 21:02:54

lol tu te converti toi aussi ds le commercial?

Commentaire de magic_Nono le 01/09/2004 17:40:01

compliquer les choses, je ne crois pas....

pour les perf... ce n'est pas sensible

l'humain ne persoit pas vraiement la différence entre 3 ou 5 micro secondes à vrai dire

dc vu que le but du jeu est d'afficher une boite à valider... rien d'inquiétant

si tu t'inquiete vraiement pr les perf, teste dc MP, entirement fait avec les Bxxxx
il n'a rien à enviers aux grands...

++

Commentaire de DeAtHCrAsH le 01/09/2004 22:17:46

LoOl,
Mais tu t'entend parler ou quoi ?

Tu serais pas un peu a l'Ouest par hasard ?

Shell

Commentaire de magic_Nono le 01/09/2004 22:37:51

mmm

restons courtois...

je ne cherche po a imposer ça

C juste que ça résoud rapidement certain pb

OK, C bien loin de l'asmb

et que C po aussi top que ça... ça s'améliore de j en j...

A propos, G mis ici toutes mes Bxxx
seules qq zunes servent pr le src en question
BVisuel, BString, BListeIndir, BFichier
et évidement globals exceptions & macros...

C tt

++


Nono.

Au fait, tu me conseillerai de faire comme toi? de tout mettre mes lib dans les .header???

comme ça tt serait inline => + rapide...

D'ailleurs, au final se ne sera qu'une classe interface entre mes prog (et ceux qui les utilise) & les stl, les fonctions de <window> et autre (en s'affranchissant progressivt des mfc)

en fait, figure toi qu'on est plsrs à les trouver plus simples d'utilisation...

Magicalement...

Commentaire de DeAtHCrAsH le 01/09/2004 22:41:07

Bon regarde un exemple simple et concret.
je veux faire un simple drag&drop.
Tu crois vraiment que je vais me prendre la tete a inclure tes classes Bxxx qui font plusieurs truc alors que je veux juste un simple d&g ????
Quel interet j'aurais a faire ca ?

Le but d'un programmeur c'est d'optimisé sont programme, pas de le coulé!

Shell

Commentaire de magic_Nono le 01/09/2004 23:00:01

/// -----   HDROP* leDrop   : var recupérée : en gros, liste de fichiers trainés
/// -----   const BString& MessageErreur    : cf.nom
/// -----   BLBString* listeExtentionsOK    : cf.nom
/// -----   BLBString* listeResult: liste des fichiers trainés
/// -----   bool tolerence  : tolerence des fichiers n'ayant pas la bonne extension
/// -----   bool imposeMmExtensionPrListe   : impose la meme extension pour toute la    liste


ça te semble trop complexe?

C juste qu'a un moment donné j'ai eu besoin de ces options
BLBString* listeExtentionsOK    peut etre à NULL

etc

m'enfin.

Bon allé
+
++

Commentaire de DeAtHCrAsH le 02/09/2004 10:09:12

Non non elles sont parfaites.
Juste une chose : mets tes connaissance au profit de chose plus utiles, au lieu de faire ses classes qui ne seront jamais utilisées par plus de 0.00000000000001% des programmeurs ; en fait il y a meme que toi je crois :)

Shell

Commentaire de magic_Nono le 02/09/2004 10:23:36

ssi y a qq utilkisateurs
m'enfin

po grav

bon ceci dit, ces utilisateurs me demandent OnDropFiles
sans classes

dc vu que C une meth static

pas trop de pb

y a que ça a virer

et probablement ces includes à mettre

#include <io.h> //normalement pas nécessaire mais précisé, on ne sais js

sinon,
#ifdef BSouris
#include "liste/BListeIndir.hpp"
#include <windows.h>
#endif /* BSouris */

voila
ça devrait aller


++
Nono.

Commentaire de magic_Nono le 02/09/2004 10:41:05

ah....
CT po ça
BFichier est OK

C l'appel à simplifier


=>


try
    {
        BLBString listeFicSrces;
        BString nomFic=BFichier::recupNomFichierDragDrop(&hDropInfo,"erreur de drop", NULL, &listeFicSrces,false,false);
BVisuel::informe(listeFicSrces.toString());
    }

Commentaire de magic_Nono le 02/09/2004 10:42:24

TRAITE_EXCEPTION_B;

Commentaire de magic_Nono le 02/09/2004 10:43:29

avec pr seul include : BFichier

Commentaire de magic_Nono le 02/09/2004 14:56:34

une version sans mes bibli !!!!
compilée sous devC++
personnellement je la trouve très lourde en ressource & pas pratique car non dynamique.... & sans protection
mais bon, ça a résolu 2 demandes sur msn alors... la voici
___________________________________________
#include <windows.h>

LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

char szClassName[ ] = "WindowsApp";

void recupNomFichierDragDrop(HDROP* leDrop,   char** listeResult);
void OnDropFiles(HDROP hDropInfo)
{
        char listeFicSrces[50000];
        recupNomFichierDragDrop(&hDropInfo, &listeFicSrces);
MessageBox(NULL,listeFicSrces,"liste fic drag n drop",MB_OK|MB_ICONINFORMATION);
}


void recupNomFichierDragDrop(HDROP* leDrop,   char** listeResult)
{
        HDROP hDropInfo=*leDrop;
        int nb,taille,i;
        taille=0;
        nb=0;
        nb=DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0 );
        if(nb==0)
            PB1("un appel inutil à la fonction BVisuel::recupNomFichierDragDrop");
        char fic[500];
        for( i = 0; i < nb; i++ )
        {
                taille=DragQueryFile(hDropInfo, i, NULL, 0 )+1;
                DragQueryFile(hDropInfo, i, fic, taille );
                    strcat(*listeResult,"\n");
                    strcat(*listeResult,fic);
                 }
        DragFinish(hDropInfo);  //vidage de la mem...
        *leDrop=hDropInfo;  //TOCHECK : transmistion de param...
}


int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
    HWND hwnd;
    MSG messages;
    WNDCLASSEX wincl;

    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;
    wincl.style = CS_DBLCLKS;
    wincl.cbSize = sizeof (WNDCLASSEX);

    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;
    wincl.cbClsExtra = 0;  
    wincl.cbWndExtra = 0;  
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
    if (!RegisterClassEx (&wincl))
        return 0;
        
    hwnd = CreateWindowEx (
           WS_EX_ACCEPTFILES,szClassName,"Windows App",WS_OVERLAPPEDWINDOW,
           CW_USEDEFAULT,CW_USEDEFAULT,544,375,HWND_DESKTOP,NULL,
           hThisInstance,NULL);

    ShowWindow (hwnd, nFunsterStil);

    while (GetMessage (&messages, NULL, 0, 0))
    {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }

    return messages.wParam;
}


LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
        case WM_DROPFILES:
        MessageBox(hwnd,"Vous avez glissé un ou plusiers fichier(s) !!!","Info",MB_OK|MB_ICONINFORMATION);
       OnDropFiles((HDROP) wParam);
         break;
        case WM_DESTROY:
            PostQuitMessage (0);
            break;
        default:
          return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}

Commentaire de victorcoasne le 28/09/2004 18:09:31

Voici une version 100% compatible Dev-C++ que j'ai corrigé :
#include <windows.h>

LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

char szClassName[ ] = "WindowsApp";


void recupNomFichierDragDrop(HDROP* leDrop,   char* listeResult)
{
        HDROP hDropInfo=*leDrop;
        int nb,taille,i;
        taille=0;
        nb=0;
        nb=DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0 );
        /*if(nb==0)
            PB1("un appel inutil à la fonction BVisuel::recupNomFichierDragDrop");*/
        char fic[500];
        for( i = 0; i < nb; i++ )
        {
                taille=DragQueryFile(hDropInfo, i, NULL, 0 )+1;
                DragQueryFile(hDropInfo, i, fic, taille );
                    strcat(listeResult,"\n");
                    strcat(listeResult,fic);
                 }
        DragFinish(hDropInfo);  //vidage de la mem...
        *leDrop=hDropInfo;  //TOCHECK : transmistion de param...
}

void OnDropFiles(HDROP hDropInfo)
{
        char listeFicSrces[5000];
        recupNomFichierDragDrop(&hDropInfo, listeFicSrces);
MessageBox(NULL,listeFicSrces,"Liste :",MB_OK|MB_ICONINFORMATION);
}



int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
    HWND hwnd;
    MSG messages;
    WNDCLASSEX wincl;

    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;
    wincl.style = CS_DBLCLKS;
    wincl.cbSize = sizeof (WNDCLASSEX);

    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;
    wincl.cbClsExtra = 0;  
    wincl.cbWndExtra = 0;  
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
    if (!RegisterClassEx (&wincl))
        return 0;
        
    hwnd = CreateWindowEx (
           WS_EX_ACCEPTFILES,szClassName,"Drop Files",WS_OVERLAPPEDWINDOW,
           CW_USEDEFAULT,CW_USEDEFAULT,544,375,HWND_DESKTOP,NULL,
           hThisInstance,NULL);

    ShowWindow (hwnd, nFunsterStil);

    while (GetMessage (&messages, NULL, 0, 0))
    {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }

    return messages.wParam;
}


LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
        case WM_DROPFILES:
        OnDropFiles((HDROP) wParam);
         break;
        case WM_DESTROY:
            PostQuitMessage (0);
            break;
        default:
          return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

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,030 sec (4)

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