Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3427 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5  6  7
Auteur Sujet :

[C / C++] le topic des bras cassés de la progue windows

n°1272857
neg'gwada
rafix 971
Posté le 24-12-2005 à 12:41:34  profilanswer
 

Reprise du message précédent :
salut all  :hello: en ce moment je dois me frotter aux API win32 pour mon logiciel winsplit.net, et je cherche une valeur pour rentrer dans mon appel de setwindowlong ou setwindowlongptr

Code :
  1. [DllImport("user32.dll" )]
  2.     public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);


la valeur de nindex est -16 (je crois) et je chercher la valeur de dwNewLong pour imposer à la fenetre d'etre en restauré. j'ai fait un test sur plusieur fenetres en faisant un getwindowlong lorsqu'elles sont en restauré et j'obtenais 382664704 alors avec ca ca marche mais je ne sais pas si c'est une bonne methode :/ sinon est ce qu'il y a un site qui donnerait les differentes valeurs à rentrer dans les pinvok? merci d'avance :jap:


---------------
--- WinSplit Revolution ---
mood
Publicité
Posté le 24-12-2005 à 12:41:34  profilanswer
 

n°1272887
Mackila
Posté le 24-12-2005 à 14:10:25  profilanswer
 

Ca peut etre sympa ton programme. Tu pourrais pas faire un truc pour qu'on puisse décider de la taille et de la position qu'auront systematiquement les fenetres avec un titre donné ?

n°1272896
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-12-2005 à 14:34:19  profilanswer
 

neg >> -16 pour nIndex n'est pas une valeur parlante. tu pourrais donner le symbole que tu as mis ? (GWL_WNDPROC, etc...)
http://msdn.microsoft.com/library/ [...] owlong.asp
 
pour le pInvoke, c'est clair que c'est un casse tete merdique. dans mon plugin, je me suis bien fait chier, car vu que l'API de Winamp est en C, je te laisse imaginer le bordel... y'a plein de code unsafe dedans.
 
ce site est excellent, et m'a tiré de la merde plus d'une fois :  
http://www.pinvoke.net/

Message cité 1 fois
Message édité par Harkonnen le 24-12-2005 à 14:34:32

---------------
J'ai un string dans l'array (Paris Hilton)
n°1273021
neg'gwada
rafix 971
Posté le 24-12-2005 à 19:30:47  profilanswer
 

Mackila a écrit :

Ca peut etre sympa ton programme. Tu pourrais pas faire un truc pour qu'on puisse décider de la taille et de la position qu'auront systematiquement les fenetres avec un titre donné ?

ca peut etre une idée très intéressante mais je ne fais les améliorations que si c'est "fortement" demandé et de préférence sur ce topic. Je sens que je vais devoir creer un topic dédié à mon programme  [:dao]  
 
EDIT: je vais creer un topic unique la semaine prochaine sur ce prog car il y a plusieurs personnes qui souhaitent des améliorations... tu posteras ta question dessus ;)
 

Harkonnen a écrit :


ce site est excellent, et m'a tiré de la merde plus d'une fois :  
http://www.pinvoke.net/

mouais j'connaissais, tres tres tres pratique comme site  [:chapi-chapo]
 
EDIt: le -16 c'est GWL_STYLE


Message édité par neg'gwada le 24-12-2005 à 19:42:11

---------------
--- WinSplit Revolution ---
n°1273036
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-12-2005 à 23:02:42  profilanswer
 

quand tu dis que tu veux que la fenêtre soit en état restauré, tu veux dire que la fenêtre doit être dans l'état dans lequel elle était avant que ton soft ne la réduise, ou en état maximisé ?
dans ce dernier cas, tu donnes la valeur WS_MAXIMIZE à ton paramètre dwNewLong


---------------
J'ai un string dans l'array (Paris Hilton)
n°1273091
neg'gwada
rafix 971
Posté le 25-12-2005 à 05:37:18  profilanswer
 

nan, lorsque la fenetre est maximisée c'est comme ca http://reptils.free.fr/forumhardware/images/agrandi.JPG
 
ce que je veux imposer à la fenetre lors du déplacement, c'est d'etre http://reptils.free.fr/forumhardware/images/restaure.JPG


---------------
--- WinSplit Revolution ---
n°1276731
chrisbk
-
Posté le 04-01-2006 à 10:40:02  profilanswer
 

neg > j'ai pas tout pigé ta question
 
oups j'avais pas vu qu'yavait encore une page, dsl
 
 
Sinon y'a des experts couillus qui ont deja joué avec les shell namespace extension ?


Message édité par chrisbk le 04-01-2006 à 10:40:28
n°1276860
chrisbk
-
Posté le 04-01-2006 à 14:26:25  profilanswer
 

evidemment pour faire des ihm bidons en html, la il y a du monde, mais pour les vrais trucs compliqués la il n'y a plus PERSONNE
 

n°1283471
Inekman
Posté le 14-01-2006 à 03:13:10  profilanswer
 

chrisbk a écrit :

bin regarde le titre du topic [:el g]
 
nan mais si vous avez besoin d'aide pour subclasser une listbox, chu la [:petrus75]


Je crois que j'ai besoin de ton aide alors :)  
 
Je cherche déseprérément à changer les couleurs des items d'une listbox (blanc sur fond rouge par exemple). J'ai trouvé pêle-mêle des API que je dois farfouiller, à savoir WM_DRAWITEM voir WM_MEASUREITEM, des structures DRAWITEMSTRUCT et autres. Par contre je ne trouve pas d'exemples --> simples <-- qui m'expliquent clairement comment la farfouillation doit être menée :D  
 
Si tu peux m'apporter tes lumières à ce sujet, je serai ravi. :jap:  
 
Meilleurs voeux à tous au passage.


Message édité par Inekman le 14-01-2006 à 03:14:22
n°1283477
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-01-2006 à 03:41:54  profilanswer
 

faut utiliser un ListBox en Owner Draw. c'est le seul moyen de customiser l'apparence d'un controle. ça fait effectivement intervenir les messages WM_MEASUREITEM et autres.
si tu fais du win32, tu dois avoir le platform SDK. regarde donc l'article de l'aide du SDK suivant :
ms-help://MS.PSDKSVR2003SP1.1033/shellcc/platform/commctls/listboxes/usinglistboxes.htm
 
(adresse à saisir dans l'explorateur de l'aide du dernier platform SDK)


---------------
J'ai un string dans l'array (Paris Hilton)
mood
Publicité
Posté le 14-01-2006 à 03:41:54  profilanswer
 

n°1283533
slash33
Posté le 14-01-2006 à 11:55:19  profilanswer
 

neg'gwada a écrit :

nan, lorsque la fenetre est maximisée c'est comme ca http://reptils.free.fr/forumhardwa [...] grandi.JPG
 
ce que je veux imposer à la fenetre lors du déplacement, c'est d'etre http://reptils.free.fr/forumhardwa [...] staure.JPG


Et en interceptant WM_GETMINMAXINFO ça ne peut pas marcher ?
 
Sinon il y a la fonction SetWindowPlacement()
 
... enfin bon, je dis ça de tête.


Message édité par slash33 le 14-01-2006 à 12:00:32
n°1283538
slash33
Posté le 14-01-2006 à 12:07:28  profilanswer
 

Harkonnen a écrit :

faut utiliser un ListBox en Owner Draw. c'est le seul moyen de customiser l'apparence d'un controle. ça fait effectivement intervenir les messages WM_MEASUREITEM et autres.
si tu fais du win32, tu dois avoir le platform SDK. regarde donc l'article de l'aide du SDK suivant :
ms-help://MS.PSDKSVR2003SP1.1033/shellcc/platform/commctls/listboxes/usinglistboxes.htm
 
(adresse à saisir dans l'explorateur de l'aide du dernier platform SDK)


Un contrôle liste spécialisé customisable à mort : http://codeproject.com/listctrl/xlistctrl.asp
 
C'est du MFC, mais la solution emploie en fait des événements particuliers. Il faut regarder le code mais c'est assez puissant et on n'a pas a se retapper le Owner draw complet... ah voici pour les détails techniques : http://codeproject.com/listctrl/lvcustomdraw.asp


Message édité par slash33 le 14-01-2006 à 12:09:46
n°1283584
Inekman
Posté le 14-01-2006 à 15:12:37  profilanswer
 

Harkonnen a écrit :

faut utiliser un ListBox en Owner Draw. c'est le seul moyen de customiser l'apparence d'un controle. ça fait effectivement intervenir les messages WM_MEASUREITEM et autres.
si tu fais du win32, tu dois avoir le platform SDK. regarde donc l'article de l'aide du SDK suivant :
ms-help://MS.PSDKSVR2003SP1.1033/shellcc/platform/commctls/listboxes/usinglistboxes.htm
 
(adresse à saisir dans l'explorateur de l'aide du dernier platform SDK)


Merci pour tes indications Harko, je fais effectivement du Win32 pour un projet dans le cadre des études.  
 
On est sensé le faire en mode console mais je me suis lancé dans le GUItage du projet car c'est un défi personnel : je fais enfin du Win32 en C.  :)  
 
Par contre tu parles de SDK et autres, je ne sais quoi te répondre si ce n'est que je code avec MINGW Developer Studio, un IDE que j'ai essayé et adopté parmi les quelques autres que j'ai essayé. :wahoo:  
 
Donc le SDK me permettrait de faire/apprendre quoi précisément ? :jap:  
 
En tout cas merci pour ta participation car j'ai l'habitude de te lire sur ce forum et ça fou limite les boules quand tu t'y mets ^^ (sur un débutant :ange:)
 
:hello:
 
Edit : J'ai trouvé ceci :

Microsoft® Windows® Software Development Kit (SDK) for the December 2005 Community Technology Preview :
 
The Windows SDK contains pre-release documentation, samples, and tools designed to help you develop Windows applications and libraries using both Win32 and WinFX technologies in Windows Vista.
 
Version: 6.0.5270.0.9.151
Date Published: 12/14/2005
Language: English
Download Size: 67 KB - 1075.7 MB*
*Download size depends on selected download components.


 
1 Go tout de même la bête, j'espère que ça sera moins gros en retirant quelques "download components" ^^

Message cité 1 fois
Message édité par Inekman le 14-01-2006 à 15:17:07
n°1283795
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-01-2006 à 23:41:00  profilanswer
 

Inekman a écrit :


En tout cas merci pour ta participation car j'ai l'habitude de te lire sur ce forum et ça fou limite les boules quand tu t'y mets ^^ (sur un débutant :ange:)


merci merci ! mais je te rassure, c'est pas évident pour un cador comme moi de se mettre au niveau des newbies, pas évident du tout [:kbchris]
 
bon, blague à part. le platform SDK est l'ensemble des fichiers, librairies et documentation nécessaire à la programmation sous Windows. c'est la référence incontournable.
 
en ce qui concerne ton problème, je t'ai pondu à l'arrache une procédure de fenêtre contenant un listbox en owner draw. c'est codé à l'arrache, y'a quelques manques (le cadre de sélection ne s'efface pas quand on sélectionne un autre élément), mais le principe est là. si tu arrives à le comprendre, tu pourras sans problème compléter ce code et l'adapter à tes besoins.
j'ai essayé d'être le plus clair possible dans mes commentaires
 

Code :
  1. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  2. {
  3.     PAINTSTRUCT ps;
  4.     HWND hwndLB;
  5.     LPMEASUREITEMSTRUCT lpmis;
  6.     LPDRAWITEMSTRUCT lpdis;
  7.     TEXTMETRIC tm;
  8.     HBRUSH brush;
  9.     COLORREF oldcolors[3];
  10.     TCHAR buffer[50] = {0};
  11.     HRESULT hr;
  12.     size_t pcch;
  13.     int y;
  14.     
  15.     char *items[] = {"kikoo", "lol", "asv"}; // les items du listbox
  16.     COLORREF colors[] = {RGB(255,0,0), RGB(0,255,0), RGB(0,0,255)}; // chaque item a une couleur différente
  17.     
  18.     switch (message)
  19.     {
  20.     case WM_CREATE:
  21.         // à la création de la fenêtre, on créé le listbox et on lui attribue les items
  22.         // note le LBS_OWNERDRAWFIXED : on indique à Windows qu'on va prendre en charge tout le processus de dessin du listbox.
  23.         // ce sera donc à nous de le mettre à jour, d'afficher ses items dés que le besoin s'en fera sentir.
  24.         hwndLB = CreateWindowEx(WS_EX_CLIENTEDGE, "listbox", NULL, WS_CHILD|WS_VISIBLE|LBS_OWNERDRAWFIXED, 75,70,140,200,hWnd,NULL, hInst, NULL);
  25.         SendMessage(hwndLB, LB_ADDSTRING, 0, (LPARAM)items[0]);
  26.         SendMessage(hwndLB, LB_ADDSTRING, 0, (LPARAM)items[1]);
  27.         SendMessage(hwndLB, LB_ADDSTRING, 0, (LPARAM)items[2]);
  28.         break;
  29.     
  30.     case WM_MEASUREITEM:
  31.         // ce message est envoyé à la fenêtre principale par tous les controles en owner draw.
  32.         // en envoyant ce message, la listbox "demande" au programmeur de lui indiquer la taille en pixels de ses items
  33.         // car en owner draw, c'est au programmeur de s'occuper de ça.
  34.         lpmis = (LPMEASUREITEMSTRUCT) lParam;
  35.         lpmis->itemHeight = 20; // 20 pixels pour chaque item. je te laisse regarder la doc pour la structure LPMEASUREITEMSTRUCT
  36.         break;
  37.     
  38.     case WM_DRAWITEM:
  39.         // le message le plus important : c'est ici que tu vas dessiner le listbox.
  40.         // ce message est envoyé par le controle chaque fois qu'il a besoin d'être dessiné.
  41.         lpdis = (LPDRAWITEMSTRUCT) lParam;
  42.         brush = CreateSolidBrush(RGB(250,219,5)); // on créé une brosse jaune pour le rectangle de sélection
  43.             
  44.         if (lpdis->itemID == -1) // pour vérifier qu'un item doit être redessiné (-1 = pas d'item => on sort)
  45.             break;
  46.         
  47.         switch (lpdis->itemAction)
  48.         {
  49.         // ici, on effectue l'opération de dessin en fonction de l'action commise sur l'item.
  50.         // 2 actions sont traitées :
  51.         // - ODA_SELECT : l'item a été sélectionné en cliquant dessus avec la souris
  52.         // - ODA_DRAWENTIRE : le listbox entier a besoin d'être redessiné
  53.         // on effectue donc l'opération de dessin appropriée à chaque cas
  54.         case ODA_SELECT:
  55.         case ODA_DRAWENTIRE:
  56.             // c'est à nous de remplir le listbox avec ses 3 items.
  57.             // on doit donc écrire les 3 items les uns sous les autres.
  58.             // c'est à nous de calculer la taille des caractères, leur position, etc...
  59.             // on calcule donc la position verticale de chaque item en fonction de la taille de sa police
  60.             SendMessage(lpdis->hwndItem, LB_GETTEXT, lpdis->itemID, (LPARAM) buffer);
  61.             GetTextMetrics(lpdis->hDC, &tm);
  62.             y = (lpdis->rcItem.bottom + lpdis->rcItem.top - tm.tmHeight) / 2;
  63.             
  64.             // on calcule ensuite le nombre de caractères de l'item
  65.             hr = StringCchLength(items[lpdis->itemID], 50, &pcch);
  66.             if (FAILED(hr))
  67.             {
  68.                 MessageBox(hWnd, "Erreur", "Erreur", 0);
  69.                 return -1;
  70.             }
  71.             
  72.             // et enfin, on l'écrit dans le listbox via la fonction ExtTextOut.
  73.             // au passage, on modifie sa couleur
  74.             oldcolors[lpdis->itemID] = SetTextColor(lpdis->hDC, colors[lpdis->itemID]);
  75.             ExtTextOut(lpdis->hDC, 0, y, 0, NULL, items[lpdis->itemID], pcch, NULL);
  76.             SetTextColor(lpdis->hDC, oldcolors[lpdis->itemID]);
  77.             
  78.             if (lpdis->itemState & ODS_SELECTED)
  79.             {
  80.                 // si l'item a été sélectionné, on affiche un cadre jaune
  81.                 // partie à compléter : le cadre doit revenir au blanc si on sélectionne un nouvel item
  82.                 FillRect(lpdis->hDC, &lpdis->rcItem, brush);
  83.                 DeleteObject(brush);
  84.             }
  85.             break;
  86.         case ODA_FOCUS:
  87.             break;
  88.         }
  89.     
  90.     case WM_COMMAND:
  91.         break;
  92.     
  93.     case WM_DESTROY:
  94.         PostQuitMessage(0);
  95.         break;
  96.     
  97.     default:
  98.         return DefWindowProc(hWnd, message, wParam, lParam);
  99.     }
  100.     return 0;
  101. }


---------------
J'ai un string dans l'array (Paris Hilton)
n°1283806
chrisbk
-
Posté le 15-01-2006 à 00:10:45  profilanswer
 

(et faut mettre la LB en owner draw variable, pas fixed)
 
si t'as tjs des pb je dois avoir du code mais cui d'harko a pas l'air mal

n°1283814
Inekman
Posté le 15-01-2006 à 00:17:10  profilanswer
 

Bonsoir les gars,
 
Alors j'ai pris ton code Harko, j'ai fait la modification que tu as dis chris concernant le OwnerDraw Fixed en Variable et voilà ce que ça donne chez moi sachant que je n'ai rien touché de plus dans le code.
 
http://a2sa2sin.free.fr/code_harko.gif
 
Donc il y a sans doute des choses à modifier concernant la désélection des items non sélectionné mais ce qui est bizarre c'est que le texte ne s'affiche pas.
 
Tout ce qui peut m'aider à comprendre le maniement de tout ça m'intéresse chris, n'hésite pas ;)


Message édité par Inekman le 15-01-2006 à 00:18:49
n°1283818
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-01-2006 à 00:18:46  profilanswer
 

chrisbk a écrit :

(et faut mettre la LB en owner draw variable, pas fixed)


bah, pas nécessairement :??:
vu que tous mes items contiennent du texte, dans une police identique, je vais pas me casser le cul à spécifier la taille pour chaque ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°1283825
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-01-2006 à 00:30:03  profilanswer
 

Inek >> la désélection qui ne marche pas c'est normal, je l'ai pas codée [:petrus75]
(il te suffit juste de faire un FillRect() dans la couleur d'arrière plan sur l'ancien item dés qu'un nouveau est sélectionné)
par contre, l'absence de texte n'est pas normale ! poste voir ton code ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°1283828
Inekman
Posté le 15-01-2006 à 00:43:03  profilanswer
 

Juste un truc avant quand même. Ma fenêtre est un boîte de dialogue chargée avec DialogBox.
 
A la création de la fenêtre tout est vide. Lorsqu'on lance une nouvelle partie, les zones de listes sont remplies à partir des éléments d'une liste chainées d'objet comportant chacun un champ "nom".
 
Donc par rapport à ton code, j'ai tout repris pile-poil sauf que j'ai retiré ce qui se trouve dans WM_CREATE. Le tableau d'item je l'ai viré aussi car pas besoin dans mon cas. J'ai une fonction "afficher" qui se charge de vider les zones de liste une à une et de remettre à jour l'affichage des zones de liste en fonction du contenu des listes chainées.

n°1283830
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-01-2006 à 00:57:05  profilanswer
 

et tu affiches bien ton texte avec ExtTextOut() ?
fais gaffe aussi à la couleur du texte (SetTextColor). montre voir cette partie du code


---------------
J'ai un string dans l'array (Paris Hilton)
n°1283834
Inekman
Posté le 15-01-2006 à 01:13:01  profilanswer
 

Voilà un extrait du code de la fonction "afficher" qui se charge d'insérer les éléments dans la zone de liste. C'est le code que j'ai et qui marche lorsque la listbox est "normale". En ownerdraw par défaut tout est blanc et avec ton code Harko, que j'ai placé dans la fonction de rappel, et bien j'ai le résultat que tu as dans le screenshot.
 
Plutôt que de filer le code éparpillé comme ça sans contexte, je veux bien te zipper ça et te l'envoyer en MP pour que tu jettes un oeil (si t'as quelques minutes devant toi).
 

Code :
  1. // tant qu'il y a des cartes sur la pile, on boucle
  2. while(elt != NULL){
  3. // si la carte a l'attribut visible à VRAI (<> 0)
  4. if (elt->visible) {
  5.  // on récupère la couleur en texte  
  6.  getCouleur(elt->carte.couleur, co);
  7.  // on écrit dans la variable "ligne"
  8.  // la ligne telle qu'elle sera affichée dans la zdl
  9.  // [Nom de la carte] de [couleur]
  10.  sprintf(ligne, "%s de %s", elt->carte.nom, co);
  11.  // on envoi le message LB_INSERTSTRING à la zone de liste
  12.  // avec les paramètres :  - (WPARAM)0 : pour insérer la ligne en haut de la zdl
  13.  //       - (LPARAM)ligne : contenant le texte à afficher dans la zdl
  14.  SendMessage(hlstbox[i], LB_INSERTSTRING, (WPARAM)0, (LPARAM)ligne);
  15. }
  16. else
  17. {
  18.  // si la carte est invisible
  19.  // alors on met des étoiles
  20.  sprintf(ligne, "***************" );
  21.  // on envoi le message pour ajouter la ligne à la zone de liste
  22.  SendMessage(hlstbox[i], LB_INSERTSTRING, (WPARAM)0, (LPARAM)ligne);
  23. }
  24. nb++;
  25. // on passe à l'élément suivant de la pile
  26. elt = elt->suivante;
  27. }


Ah oui, j'ai ça aussi :

C:\MinGWStudio\projects\Spider\win32\main.c:240: undefined reference to `StringCchLength'


edit : génial ton plugin ^^

Message cité 1 fois
Message édité par Inekman le 15-01-2006 à 01:22:40
n°1283842
Inekman
Posté le 15-01-2006 à 02:19:12  profilanswer
 

En fait je me demandais un truc, dans ma fonction "afficher", je pourrai envoyé la couleur de la carte en faisant un LB_SETITEMDATA et en fonction du itemData, je pourrai savoir quelle couleur de fond et de texte je dois appliquer à mon item ^^ Si l'idée est bonne, à pu qu'à savoir faire ça proprement :)

n°1284252
Inekman
Posté le 16-01-2006 à 00:25:08  profilanswer
 

Harkonnen a écrit :

faut utiliser un ListBox en Owner Draw. c'est le seul moyen de customiser l'apparence d'un controle. ça fait effectivement intervenir les messages WM_MEASUREITEM et autres.
si tu fais du win32, tu dois avoir le platform SDK. regarde donc l'article de l'aide du SDK suivant :
ms-help://MS.PSDKSVR2003SP1.1033/shellcc/platform/commctls/listboxes/usinglistboxes.htm
 
(adresse à saisir dans l'explorateur de l'aide du dernier platform SDK)


C'est bon j'ai récupéré le SDK et j'ai consulté le lien que tu as donné. Ca explique pas mal de chose, notamment comment faire (en partie) ce dont j'ai besoin. Je vais essayé de me démerder avec.
 
Merci ;)

n°1284280
chrisbk
-
Posté le 16-01-2006 à 08:39:30  profilanswer
 

Harkonnen a écrit :

bah, pas nécessairement :??:
vu que tous mes items contiennent du texte, dans une police identique, je vais pas me casser le cul à spécifier la taille pour chaque ?


 
oh bah jsais pas pkoi jcrois qu'il voulait du variable [:pingouino]

n°1284299
neg'gwada
rafix 971
Posté le 16-01-2006 à 09:38:00  profilanswer
 

bon j'ai fini par trouver la fonction dans user32.dll qui  m'interessait, c'est showwindows(intptr hwnd,int val)


---------------
--- WinSplit Revolution ---
n°1284650
red factio​n
Posté le 16-01-2006 à 15:34:40  profilanswer
 

genial les sprintf en Win32 [:dawa]

n°1284682
Inekman
Posté le 16-01-2006 à 15:50:59  profilanswer
 

Si c'est de mon code dont tu parles, j'ai pas trouvé d'autres moyen de faire ce que j'ai fait ^^ Etant débutant, j'ai utilisé ce qu'on m'a appris.

n°1284714
red factio​n
Posté le 16-01-2006 à 16:23:21  profilanswer
 

jcroyais que cetait du code du plugin d Harko sorry

n°1284718
chrisbk
-
Posté le 16-01-2006 à 16:26:01  profilanswer
 

ménan, le plug d'harko y'a le loader en java, le code de surveillance de winamp en python, le traitement de l'info en c# et l'envoi au serveur en actionscript [:el g]

n°1284723
Inekman
Posté le 16-01-2006 à 16:30:47  profilanswer
 

au passage, spa bien les sprintf ?

n°1284724
chrisbk
-
Posté le 16-01-2006 à 16:32:10  profilanswer
 

c'est dangereux, tu risques souvent le dépassement de capacité, et/ou tu utilises trop de ram pour rien

n°1284731
Inekman
Posté le 16-01-2006 à 16:46:37  profilanswer
 

C'est quoi l'alternative ?

n°1284739
chrisbk
-
Posté le 16-01-2006 à 16:52:15  profilanswer
 

en C pur, y'en a pas des chiées [:el g]

n°1284889
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 16-01-2006 à 19:21:46  profilanswer
 

Inekman a écrit :


Plutôt que de filer le code éparpillé comme ça sans contexte, je veux bien te zipper ça et te l'envoyer en MP pour que tu jettes un oeil (si t'as quelques minutes devant toi).


vas y, envoie, chuis curieux de voir ça


---------------
J'ai un string dans l'array (Paris Hilton)
n°1284906
nraynaud
lol
Posté le 16-01-2006 à 19:38:56  profilanswer
 

http://www.stephanemercier.com/images/photos/bras_casses.jpg

n°1284916
Inekman
Posté le 16-01-2006 à 19:48:21  profilanswer
 

Harkonnen a écrit :

vas y, envoie, chuis curieux de voir ça


J'ai fait mon ptit bonhomme de chemin depuis que tu m'as aidé Harko. J'ai téléchargé le SDK, j'ai relu 15 mille fois les pages et j'ai trouvé comment faire ce que je voulais. :D  
 
Voilà le résultat : :sol:  
 
http://a2sa2sin.free.fr/ca_marche.gif
 
Donc un grand merci à toi Harko et chrisbk pour vos indications. :hello:
 
ps : par contre si tu peux me dire comment on fait pour créer une chaîne de caractère à partir de différents éléments, ça m'intéresse. Je connais strcat, mais ça m'affichait des caractères aléatoires à la première concaténation...ché pas stu vois de quoi je veux dire :D

Message cité 1 fois
Message édité par Inekman le 16-01-2006 à 19:50:38
n°1284920
red factio​n
Posté le 16-01-2006 à 19:54:45  profilanswer
 

si tu veux utiliser strcat faut dabord initialiser la chaine une premiere fois :)
 

Code :
  1. ex : strcpy(str,"" ); ou str[0]=NULL;

n°1284924
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 16-01-2006 à 20:03:26  profilanswer
 

Inekman a écrit :

J'ai fait mon ptit bonhomme de chemin depuis que tu m'as aidé Harko. J'ai téléchargé le SDK, j'ai relu 15 mille fois les pages et j'ai trouvé comment faire ce que je voulais. :D  


SDK roulaize, je connais pas une doc qui soit mieux foutue :o
 

Inekman a écrit :


Donc un grand merci à toi Harko et chrisbk pour vos indications. :hello:


faut dire que t'as touché le doublé gagnant avec lui et moi [:kbchris]
 
edit: quoique lui, il a posé bcp plus de questions dans ce topic qu'il a répondu  [:ezm]  
 

Inekman a écrit :


ps : par contre si tu peux me dire comment on fait pour créer une chaîne de caractère à partir de différents éléments, ça m'intéresse. Je connais strcat, mais ça m'affichait des caractères aléatoires à la première concaténation...ché pas stu vois de quoi je veux dire :D


non, jvois pas sque tu veux dire ! tu peux développer [:petrus dei]


Message édité par Harkonnen le 16-01-2006 à 20:07:19

---------------
J'ai un string dans l'array (Paris Hilton)
n°1284968
Inekman
Posté le 16-01-2006 à 20:47:32  profilanswer
 

Et bien je crois que Red Faction à répondu à ma question. :D  
 
Mais pour être sûr qu'il n'est pas non plus à côté de la plaque je redis tout ça. :)  
 
On me dit :  
 
"attention sprintf ça bouffe de la ram pour rien et ça kiffe les dépassements de capacité".  :non:  
 
Donc je me demande comment faire autrement ?  :??:  
 
Et je me suis proposé le strcat (sans savoir si c'est réellement mieux par rapport à sprintf dans la gestion de la ram et du dépassage de capacité) :sleep:.  
 
Sauf que au début, lorsque j'utilisais ça, et bien j'avais des caractères chelou dans ma variable au premier strcat-age, ce qui était plutôt chiant quand au contraire moi je souhaitais un texte simple et convivial  :cry:  
 
Or là Red Faction me dit de mettre à Null ma variable au début et de strcat-er autant d'éléments que j'ai par la suite, ce qui devrai à priori fonctionner. :D  
 
Donc finalement, je vous demande c'est quoi le mieux pour faire ce dont j'ai besoin ? A savoir, former une chaîne de caractères à partir du contenu de 2 ou 3 variables. :)


Message édité par Inekman le 16-01-2006 à 20:48:05
n°1284986
red factio​n
Posté le 16-01-2006 à 21:04:00  profilanswer
 

Bon deja qd je tennuyais avec le sprintf cetait juste par question de principe (parce quil existe un wsprintf qui fait exactement la mm chose et en Win32 en general on utilise ca)
 
(bon c de la brn*** je laccorde)
 
Mais ce qu'on dit les autres est vrai (sur le depasement de capacité)
Ex : tu fait un sprintf(str,"%s %s",name,pwd)  
et name et pwd sont fourni par l'utilisateur ben il faudra tjs que tu tassure que str soit suffisament grand :o

n°1284994
Inekman
Posté le 16-01-2006 à 21:07:24  profilanswer
 

Ah d'accord, si c'est que ça, y'a pas de danger chez moi alors car j'ai calculé la taille maximale que pouvait avoir une ligne, donc à priori ça devrait être bon.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  6  7

Aller à :
Ajouter une réponse
 

Sujets relatifs
sniffer sous windowscreer raccourci vers le bureau windows
Code de retour d'un batch windowsCompter le nombre de ligne dans un fichier texte sous Windows
utilisation du port parallele sous windows XPScript windows
Plantage sur une desallocation d'une structure sous Windows 2003Pb de free d'une variable en C sous Windows 2003 TS
Compilation de routines Fortran pour Unix sous windows[c] recevoir un flux multicast sous WINDOWS (avec visual C++)
Plus de sujets relatifs à : [C / C++] le topic des bras cassés de la progue windows


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)