fredsor
Messages postés198Date d'inscriptionlundi 24 avril 2006StatutMembreDernière intervention 3 avril 2008
-
28 mai 2007 à 08:47
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 2014
-
31 mai 2007 à 00:27
Bonjour a vous
Dans mon projet, je dois créer différents composant visuel pour Pocket PC : libellé, editbox,bouton et listbox (la aussi pa le choix)
- Comment peut-on donner le focus a un editbox par exemple (j'entends par là curseur dessus bien sur ^^)? De plus, j'ai insérer par exemple comme ceci la fonction TABSTOP, mais celle ci ne fonctionne pas lorsque je clique sur un editbox et que je veux passer au composant suivant :
hBtn = CreateWindowEx(0,TEXT("EDIT"),...,WS_VISIBLE | WS_BORDER | WS_CHILD | WS_TABSTOP,...);
- J'aimerais pouvoir mettre une couleur de fond aux editbox, ou a certaines lignes de listbox? Comment faire? En C cela parait bien compliqué?
- Enfin, le fait d'utiliser des listbox miterdit-il d'avoir un entete pour la liste?? ( en effet pour afficher sous forme de tableaux dans ma listbox, je marrange pour aligner les différentes valeurs, mais celle-ci n'ont pas d'entete pour l'instant... :S )
Les recherches que j'ai faites n'ont pas abouties, les résultats m'étant pour la plupart donnés en C++...(SetFocus(),...)
Je rappelle que mon projet est en C, ( et sans MFC comme vous l'avez peut etre constaté)...
Merci a vous si vous avez des idées, je bloque vraiment... Une reponse meme pour une seule question me débloquera toujours un peu ;)
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 28 mai 2007 à 15:58
Salut,
Je n'ai jamais codé pour Pocket PC mais, malgré ses spécificités, je pense qu'il dispose des mêmes fonctionnalités graphiques standard de Windows.
- Pour donner le focus à controle,on utilise SetFocus(). C'est une API utilisable avec n'importe quel langage ( C C++ ou autres).
- Avec le style WS_TABSTOP on peut passer d'un controle à l'autre avec la touche de tabulation et ce quel que soit le type de controle. Il suffit qu'il ait le style WS_TABSTOP.
- Pour changer la couleur de fond d'un Edit, on traite le message WM_CTLCOLOREDIT et retourner un HBRUSH de la couleur voulue. Voici un exemple:
http://www.cppfrance.com/code.aspx?ID=27889 Tout cela est faisable en C bien sûr.
- Pour la question sur les en-têtes des listbox, j'ai pas compris ce que tu veux faire exactement.
fredsor
Messages postés198Date d'inscriptionlundi 24 avril 2006StatutMembreDernière intervention 3 avril 2008 29 mai 2007 à 08:34
Merci beaucoup je regarde ca dans la matinée.
Pour le SetFocus, alors je dois mal l'utiliser ( je fais un identifiantEditBox.SetFocus()...)
et j'ai bien mis le WS_TABSTOP mais je vais vérifer ça.
En fait pour les entete de listbox : on ne peut pas mettre plusieurs colonnes dans une ListBox, genre tableau.
Donc pour cela, on fait un systeme de tabulations entre chaque parametre affiché pour les metre sous forme de colonne... Donc j'aurais aimé savoir si j pouvais faire de meme pour mettre des entete a ma ListBox, comme on le ferais pour un CListCtrl en C++ par exemple...
Merci encore pour ta réponse, et je reviens en cas de souci ;-)
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 29 mai 2007 à 22:54
On passe le HWND du controle comme paramètre à la fonctions SetFocus():
SetFocus(hwndcontrole);
Pour créer une Lisbox multicolonne en lui appliquant le style LBS_MULTICOLUMN. Je ne pense pas qu'il est possible de lui mettre un en-tête en interne mais tu peux ajouter des controles juste en dessus jouant le rôle d'en-tête. Il est donc préférable d'utiliser une ListView qui est prévue pour ça.
fredsor
Messages postés198Date d'inscriptionlundi 24 avril 2006StatutMembreDernière intervention 3 avril 2008 30 mai 2007 à 08:37
Salut,
Pour le SetFocus ca marche pour mes EditBox, pas pour mes boutons, j'ai peut etre une subtilité trouver...
Quant au WS_TABSTOP, je l'ai mis sur tous les composants, et si je clique sur un Edit par exemple et que je fais Tab, rien de réagit?!
QUant à la listbox mutlicolonne, ta réponse LBS_MULTICOLUMN pas exacte ;-).
En fait LBS_MUTLICOLUMN permet seulement de mettre une meme colonne sur deux si celle ci est trop longue pour ta table par exemple. Mais je vais regarder de plus pret pour simuler des entete comme tu me le suggere ( peut etre des boutons en mode disable en face de mes colonnes, a voir...)
Si une idée te vient pour le WS_TABSTOP et mes focus de bouton, je suis tout ouïe ;-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 31 mai 2007 à 00:27
Ma réponse sur LBS_MULTICOLUMN est exacte mais apparemment elle ne corerspond pas à ce que tu veux faire. Je pense que dans ton cas une ListView est indispensable.
Avec la boucle des messages que tu as mentionnée, normalement tout devrait fonctionner si ta fenêtre est une vraie fenêtre mère contenant des controles ayant le style WS_TABSTOP.
Je crois plûtot que tu as une boite de dialogue. J'attends ta confirmation pour te donner la solution.