begin process at 2012 02 11 11:06:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Autre

 > 

API win32


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

API win32

vendredi 24 novembre 2006 à 16:12:43 | API win32

rachid12450

Bonjour à tous
ma question:
y'a t-il un moyen de récupérer la hateur des étquettes d'un TAB_CONTROL
avec par exemple GetSystemMetrics() ou autre fonction
merçi d'avance
à bientôt

vendredi 24 novembre 2006 à 19:41:38 | Re : API win32

vecchio56

Administrateur CodeS-SourceS
Cette taille n'est-elle pas constante?

_____________________________________
Un éditeur de ressources gratuit pour Windows

lundi 27 novembre 2006 à 12:44:01 | Re : API win32 TABCONTROL

rachid12450

Bonjour
voilà j'apporte quelques précisions
je crée une fenêtre principale hwndMain
dans le WM_CREATE de cette fenêtre je crée un WC_TABCONTROL :

GetClientRect(hwndMain, &rc);

 hwnd_TabCtrl =

CreateWindowEx(0, WC_TABCONTROL, "", WS_CHILD | WS_VISIBLE, 0, 0, rc.right, rc.bottom, hwndMain,(HMENU)IDHWNDTAB, hInst, NULL);


je crée une autre fenêtre dans la surface client du TABCONTROL            

GetClientRect(hwnd_TabCTRL, &rc);

 hwndTableau =

CreateWindowEx(WS_EX_CLIENTEDGE, "StructureTableau", "XXXXXXXXX", WS_CHILD | WS_VISIBLE | WS_HSCROLL,

rc.left, rc.top, rc.right, rc.bottom, hwnd_TabCtrl,NULL, hInst, NULL);

en utilsant par exemple des lignes du type:
sprintf(Buffer,"Largeur de la surface client %i", rc.right);
MessageBox(hwndMain, Buffer, "Message information", MB_OK) ;
j'arrive à constater un certain nombre de chose:
1) la surface client de la fenêtre principale et du tab_ctrl sont les mêmes ce qui me parait étrange
pour être concret:
hwnd_Main rc.left=0, rc.top=0, rc.right=996, rc.bottom=540.
Idem pour hwnd_TabCtrl.
2) la troisième fenêtre créée dans la surface client du Tab_Ctrl est par contre réduite:
hwnd_Tableau rc.left=0, rc.top=0, rc.right=992, rc.bottom=515.
mes questions sont:
 pourquoi la fenêtre principale et la fenêtre TabCtrl ont les mêmes dimensions de leurs surfaces client?
la différence entre 540 et 515 est ce que elle correspond à la hauteur des étiquettes du TabCtrl? si oui est ce que cette différence ne dépend pas de la résolution de l'écran?

lundi 27 novembre 2006 à 13:37:01 | Re : API win32

vecchio56

Administrateur CodeS-SourceS
Rien d'extraordinaire à ce que deux fenêtres fassent la même taille, je ne vois pas le problème
Pour vérifier simplement la taille des fenêtres, tu peux utiliser Spy++ ou ceci

La taille en pixels ne diffère pas selon la résolution. C'est juste qu'avec une petite résolution, tu verra ta fenêtre plus grande

_____________________________________
Un éditeur de ressources gratuit pour Windows

lundi 27 novembre 2006 à 16:48:16 | Re : API win32

rachid12450

merçi pour le tuyau "Spy++" effectivement c'est très utile

mais je reviens quand même à ma question

j'ai toujours les trois fenêtres:
1) hwndMain fenêtre principale
2) hwnd_TabCtrl fenêtre enfant couvrant la surface client de la fenêtre principale
3) hwndTableau couvre la surface client de hwnd_TabCtrl

dans la procédure de la fenêtre principale je dois traîter un changement de dimension ou un déplacement de la fenêtre principale
je procède ainsi: 
case WM_SIZE:

            GetClientRect(hwndMain, &rc);

            MoveWindow(hwnd_TabCtrl, rc.left, rc.top, rc.right, rc.bottom, TRUE);

            GetClientRect(hwndTabCtrl, &rc);

//si je met:
      
      MoveWindow(hwndTableau, rc.left, rc.top, rc.right, rc.bottom, TRUE);//"les étiquettes" du Tab_Ctrl
//sont perdues

//par contre si je met :           

            MoveWindow(hwndTableau, rc.left+5, rc.top+25, rc.right-10, rc.bottom-30, TRUE);

     break;

//les étiquettes sont là 
//alors que la création du Tab_Ctrl s'est faite ainsi:

GetClientRect(hwndMain, &rc);
 hwnd_TabCtrl = CreateWindowEx(0, WC_TABCONTROL, "", WS_CHILD | WS_VISIBLE, 0, 0, rc.right, rc.bottom, hwndMain,(HMENU)IDHWNDTAB, hInst, NULL);
je ne sais pas mais il y a quelques chose qui m'échappe
est ce que je dois utiliser le Spy++ pour déterminer les +5, +25, -10 et -30 utilisés dans
MoveWindow(hwndTableau, rc.left+5, rc.top+25, rc.right-10, rc.bottom-30, TRUE)?


 

 

lundi 4 décembre 2006 à 11:41:58 | Re : API win32

rachid12450

Réponse acceptée !

Bonjour à tous,
je reviens sur cette question: "Peut on modifier la hauteur des onglets d'un TAB_CONTROL"
après une recherche personnelle avec l'aide de ce site fabuleux
la réponse est oui cette hauteur n'est pas constante, elle dépend de la hauteur tout bêtement de la hauteur de la font utilisée dans le TabControl
par exemple
hwndTabCtrl est le handle du TabControl
il suffit de:
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT)); pour initialiser à 0 la structure LOGFONT;
lf.lfHeight = 35;
lf.lfWeight = FW_BOLD; une constante définissant une certaine épaisseur de la font;
hfont = CreateFontIndirect(&lf);
hdc = GetDC(hwndTabCtrl);
SelectObject(hdc, hfont);

et le tour est joué: les dimensions des onglets du TabCtrl notamment leur hauteur  sont équivelentes aux dimensions du text écrit dans ces onglets avec la nouvelle font sélectionnée.

si on veut créer une fenêtre enfant dans le TabCtrl, il faut faire attention pour ne pas empiéter sur les onglets avec leur nouvelle taille
 
par exemple utiliser:
GetTextExtentPoint32(hdc, Buffer, 40, &size);
Buffer étant par exemple la string d'un onglet du TabCtrl
en créant la fenêtre enfant il faut respecter la hauteur de la font qui se retrouve dans size.cy par exemple on crée une fenêtre enfant sur l'ensemble de la surface du TabCtrl par:
CreateWindowEx(WS_EX_CLIENTEDGE, "Ma fenêtre enfant", "XXXXXXXXX", WS_CHILD | WS_VISIBLE | WS_HSCROLL,rc.left+5, rc.top+5+size.cy, rc.right-10, rc.bottom-10-size.cy, hwndTabCtrl,NULL, hInst, NULL);
le "5" de chaque coté est pour respecter la bordure
le size.cy est pour respecter la hauteur des onglets

voilà
à très bientôt



Cette discussion est classée dans : api, win32


Répondre à ce message

Sujets en rapport avec ce message

api win32 sdk [ par fabpdg ] je recherche comment utiliser les fonfions, comme netsessionemun en delphi.Delphi ne reconnaît pas les fonctions api win32 sdk.Comment et quels sont l equivalent win32 pour linux [ par mbab ] Bonjour, je debute en c++ et je dois realiser une interface graphique en c++ sous linux. Y a t-il des api tel win32 (pour windows )mais sous linux. Si Lien DLL 16 / API WIN32 [ par CoreBreaker ] Bonjour quelqu'un sait-il comment une fonction de l'API Win32 dans une DLL 16bits ?Et de manière générale comment appeler une fonction d'une DLL 32bit l'API win32 sait-elle lire? [ par supergrey ] Bonjour, je voudrais savoir s'il est possible de récupérer le texte visible dans les page web que je visite sur le net avec un programme.Merci. 2 questions en api win32 [ par youpiyoyo ] j'aimerai tout d'abord savoir comment mettre un titre sur ma boite de dlg en api win32 sachant ke a border=none dans la gestion des ressources. a mon Question API Win32 [ par LordBob ] Bonjours a tous,j'aimerais avoir quelques info sur les API suivante:EnumWindowsGetWindowcar sinon il faudrai que j'aille voir sur le site de la MSDN m Existe-t-il un InvokeHelper en Api win32 [ par youpiyoyo ] comme le titre l'indique j'aurai besoin de sauvegarder un fichier. j'aurais aimer un boite de dlg pour cela.merci d'avance... Slider bar en API Win32 [ par sebseb42 ] voila, j'utilise un controle Slider dans une fenetre que je gere en API Win32 (pas de MFC)je voudrais definir sa position initial, pour placer ;e curs Coloration de texte dans un EDIT (API WIN32) [ par Nebula ] Tout est dit dans le sujet...Petites précisions : je ne travaille qu'en C, et j'aimerais savoir si la chose est possible, car les RICHEDIT sont (beauc Coloration de texte dans un EDIT (API WIN32) [ par Nebula ] ---Hum, apparemment mon premier post n'est pas passé, je retente le coup !---Tout est dit dans le sujet...Petites précisions : je ne travaille qu'en C


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,529 sec (3)

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