Probleme pour afficher une icone avec MessageBoxIndirect [Résolu]

Signaler
-
 Utilisateur anonyme -
Salut à tous,

J'essaye d'utiliser la fonction MessageBoxIndirect. Cependant je n'arrive pas à mettre mon icone personnalisé. Je vous passe mon code.

procedure TForm1.Button1Click(Sender: TObject);
var aBox: MSGBOXPARAMS;
begin
aBox.cbSize := SizeOf(aBox);
aBox.hwndOwner := Application.Handle;
aBox.hInstance := hinstance;
aBox.lpszText := 'Voilà ma boîte de message avec icône perso :-p';
aBox.lpszCaption := 'CodeS-SourceS.com';
aBox.dwStyle := MB_USERICON + MB_OK;
aBox.lpszIcon := MakeIntResource('detr');
aBox.dwContextHelpId := 0;
aBox.lpfnMsgBoxCallback := nil;
aBox.dwLanguageId := LANG_FRENCH;
(MessageBoxIndirect(aBox)) ;
end;

Pour ma ressource

j'utilise le code suivant : 105 RT_ICO c:\ico1.ico

j'ai bien mon message mais sans l'icone.

J'ai vu les sources d'Inekman et de Cirec mais cela ne change rien à mon beug. Pourriez vous me dire pk svp ? je n'ai pas trouvé grand chose sur le net

Merci A++

14 réponses

Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
42
Salut Francky,
tu n'as pas regardé a fond

aBox.lpszIcon := MakeIntResource('detr'); // le problème viens d'ici j'avais le même problème que toi
le souci est que normalement ce que tu as écris devrait être juste et fonctionner mais voilà ça ne fonctionne pas Pourquoi

Exactement je ne saurai te dire mais j'ai remarqué que lpszIcon ne fonctionne qu'avec des identifiants de type Entier

Voici un bout de code qui a été généré par mon expert :



Var hRes : THandle;
eVar : Array[1..512] of Char;
MBParams : TMsgBoxParams;
Begin
ExpandEnvironmentStrings(PChar('%SystemRoot%\system32\moricons.dll'),@eVar,512);
hRes : = LoadLibrary(Pchar(@eVar));
With MBParams do
Begin
cbSize := SizeOf(MBParams);
hwndOwner := Application.MainForm.Handle;
hInstance := hRes;
lpszIcon := MakeIntResource(24) ;
lpszText : = pchar('');
lpszCaption := PChar('Vous pouvez sélectionner un model de message où en créer un');
dwStyle := 131;
dwContextHelpId := 0;
lpfnMsgBoxCallback := nil;
dwLanguageId := LANG_NEUTRAL;
End;

Case Integer(MessageBoxIndirect(MBParams)) Of
IDCANCEL :;
IDYES :;
IDNO :;
End;
FreeLibrary(hRes);
End;


<HR>
n'oubliez pas de cliquer sur Réponse Acceptée si elle vous convient
<HR>

@+
Cirec
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
42
Essaye comme ça pour la ressource :

105 ICON "C:\Ico1.ico "


<HR>
n'oubliez pas de cliquer sur Réponse Acceptée
si elle vous convient
<HR>

@+
Cirec
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
42
27 langages pour psPad
19 pour context
tous les langages courant y sont
tu peux aussi les liers directement avec le compilateur en ligne

@+
Cirec
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
42
oups, désolé pour mise en page
y a un truc qui a m.....


<HR>
n'oubliez pas de cliquer sur Réponse Acceptée si elle vous convient
<HR>

@+
Cirec

Désolé Cirec j'ai confondu deux essais : si j'utilise aBox.lpszIcon :=
MakeIntResource(105) et 105 RT_ICO c:\ico1.ico pour la ressource ca
plante



Merci A+

BRCC32 n'arrive pas à compiler 105 ICON "c:\ico1.ico" par contre 105
RCICON "c:\ico1.ico" me donne un fichier .RES. Cependant en
lancant l'executable de la source suivante



procedure TForm1.Button1Click(Sender: TObject);

var aBox: MSGBOXPARAMS;

begin

aBox.cbSize := SizeOf(aBox);

aBox.hwndOwner := Application.Handle;

aBox.hInstance := hinstance;

aBox.lpszText := 'Voilà ma boîte de message avec icône perso :-p';

aBox.lpszCaption := 'CodeS-SourceS.com';

aBox.dwStyle := MB_USERICON + MB_OK;

aBox.lpszIcon := MakeIntResource('detr');

aBox.dwContextHelpId := 0;

aBox.lpfnMsgBoxCallback := nil;

aBox.dwLanguageId := LANG_FRENCH;

(MessageBoxIndirect(aBox)) ;

end;



Cela ne m'affiche pas l'icone Je crois que je me suis engagé dans une sacré galère
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
42
aBox.lpszIcon := MakeIntResource(105);

mais c'est étrange que tu ne puisses pas compiler la ressource avec ICON

si tu as téléchargé ma source est ce que tu as essayé de compiler la fichier Icons.rc
il est fourni avec tous les fichiers et je le compile avec le Brcc32.exe de borland.


<HR>
n'oubliez pas de cliquer sur Réponse Acceptée
si elle vous convient
<HR>

@+
Cirec

Désolé Cirec mais j'ai encore mal rafraichis : aBox.lpszIcon := MakeIntResource(105); : j'avais bien mis ca.



J'ai téléchargé ta source (TRES BON BOULOT DU RESTE mais j'ai pas tout
compris trop complexe pour moi) et j''ai reussit à compiler le RC
en RES.

Tiens tres marrant : j'ai mis ta source sur ma partition D: et j'ai
reussit à compiler ton fichier RC. Le mien est sur le C je n'y arrive
pas. Par contre si je le met sur le C plus de probleme. Alors la je
suis sur les fesses

Dis moi Cirec tu as utilisé quoi pour faires tes icones ? Tu as utlisé NotePad pour faire ton fichier RC ?

Bon j'ai trouvé le problème : j'ai fais mon icone par PaintBrush.
L'icone devait etre foireux ce qui fait que je ne pouvais pas compiler.
J'ai refais mon icone par Delphi et c'est nickel. J'ai bien ce que je
voulais et le programme fonctionne.



Merci bcp à toi
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
42
non ce sont des icônes trouvés dans Windows du genre Shell32.dll
et oui j'utilise Notepad où ContextpsPad même pour du code (mais rarement)

l'avantage de Context et de psPad c'est qu'il sont fait pour éditer du code, ils ont tous deux un parser et sur plusieurs langages et en plus ils sont free et pour visualiser du code rapidement c'est génial<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>

psPad est plus abouti et des plugin sont disponibles

@+
Cirec

Il existe aussi notepad++ fait pour faire des pages html du C,C++ , ect
ect. Il indexe automatique : il est tres bien fait. . Vous pouvez
le trouver la
http://www.siteduzero.com/tuto-3-22-1-avant-de-commencer.html#ss_part_2



A+ et merci

Merci pout tes informations