Réaliser un projet de crowdsourcing sur Canvas - page 35

 

D'ailleurs, puisque les gens ont affaire à une affaire déjà ancienne :

il s'agit d'une capture d'écran aléatoire prise depuis yandex, l'interface GUI client-serveur, et sur le réseau aussi. Pas besoin de réinventer la roue...

(une seconde de publicité) Pi est vraiment cool. Il existe un tungstène honnête :-)

 
Алексей Барбашин:

Oui, c'est le principal problème ! Le même marché interdit l'utilisation de dlls, nous devons donc réinventer la roue. Ok, si quelqu'un pense que l'interface graphique n'est pas nécessaire, mais n'importe quel long calcul complexe dans n'importe quel cas dans un seul fil ne fonctionnera pas, tout se bloquera ! Donc il faut le faire dans un dll... ce qui est interdit sur le marché...

Et ainsi de suite. Pour cette raison, je dois dessiner et tout résoudre avec des méthodes mql.

En fait, la séparation de l'interface graphique et de la logique en threads est, bien sûr, déjà possible. Ici, les gars ont déjà discuté de la question du parallélisme https://www.mql5.com/ru/forum/288985/page5#comment_14722396.

Par conséquent, le formulaire lui-même pourrait être laissé dans le fil d'exécution principal, comme c'est le cas dans winnda, tandis que tous les calculs supplémentaires pourraient être déplacés vers une exécution en "arrière-plan". C'est ainsi que cela fonctionne pour Windows, Linux et Android.

Oui, j'ai vu cet article, qui est une autre sorte de béquille avec un tas de code que je ne veux même pas regarder.
Quand tout est beaucoup plus rapide et facile à faire en dll.
Au fait, j'ai abandonné l'idée de mql Socket etWebRequest, car lorsque le serveur mql n'est pas disponible, il y a rupture de la connexion,
Les fonctions de socket ou de webrequest sont bloquées, donc gardez-le à l'esprit, si vous décidez de construire des applications sur les sockets mql et les webrequests.

 
Maxim Kuznetsov:

Au fait, tant que les gens font des choses qui ont déjà été faites auparavant :

Il s'agit d'une capture d'écran aléatoire prise à partir de yandex, interface GUI client-serveur, et sur le réseau. Pas besoin de réinventer la roue...

(une seconde de publicité) Pi est vraiment cool. Le tungstène honnête y vit :-)

D'ailleurs, la capture d'écran de Scratch correspond à peu près à ce que Konov veut faire, à savoir créer un algorithme à partir de dés.

 
Maxim Kuznetsov:

c'est parce que microsoft est aux commandes :-)

Pourquoi pensez-vous que les gens perdent leurs données de connexion lorsqu'ils mettent à niveau et activent des produits sur un système pirate ?

Qu'est-ce queMicrosoft a à voir avec les clés de signature des dll ? Cela ne fait qu'identifier le développeur.
Les clés permettant de signer la dll peuvent être données par MQ aux personnes qui ont été pleinement authentifiées par la place de marché.
Avec cette clé, le développeur signe sa dll pour identifier celui qui a écrit la dll.
La clé de signature de la dll n'affecte pas l'activation du produit.

 
Maxim Kuznetsov:

///

Pouvez-vous comprendre qu'il n'y a pas d'interface graphique appropriée sur le MKL ? Celui que nous avons date de 1995. Honte à vous... Et vous, avec les appels à une interface graphique tierce, avez-vous pensé à la manière de l'utiliser dans MT ? Comment le connecter ? Ou ne pas donner un miel, laissez-moi vous dire une platitude ?))

 
Реter Konow:

Pouvez-vous comprendre qu'il n'y a pas d'interface graphique appropriée sur le MKL ? Celui que vous avez est de 1995. Honte à vous... Et vous, avec les appels à une interface graphique tierce, avez-vous pensé à la façon de l'utiliser dans MT ? Comment le connecter ? Ou ne vous donnez pas de miel, laissez-moi vous dire une platitude...))

Peter, je vais probablement t'ouvrir les yeux et parler pour Maxim : Maxim connaît le sujet mieux que quiconque et il y a environ un an et demi, il a posté sa version de l'interface graphique, la formant en quelque sorte sur la base du balisage. De plus, l'interface graphique a été construite dans un environnement externe, mais elle avait une interaction complète avec le programme (indicateur, conseiller expert).

Maxim, désolé de répondre à votre question.

Cependant, je voudrais revenir au sujet. J'ai tiré une image d'un article sur le fonctionnement de la bibliothèque standard:


Cette capture d'écran montre la composition du dialogue sous une forme simplifiée.

Dans cette version, la Bordure est l'élément principal qui crée l'objet canevas sur le graphique et tous les objets esclaves sont dessinés dessus. Ou plutôt, il est dessiné en fonction de l'objet esclave.

Le bouton Fermer est dessiné sur la Légende et la Légende est dessinée sur la Bordure, qui est ensuite dessinée sur le canevas avec tous les éléments dessinés.

 
Алексей Барбашин:

Peter, je vais probablement t'ouvrir les yeux et te le dire pour Maxim : Maxim est plus familier avec ce sujet que quiconque et il y a environ un an et demi, il a posté sa version de l'interface graphique, qui a été formée sur la base du balisage. De plus, l'interface graphique a été construite dans un environnement externe, mais elle avait une interaction complète avec le programme (indicateur, conseiller expert).

Maxim, désolé de répondre à votre question.

Cependant, je voudrais revenir au sujet. J'ai tiré une image d'un article sur le fonctionnement de la bibliothèque standard:


Cette capture d'écran montre la composition du dialogue sous une forme simplifiée.

Dans cette version, la Bordure est l'élément principal qui crée l'objet canevas sur le graphique et tous les objets esclaves sont dessinés dessus. Ou plutôt, il est dessiné en fonction de l'objet esclave.

Le bouton de fermeture est dessiné sur la légende et la légende est dessinée sur la bordure et ce bouton avec tous les éléments dessinés est dessiné sur le canevas.

Je ne sais pas ce qu'il a posté et ce qu'il a fait en matière d'interface graphique, mais dans mes fils de discussion, il n'a pas fait une seule suggestion technique, solution ou discussion sur le sujet. Seulement des trolls vides, pointant des solutions tierces et exhortant à ne pas réinventer la roue.

Revenons au sujet qui nous occupe.

Pour autant que je connaisse la bibliothèque standard (très peu en fait), les éléments et les fenêtres sont composés d'objets MT. C'est-à-dire, dans notre contexte - ils ne sont pas dessinés sur la toile. Bien sûr, ils sont dessinés, mais pas sur notre toile, ce qui nous empêche de contrôler les couleurs des pixels, de créer des gradients de surface, etc.

En théorie, nous pourrions prendre la structure de la bibliothèque, la copier et en faire un analogue sur le kanvas. En théorie...

Le problème est que CCanvas lui-même n'est pas adapté à la création d'une interface graphique. Pourquoi ? Parce que le système kanvas est utilisé principalement pour les primitives graphiques. Donc, en substance, cette classe ne fournit rien d'autre que des primitives. L'archétype de l'interface graphique doit être construit par vous-même. Et dans ce cas, le cours n'est pas nécessaire. Il est plus pratique de se débrouiller avec ses propres solutions. Après tout, vous pouvez dessiner un marqueur rectangulaire sans la classe. Tout comme vous pouvez créer ou charger un canevas. C'est très simple. J'ai donc préféré ma propre solution.

Mais on ne peut pas se passer de CCanvas. C'est pourquoi je n'insiste pas.

 
Реter Konow:

Je ne sais pas ce qu'il a publié et ce qu'il a fait en matière d'interface graphique, mais dans mes fils de discussion, il n'a fait aucune suggestion technique, aucune solution et aucune discussion sur le sujet. Seulement des trolls vides, signalant des solutions tierces et invitant à ne pas réinventer la roue.

Revenons au sujet qui nous occupe.

D'après ce que je sais de la bibliothèque standard (très peu en fait), les éléments et les fenêtres sont composés d'objets MT. C'est-à-dire, dans notre contexte - ils ne sont pas dessinés sur la toile. Bien sûr, ils sont dessinés, mais pas sur notre toile, ce qui nous empêche de contrôler les couleurs des pixels, de créer des gradients de surface, etc.

En théorie, nous pourrions prendre la structure de la bibliothèque, la copier et en faire un analogue sur le kanvas. En théorie...

Le problème est que CCanvas lui-même n'est pas adapté à la création d'une interface graphique. Pourquoi ? Parce que le système kanvas est utilisé principalement pour les primitives graphiques. Donc, en substance, cette classe ne fournit rien d'autre que des primitives. L'archétype de l'interface graphique doit être construit par vous-même. Et dans ce cas, le cours n'est pas nécessaire. Il est plus pratique de se débrouiller avec ses propres solutions. Après tout, vous pouvez dessiner un marqueur rectangulaire sans la classe. Tout comme vous pouvez créer ou charger un canevas. C'est très simple. Par conséquent, j'ai préféré ma propre solution.

Mais on ne peut pas se passer de CCanvas. Je n'insiste donc pas sur ce point.

Stop ! Peter (n'est-ce pas ?), faisons quelques conventions pour nous comprendre. Condition 1 : Nous n'appellerons pas un canvas une classe CCanvas mais simplement un canvas pour dessiner une partie de l'écran ou une ressource spécifique. La classe CCanvas n'a rien à voir avec tout cela et nous ne nous y attarderons pas du tout. Il fournit simplement des fonctions pour dessiner sur ce canevas et c'est tout ! En fait, nous pouvons dessiner en utilisant de nombreuses méthodes différentes.

Par "dessiner", nous entendons la formation d'un tableau de pixels, sur la base duquel une ressource est créée, qui est ensuite placée sur le graphique.

 
Алексей Барбашин:

Stop ! Peter (n'est-ce pas ?), acceptons quelques conventions pour la compréhension mutuelle. Condition 1 : Nous n'appellerons pas CCanvas une classe, mais juste un canevas pour dessiner une partie de l'écran, ou spécifiquement une ressource. La classe CCanvas n'a rien à voir avec tout cela et nous ne nous y attarderons pas du tout. Il fournit simplement des fonctions pour dessiner sur ce canevas et c'est tout ! En fait, nous pouvons dessiner en utilisant de nombreuses méthodes différentes.

Par "dessiner", nous entendons la formation d'un tableau de pixels sur la base duquel une ressource est créée et ensuite placée sur le graphique.

C'est vrai.

 
Алексей Барбашин:

Peter, je vais probablement t'ouvrir les yeux et te le dire pour Maxim : Maxim est plus familier avec ce sujet que quiconque et il y a environ un an et demi, il a posté sa version de l'interface graphique, qui a été formée sur la base du balisage. De plus, l'interface graphique a été construite dans un environnement externe, mais elle avait une interaction complète avec le programme (indicateur, conseiller expert).

Maxim, désolé de répondre à votre question.

Cependant, je voudrais revenir au sujet. J'ai tiré une image d'un article sur le fonctionnement de la bibliothèque standard:


Cette capture d'écran montre la composition du dialogue sous une forme simplifiée.

Dans cette version, la Bordure est l'élément principal qui crée l'objet canevas sur le graphique et tous les objets esclaves sont dessinés dessus. Ou plutôt, il est dessiné en fonction de l'objet esclave.

Le bouton de fermeture est dessiné sur Caption et Caption est dessiné sur Border et tous les éléments sont dessinés sur le canevas.

Bien sûr, ce n'est pas tout à fait exact :-)

J'ai posté une interface à la DLL Tcl (qui est le langage commun des outils), qui a un graphique Tk qui est partagé comme une interface graphique dans Python/Ruby/etc.

le but n'était pas d'obtenir une interface graphique, mais un joli sous-produit :-)

tcl.Eval("button .pressme -text {Hello Peter}; pack .pressme") ;

à mon avis, pratique, et surtout court :-)

Je n'agite personne - je connais tcl/tk, je l'utilise, je partage mes expériences (voir sourceforge atcl).