GLISSER DES FICHIERS SUR VOTRE APPLI [WIN32] [UTILISATION WIN32 OU MFC EXPLICITÉ
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011
-
31 août 2004 à 10:41
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 2023
-
28 sept. 2004 à 18:09
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011 2 sept. 2004 à 14:56
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>
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 2 sept. 2004 à 10:09
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
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011 1 sept. 2004 à 23:00
/// ----- 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é
+
++
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 1 sept. 2004 à 22:41
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
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011 1 sept. 2004 à 22:37
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...
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 1 sept. 2004 à 22:17
LoOl,
Mais tu t'entend parler ou quoi ?
Tu serais pas un peu a l'Ouest par hasard ?
Shell
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011 1 sept. 2004 à 17:40
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...
++
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011 31 août 2004 à 21:02
lol tu te converti toi aussi ds le commercial?
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 31 août 2004 à 20:48
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!
28 sept. 2004 à 18:09
#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;
}
2 sept. 2004 à 14:56
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;
}
2 sept. 2004 à 10:43
2 sept. 2004 à 10:42
2 sept. 2004 à 10:41
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());
}
2 sept. 2004 à 10:23
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 //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.
2 sept. 2004 à 10:09
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
1 sept. 2004 à 23:00
/// ----- 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é
+
++
1 sept. 2004 à 22:41
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
1 sept. 2004 à 22:37
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...
1 sept. 2004 à 22:17
Mais tu t'entend parler ou quoi ?
Tu serais pas un peu a l'Ouest par hasard ?
Shell
1 sept. 2004 à 17:40
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...
++
31 août 2004 à 21:02
31 août 2004 à 20:48
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
31 août 2004 à 10:49
31 août 2004 à 10:49
J'ai l'imprésion que cette source est faite pour moi mais j'en suis pas sûr !!
31 août 2004 à 10:41
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);