Bonjour
Je cherche à savoir comment ajouté dans une tollbar les combobox et boutons pour le changement de la police, la taille etc des caratères.
Merci par avance
Bonjour
Je cherche à savoir comment ajouté dans une tollbar les combobox et boutons pour le changement de la police, la taille etc des caratères.
Merci par avance
Pour créer la toolbar:
Pour créer une liste dans la barre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part HndToolbar = CreateWindowEx(0,TOOLBARCLASSNAME,...);
Pour ajouter des boutons:
Code : Sélectionner tout - Visualiser dans une fenêtre à part HndList = CreateWindowEx(0,"ComboBox",...,HndToolbar,...);
Autant que je sache il n'y pas d'API qui permette de faire ça plus facilement. Tu vas de plus être obligé de calculer la position de chaque contrôle dans la barre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SendMessage(HndToolbar,TB_ADDBITMAP,...);
Salut
Je me doutais bien qu'il aurait fallu calculer la position des contrôles.
Je voudrais ajouter ces contrôles après le séparateur. Pour ça il faudrait que je connaisse la largeur des boutons avec "tbab.nID = IDB_STD_SMALL_COLOR;".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 InitCommonControls(); htb = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | TBSTYLE_FLAT, 0, 0, 0, 0, hwnd, NULL, hinst, NULL); tbab.hInst = HINST_COMMCTRL ; tbab.nID = IDB_STD_SMALL_COLOR; SendMessage(htb, TB_ADDBITMAP, 1, (WPARAM)&tbab); tbb[0].iBitmap = STD_FILENEW; tbb[0].idCommand = IDM_NEW; tbb[0].fsState = TBSTATE_ENABLED; tbb[0].fsStyle = TBSTYLE_BUTTON; tbb[0].dwData = 0; tbb[0].iString = 0; tbb[1].iBitmap = STD_PROPERTIES; tbb[1].idCommand = IDM_PARAM; tbb[1].fsState = TBSTATE_ENABLED; tbb[1].fsStyle = TBSTYLE_BUTTON; tbb[1].dwData = 0; tbb[1].iString = 0; tbb[2].iBitmap = 0; tbb[2].idCommand = -1; tbb[2].fsState = 0; tbb[2].fsStyle = TBSTYLE_SEP; tbb[2].dwData = 0; tbb[2].iString = -1; SendMessage(htb, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0); SendMessage(htb, TB_ADDBUTTONS, 3, (LPARAM)&tbb); SendMessage(htb, TB_AUTOSIZE, 0, 0);
Ensuite je ne vois pas comment faire apparaitre dans une 1ère liste les polices, dans une seconde ls tailles de caractère et 3 boutons, gras, italique, soulignés.
Pour les boutons gras, italique et souligné, ce sont des bitmaps... je ne sais pas où tu peux recupérer des fichiers BMP pour cela. Tu peux les dessiner toi-même.
Pour la liste des polices, tu ajoutes une combo box à ta barre:
Pour les tailles de caractères c'est à toi de définir celles que tu autorises.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 int EnumFontProc(ENUMLOGFONTEX *lpelfe,NEWTEXTMETRICEX *lpntme,DWORD FontType,LPARAM lParam) { HWND HndCombo = (HWND)lParam; SendMessage(Hwnd,CB_ADDSTRING,0,(WPARAM)lpelfe->elfFullName); return 1; } void f() { ... HndCombo = CreateWindowEx(0,"ComboBox",...,HndToolbar,...); HDC Hdc = GetDC(Hwnd); LOGFONT LogFont; LogFont.lfCharSet = DEFAULT_CHARSET; LogFont.lfFaceName[0] = 0; LogFont.lfPitchAndFamily = 0; EnumFontFamiliesEx(Hdc,&LogFont,(FONTENUMPROC)EnumFontProc,(LPARAM)HndCombo,0); ReleaseDC(Hwnd,Hdc); ... }
Dans MSDN, l'API CreateFont() indique une formule du genre:
où PointSize correspond à la taille de caractères comme dans Word... je crois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part nHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);
Salut
J'ai réussi à créer les bontons gras, italique et souligné ainsi que la combobox pour modifier la taille de caractère.
Pour ce qui est de la combobox pour modifier la police, j'ai un souci. Ca compile très bien mais ensuite ça ne marche pas à l'éxécution, la fenêtre principale ne s'affiche même pas et je dois arrêter l'exécution en faisant Ctrl+Alt+Suppr.
Salut
Pour les boutons gras, italique et souligné, j'ai réussi ainsi que pour la combobox pour modifier les tailles de caratère.
Par contre pour la combobox pour modifier la police, j'ai un souci avec EnumFontFamiliesEx ou EnumFontProc. Ca compile bien mais lors de l'exécution, ça ne marche pas, la fenêtre principale ne s'affiche pas et il faut faire Ctrl+Alt+Suppr pour arrêter l'exécution. Dès que que je supprime la ligne EnumFontFamiliesEx() ça marche normalement, sans possibilité de modifier la police évidemment.
Tu devrais faire quelque chose pour afficher une progression dans ton EnumFontProc : Ainsi, tu pourras voir si ça tourne toujours ou si tu arrives sur un plantage...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Bonjour
Désolé mais je suis novice . Je fais comment pour afficher une progression dans mon EnumFontProc?
Là, tu as plusieurs options.
En mode console, tu pourrais juste écrire des caractères, sinon tu peux commencer par ouvrir une boîte de dialogue avec une progress bar, ou que sais-je...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Bonjour
J'ai mis une progress bar dans mon EnumFontProc comme sur http://chgi.developpez.com/windows/comctrl32/. La Progress bar s'affiche mais pas la fenêtre principale et j'ai beau appuyer sur "Progress" il ne se passe rien à part la bar qui progresse indéfiniment. Et je doit toujours faire Ctrl+Alt+Suppr pour arrêter l'exécution.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager