begin process at 2010 02 10 11:36:33
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > MESSAGEBOX PERSONALISÉE (WIN32)

MESSAGEBOX PERSONALISÉE (WIN32)


 Information sur la source

Note :
Aucune note
Catégorie :Divers Classé sous :messagebox, boite, message Niveau :Débutant Date de création :23/11/2004 Date de mise à jour :25/11/2004 10:06:41 Vu / téléchargé :4 824 / 519

Auteur : vecchio56

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note


 Description

Permet d'afficher des MessageBox personnalisées sans avoir à utiliser des ressources DIALOG à chaque fois. On peut choisir plusieurs paramètres tels que l'icône, le nombre, le texte et l'alignement des boutons ou la police. Le projet est compatible UNICODE.



 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

23 novembre 2004 13:47:09 :
25 novembre 2004 10:06:42 :
Application des conseils de BruNews Suppression de la fonction NumberOfLines qui était inutile

 Sources du même auteur

Source avec Zip COLORATION DE CODE C/C++ POUR LE FORUM DE CPPFRANCE
Source avec Zip SUPPRIMER LES # AJOUTÉS LORS D'UN COPIER/COLLER
Source avec Zip Source avec une capture CRÉER UN FICHIER ISO À PARTIR D'UN RÉPERTOIRE (WIN32)
Source avec Zip Source avec une capture EXPLORATEUR DE FICHIERS ISO
Source avec Zip Source avec une capture CHARGER UNE POLICE DEPUIS UN FICHIER OU UNE RESSOURCE (WIN32...

 Sources de la même categorie

Source avec Zip CALLOCATOR par troctsch
Source avec Zip HEAPCOLLECTOR par troctsch
Source avec Zip GÉNÉRE UN TABLEAU DE CARACTÉRE AU FORMAT C CONTENANT LE BYTE... par kertimanoff
FRACTIONS EGYPTIENNES par lptm974
BITOPERATOR par FrancoisGauthier

 Sources en rapport avec celle ci

Source avec Zip APPLICATION WIN32 SANS FENÊTRE ET AVEC BOUCLE DES MESSAGES par racpp
Source avec Zip [C] FONCTION MSGBOX TOUTE SIMPLE POUR LINUX ! par ZedMaTrix
Source avec Zip JEU DES BOITES par ghribi
Source avec Zip Source avec une capture NET SEND AVEC ANONYMAT ET CHANGEMENT D'IDENTITÉ par kanprog
Source avec Zip Source avec une capture POSTIT : UN PROGRAMME QUI AFFICHE UNE MESSAGEBOX AVEC UN PET... par poulpixx

Commentaires et avis

Commentaire de BruNews le 23/11/2004 14:27:17 administrateur CS

MEME emplacement memoire relu 3 fois alors que EDX non utilise !!!
Mets aussi les valeurs en place de '\n' sinon intransportable dans MASM.
On change:

__declspec(naked) int __fastcall LineSize(LPCTSTR lpText)
{ // ECX = lpText, ne pas changer sert calcul final en 1 cycle
  __asm {
    mov    dl, [ecx]
    mov    eax, ecx  ; eax avancera
next:
    cmp    dl, 10      ; '\n'
    je     short fin
    cmp    dl, 13      ; '\r'
    je     short fin
    test   dl, dl      ; NULL fin de chaine
    je     short fin
    inc    eax
    mov    dl, [eax]
    jmp    short next
fin:
    sub    eax, ecx
    ret    0
  }
}

Des lignes de texte pouvant parfois etre tres longues, faudrait derouler les boucles, en 3 fois est generalement un bon compromis pour rester dans une plage de 127 octets.
Vois pour les autres si besoin d'applique ce principe.

Commentaire de Gendal67 le 23/11/2004 21:32:58

hmm, ça m'a l'air d'avoir des avantages pratique mon pti vecchio...vai jetter un oeil :-))

Commentaire de vecchio56 le 25/11/2004 10:07:53 administrateur CS

BruNews> Voila j'ai essayer d'appliquer ce que t'as dit. J'ai déroulé trois fois les boucles, mais sur 127 octets je pouvais le faire environ dix fois, ca fait un peu beaucoup non?

Commentaire de BruNews le 25/11/2004 10:21:20 administrateur CS

Devrait suffire en 3 fois, je jetterai un oeil des que possible.

Commentaire de BruNews le 25/11/2004 13:03:36 administrateur CS

A l'air correct, ensuite si tu devais employer ces fonctions dans un prog ou elles seraient tres souvent utilisees, je te conseille (pour les perfs) de les transformer en macros par '__inline', aucun prob puisqu'elles n'utilisent que les 3 registres generaux. Faudra par contre en modifier l'entete, regarde exemple sur ma bnstrcpy.

Commentaire de vecchio56 le 26/11/2004 10:19:47 administrateur CS

OK

Commentaire de gagah1 le 27/11/2004 09:24:37

Salut.

Dites-moi, ce petit bout de code en ASM, n'y a-t-il pas d'equivalence en C/C++? Ou on est obligé de passer par celà?

Commentaire de vecchio56 le 28/11/2004 15:30:39 administrateur CS

Bien sur que je pouvais le faire en C, mais ce genre de boucle est assez facile à écrire en asm, et plus efficace que ce que donne le compilo (a condition de bien les écrire, ce que je n'avais pas fait du premier coup)

Commentaire de gagah1 le 28/11/2004 20:15:25

"plus efficace que ce que donne le compilo " veut dire quoi? Plus rapide?

Commentaire de vecchio56 le 29/11/2004 12:28:25 administrateur CS

Oui. Par exemple si tu fais une boucle for(i =0...) le compilateur va utiliser une variable locale (sur la pile) alors qu'en fait on peut utiliser une registre

Commentaire de gagah1 le 29/11/2004 14:11:40

D'accord. Merci!

Commentaire de BruNews le 29/11/2004 15:17:20 administrateur CS

La mise en variable sur pile d'un iterateur n'est pas forcement systematique, mais bon...

Commentaire de magic_Nono le 25/01/2005 10:41:48

Bj

j'ai repris cette classe et l'ai adapté pr VC6

je vais la reprendre pour prendre en cpte les modifs récentes.... merci à toi BN....
publication prochaine....

pour la contrib la lib est dc adaptée VC6,
intégrée dans des classes (ça fait plus propre)
et surtout elle a une nouvelle interface d'acces (2 en fait), basée sur les nombres de paramètres variable !

dont voici les protos :

int BMsgBoxChoix::messageBoxChoix(HWND hWnd, HINSTANCE hInstance, const char* lpText, const char* lpCaption, HICON hIcon, HFONT hFont, DWORD dwStyle,const char* txtPremierBouton,...);

int BMsgBoxChoix::messageBoxChoix(HWND hWnd, HINSTANCE hInstance, const char* lpText, const char* lpCaption, HICON hIcon, HFONT hFont, DWORD dwStyle,const BString& txtPremierBouton,...);

en plus de ça, ma lib d'interface fait l'interface (lol) avec une fonction de ce proto:

int BVisuel::msgBoxChoix(const char *titre, const char *intro, const char *premiereReponse, ...);

l'utilisation en est simplifiée à l'extrème :


switch(BVisuel::msgBoxChoix("Choix de la Base de Donnee ","Veuillez choisir la BD désirée","Locale","serveur temporaire","serveur final",0))
{
...
}


pour traduire les param variables :
actuellement, je suis passé par mes BLBString, (liste de chaines) [contenues dans ma sourse BListeIndir]

si vous avez un moyen d'intégrer ça simlement avec les TString je suis preneur

Magicalement
Nono.


PS :
bug constaté (j'ai pas checké si ça a été réglé plus haut) :
La boite crée est modale (ce qui correspond bien au fonctionnement voulu)
mais modale seulement pour la fonction en cours
cependant, elle a un comportement amodale si cette fonction a été lancée depuis une fenêtre.
cad la fenêtre appelante est activable !!!

Commentaire de magic_Nono le 25/01/2005 11:19:15

soluce au pb de semi amodalité:

utiliser GetFocus() ou GetParent()

merci BruNews.

Bruno.

Commentaire de magic_Nono le 25/01/2005 11:45:03

modif effectuée dans
int BMsgBoxChoix::messageBoxChoixIndirect(BMsgBoxChoix::MBSTRUCT* lpmbs)

avant

if(!bInitialized)
init();

insérer

/// algo : check du parent, récup mm si non spécifié.
if(lpmbs->hWnd==NULL)
{
HWND plomp=GetFocus();
if(plomp!=NULL)
lpmbs->hWnd=plomp;
}




Magicalement


PS ici, vous n'avez pas le 'BMsgBoxChoix::'

Commentaire de saradion le 17/05/2007 19:40:52

merci pour le code c tré gentil

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

MessageBox dans une boite de dial m_pMainWnd [ par gagaet22 ] Bonsoir à vous, Voilà mon interrogation : Je fait une boite de dial simple :     m_pMainWnd = dlg;     int qst messagebox [ par dambeaufort ] bonjour,voici mon probleme:J'ai une application mfc constitue de plusieur boite de dialogue s'ouvrant a la suite des autres. J'ai un thread qui lit en MessageBox et plein ecrant [ par D3m3T05 ] Bonjour a tous. je voudrait savoir s'il est possible de creer une message box qui s'affiche au premier plan (une message box modale). et aussi, commen fenêtre basculant en arrière-plan [ par by_rabbit_08 ] Bien le bonjourj'ai une simple question:J'ai une boite de dialogue qui appelle un Thread et qui lui passe en paramètre son handle (de la boite de dial Parasites dans Boite de message MULTILINE [ par LaPatoshe ] Bonjour, je voudrais savoir comment envoyer à une zone d'édition en Multiline, du texte comportant des retours à la ligne (\n), sans que des caractère Message [ par ToToL ] SalutJe travaille en Win32J'ai un thread qui boucle et qui toute les 10 seconde balance un message dans la liste de ceux de windows. sauf que quand j' Transmission impossible sans MessageBox ? [ par AlexMAN ] Bonsoir, Voila, il m'arrive un truc assez bizarre, j'ai remarqué ce probleme depuis quelques jours déja, et j'avoue que je n'y trouve aucune solution. Messagebox et police VC++(pas de MFC) [ par Frenchy62620 ] Une question concernant la messagebox est ce q'uon peut modifier la font de la messagebox avant son affichage? (juste la font de cet objet)Frenchy bouton stop [ par rlope ] BonjourJ'ai un petit problème avec un bouton STOP que je voudrais créer. (Visual C++ boite de dialogue)Explication :Avec un bouton de ma boite de dial Probleme compte [ par PatSW ] Salut,***Ceci est un message pour un administrateur!***Depuis environs 8 mois j'ai changer mon adresse email, et lorsque que je vais dans mes option d


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

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

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