2010-10-04 4 views
0

Grâce à l'expérience, j'ai constaté que les formulaires/composants natifs Windows n'aime pas être changé. Je sais que Delphi ou Visual Studio vous donne des composants Windows natifs pour remplir un formulaire ou une fenêtre, puis vous attachez du code sur les événements que ces composants peuvent faire (onClick par exemple).Comment fonctionne une interface utilisateur Windows natif?

Cependant, comment tous ces programmes comme le navigateur Chrome de Google ou de Google modifient-ils la fenêtre standard de Windows? Je pensais que c'était en quelque sorte protégé?

Chrome semble avoir des onglets sur le cadre de la fenêtre?

Je sais que vous pouvez également obtenir des toolkits comme Swing et QT qui ont leurs propres contrôles/composants pour remplir un formulaire. Comment cela fonctionne-t-il? (Comment le système d'exploitation/ordinateur sait-il à quoi doit ressembler un bouton non natif? Par exemple, les boutons Précédent et Suivant de Chrome ne sont pas des composants natifs?).

Je peux comprendre comment la fenêtre OpenGL/DirectX fonctionnerait parce que vous dites à l'ordinateur exactement ce qu'il faut dessiner avec les polygones/quadrilatères.

J'espère que cette question est claire!

Répondre

0

Swing Ant QT dessine ses propres widgets à un niveau bas en utilisant des primitives de base, mais ils ont aussi des moteurs de thème qui peuvent imiter les contrôles natifs.

0

Qt déplacé vers les contrôles natifs un certain temps. Quant à la façon dont le swing le fait, il obtient une fenêtre de base de l'OS. Ensuite, tout comme Opengl \ Directx, il fait tout le dessin avec dans cette fenêtre. En ce qui concerne où positionner les choses, c'est ce que font les gestionnaires de disposition. Chaque gestionnaire a un style de mise en page horizontal, vertical, grille, composants qu'il doit dessiner et une section de fenêtre qu'il est prévu de remplir. De là, il fait des maths assez faciles pour allouer son espace à ses contrôles.

0

Il n'y a pas de magie: les contrôles non natifs sont simplement dessinés sur une fenêtre vierge. Ou, au lieu d'être dessinés, ils peuvent être représentés comme l'un de plusieurs bitmaps basés sur l'état (ie: un bouton peut être représenté par un .png pour l'état normal, un autre .png pour l'état enfoncé, etc.)

3

Windows ne protège pas les éléments de l'interface graphique. Windows et les contrôles peuvent être sous-classés pour gérer diverses opérations de dessin d'une manière personnalisée. Par exemple, les fenêtres peuvent passer outre et réimplémenter la manipulation du message WM_NCPAINT pour dessiner une barre de titre personnalisé et cadre:

http://msdn.microsoft.com/en-us/library/dd145212(VS.85).aspx

1

Certains contrôles de Windows ont un mode "owner-draw". Si vous utilisez cela, vous pouvez dessiner le contrôle (ou au moins les parties essentielles du contrôle), tandis que Windows prend soin de répondre à la saisie de l'utilisateur de la manière standard.

+1

+1. Parfois aussi appelé User-Drawn, voici un document pour les contrôles dessinés par l'utilisateur: http://msdn.microsoft.com/en-us/library/b818z6z6.aspx – David

Questions connexes