begin process at 2012 05 30 19:58:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

GUI

 > 

WIN32 Edit box avec le style ES_NUMBER


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

WIN32 Edit box avec le style ES_NUMBER

mardi 6 janvier 2009 à 11:50:51 | WIN32 Edit box avec le style ES_NUMBER

Pistol_Pete

Bonjour à tous,

J'ai un Edit box qui possède le style ES_NUMBER.
J'aimerai, lorsque j'entre des chiffres, qu'il m'affiche un espace symbolisant  les milliers et les millions.
Par exemple je tape 1000000, j'aimerai avoir 1 000 000
Existe t'il un moyen de faire cela?

A+

________________________________________________________________________________
Mon site internet :
   [ Lien ]

mardi 6 janvier 2009 à 17:44:24 | Re : WIN32 Edit box avec le style ES_NUMBER

ed73

Bonjour,

La solution est de dériver une classe de CEdit que tu vas associer à ton contrôle. Dans cette classe, tu interceptes le message OnKeyDown et tu formattes ton texte comme tu veux avant de l'afficher dans le contrôle.

Il existe pas mal de classes pour ça, tu devrais en trouver une.

ed73
mardi 6 janvier 2009 à 20:45:00 | Re : WIN32 Edit box avec le style ES_NUMBER

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !

J'ai fait un petit truc à la va vite, semble aller.
Me suis contenté de l'event killfocus, tu adapteras.

Une dialog avec 2 EDIT en ES_NUMBER :

WNDPROC OldProcEdNum;

void FrmtEditNbr(HWND hed)
{
  char buf[20], res[20], *c, *d, a;
  DWORD len;
  len = GetWindowText(hed, buf, 19);
  if(0 >= (long) len) return;
  c = buf;
  d = buf;
  while(a = *c) {
    c++;
    if(a != 32) *d++ = a;
  }
  *d = 0;
  len = d - buf;
  c = buf;
  d = res;
  if(len < 4) {
    while(*d = *c) {c++; d++;}
    goto dispRES;
  }
  len %= 3;
  if(len) {
    do {
      *d++ = *c++;
    } while(--len);
    *d++ = 32;
  }
  while(*d++ = *c++) {
    if(++len == 3) {
      *d++ = 32;
      len = 0;
    }
  }
  *(d - 2) = 0;
dispRES: SetWindowText(hed, res);
}

LRESULT CALLBACK EdProcNbr(HWND hwnd, UINT mssg, WPARAM wParam, LPARAM lParam)
{
  if(mssg == WM_PASTE) return 0;
  if(mssg == WM_KILLFOCUS) FrmtEditNbr(hwnd);
  return CallWindowProc(OldProcEdNum, hwnd, mssg, wParam, lParam);
}

void onInitDlg(HWND hdlg)
{
  HWND hctrl;
  SetClassLongPtr(hdlg, GCLP_HICON, (long)LoadIcon(0, IDI_APPLICATION));
  hctrl = GetDlgItem(hdlg, IDED_NBR1);
  SendMessage(hctrl, EM_LIMITTEXT, 13, 0);
  OldProcEdNum = (WNDPROC) SetWindowLong(hctrl, GWL_WNDPROC, (long) EdProcNbr);
  hctrl = GetDlgItem(hdlg, IDED_NBR2);
  SendMessage(hctrl, EM_LIMITTEXT, 13, 0);
  SetWindowLong(hctrl, GWL_WNDPROC, (long) EdProcNbr);
}


ciao...
BruNews, MVP VC++

mercredi 7 janvier 2009 à 09:31:33 | Re : WIN32 Edit box avec le style ES_NUMBER

Pistol_Pete

Merci beaucoup BruNews! C'est exactement ce que je cherchais.

Merci aussi ed73 pour avoir pris le temps de me répondre.

A+

________________________________________________________________________________
Mon site internet :
   [ Lien ]

samedi 10 janvier 2009 à 17:54:29 | Re : WIN32 Edit box avec le style ES_NUMBER

Pistol_Pete

Bonjour

J'ai une seconde petite question concernant les EDIT_BOX. J'aimerai que lorsque le contrôle gagne le focus, tout le texte soit sélectionné et mis en highlight.
J'ai fait cela:

LRESULT CALLBACK EdProcNbr(HWND hwnd, UINT mssg, WPARAM wParam, LPARAM lParam)
{
  if(mssg == WM_PASTE) return 0;
  if(mssg == WM_KILLFOCUS) FrmtEditNbr(hwnd);
  if(mssg == WM_SETFOCUS) SendMessage(hwnd, EM_SETSEL, 0, -1); 
 
  return CallWindowProc(OldProcEdNum, hwnd, mssg, wParam, lParam);
}


Le texte est bien sélectionné mais il n'y a pas de highlight à l'affichage. Connaissez vous un moyen de le faire?
A+

_________________________________________________________________________
Mon site internet :
[ Lien ] 
[ Lien ]



Cette discussion est classée dans : style, box, edit, number, win32


Répondre à ce message

Sujets en rapport avec ce message

affichier un int dans une edit box (win32) [ par maevasa ] tout est dans le titre! Je galères j'ai essayé tout ce que j'ai pu trouver mais ça ne marche pas!int i=12;SendDlgItemMessage(hdlg, IDC_COUNT, WM_SETTE Petit pb avec une edit box [win32] [ par dulac02 ] Salut à tous,j'ai un little pb pour "activer" mon edit box : j'amerais avoir avoir le curseur qui clignote dessus.Comment faire ?Merci d'avance PB Edit Box [ par anaxode ] Je sais qu'il y a eu beaucoup de question mais j'ai pas trouvé mon bonheur dans les reponces.J'ai mis 2 Edit box , dans une je rentre en generale des edit box 3D [ par pmolina ] j aimerai ajouter l effet de profondeur 3d a mes edit box. normalement celui -ci est actif par defaut mais dans mon cas les miennes sont planes.typiqu Edit-box limité [ par victorcoasne ] Comment limiter le nbre de caractères dans un édit-Box (sans le rétrécir)merciVous voulez des RPG gratuits allez sur http://jeux.jscv.com !!!Le créate Selectioner le contenu d'un Edit-Box [ par victorcoasne ] Coment sélectionner le contenu d'un Edit-BoxLe créateur du site http://www.jscv.com modifier la couleur de font d'un edit box [ par imanewin32 ] j'ai besoin d'une fonction pour modifier la couleur de font d'un edit box dans une application MFC, car en le rendant enable tout devient gris et la [WIN32]Histoires de couleurs... [ par Jeffray ] Bonjour,Je créé 2 edit à l'aide de CreateWindowEx() en readonly (style ES_READONLY).Jusqu'à maintenant, la couleur de fond de ces 2 edit était grise.M comment modifier un style de controle [ par LaPatoshe ] Bonjour, je osuhaite en utilisant uniquement les API en C++ modifier l'apparence d'un controle Edit en cours d'éxécution de mon programme. Je souhaite [Visual C++]Effacer un edit box [ par goutbouyo ] Salut,Je rentre une valeur dans une edit box et quand je clique sur ajouter elle s'ajoute à une liste.Mais ensuite si je veu rentrer une autre valeur


Nos sponsors


Sondage...

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 : 0,452 sec (3)

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