Essayez de créer une fenêtre à part entière. Comme un formulaire Windows. Vous pouvez le faire sans dynamisme, mais puisque vous l'avez partiellement implémenté, je pense que vous obtiendrez une fenêtre "caoutchouc" semblable à celle de Windows.
Реter Konow: Essayez de créer une fenêtre à part entière. Comme un formulaire Windows. Vous pouvez le faire sans dynamisme, mais puisque vous l'avez partiellement implémenté, je pense que vous obtiendrez une fenêtre "caoutchouc" semblable à celle de Windows.
La partie la plus difficile sera de dessiner les boutons :))
Les défilements ont été réalisés séparément, ils peuvent être appliqués à une configuration de fenêtre spécifique, le reste (événements, modifications des propriétés requises) se fera automatiquement. Les connecter est très simple :
Je me suis souvenu de ce que tout ça me rappelle...
démos de GVision (un des descendants de TVision).
Vers 93-95, vous pouviez acheter les démos mentionnées ci-dessus (*qui ne sait pas - le logiciel était vendu au détail) dans la librairie "House of Tech Books" sur la rue Leninsky. Il y avait même un moniteur séparé où la démo défilait, et où on pouvait "essayer". C'était cool - les panneaux, les boutons, les cases à cocher/radio, et les graphiques...
mais ensuite j'ai acheté un Zortec-C. Une boîte lourde, avec 5 volumes de documentation et quelques disquettes :-)
Le mécanisme des fenêtres "caoutchouteuses" est initialement mis en œuvre,
mais quand vous redimensionnez :
Les fenêtres ne doivent pas clignoter,
il devrait y avoir 8 poignées de fenêtre pour le redimensionnement - pour chaque côté et chaque coin.
En fait, la fenêtre en tant qu'entité n'est pas formée. Il n'y a pas encore d'intégrité.
Par idée, vous devriez arriver à une option similaire :
Eh bien, dans l'ensemble, vous avez certainement bien fait ! Je ne m'y attendais pas. ))))
Continuez.
1. utilisé des rectangles et des kanvasses en grand nombre avec de la dynamique, peut-être pas en clignant des yeux si tout était sur un seul kanvas, il y a déjà des limitations de la plateforme, et dessiner tout sur un seul kanvas n'est pas souhaitable. Peut-être si seulement pour traduire tout en une fois sur DirectX...
2. J'ai juste ajouté un petit composant, qui implémente l'étirement. Et il n'y a pas d'intégrité, ce ne sont que des éléments assemblés, et pas forcément graphiques.
A quoi ne vous attendiez-vous pas ? Des étirements ? C'est aussi simple que ça pour moi. Je fais ces choses pour mon projet, je n'ai pas l'intention de créer une bibliothèque de contrôles graphiques, bien que la base pour sa création soit très bonne.
#include <Greshnik\\\Windows_engine\\Windows_engine_base.mqh>
//Элемент, который будет изменять размер родительского окна перетаскиванием мышки//По умолчанию окошко будеи распологаться в правом нижнем углуclass cV_resizer
{
cV_object_base *_main;//Основное окноclass My_events: public iE_event_handler
{
public:
cV_object_base *_e_my;
void On_event(sEvent &event);
};
My_events ev;
public:
//Создание таблицыbool Create(
cV_object_base &parent_object,
string name=NULL
);
};
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void cV_resizer::My_events::On_event(sEvent &event)
{
if(event.id==CHARTEVENT_ON_PROPERTY_CHANGED_)
{
if(event.lparam==vop_position_x)
{
cV_object_base *par=_e_my.Get_parent();
long p=par.Get_property(vop_size_x).data_long;
long pos=_e_my.Get_property(vop_position_x).data_long;
long size=_e_my.Get_property(vop_size_x).data_long;
long d=pos+size-p;
par.Set_property(vop_size_x,p+d);
_e_my.Set_property(vop_position_x,par.Get_property(vop_size_x).data_long-size);
}
else
{
cV_object_base *par=_e_my.Get_parent();
long p=par.Get_property(vop_size_y).data_long;
long pos=_e_my.Get_property(vop_position_y).data_long;
long size=_e_my.Get_property(vop_size_y).data_long;
long d=pos+size-p;
par.Set_property(vop_size_y,p+d);
_e_my.Set_property(vop_position_y,par.Get_property(vop_size_y).data_long-size);
}
}
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+bool cV_resizer::Create(cV_object_base &parent_object,string name=NULL)
{
int width=20;
int height=20;
long width_p=parent_object.Get_property(vop_size_x).data_long;
long heigth_p=parent_object.Get_property(vop_size_y).data_long;
_main=new cV_object_base();
_main.Set_property_info(vop_size_x,width);
_main.Set_property_info(vop_size_y,height);
_main.Set_property_info(vop_position_x,width_p-width);
_main.Set_property_info(vop_position_y,heigth_p-height);
_main.Set_property_info(vop_is_movable,true);
_main.Create(parent_object);
_main.Add_event_handler(GetPointer(ev));
_main.Set_property_change_event(vop_position_x);
_main.Set_property_change_event(vop_position_y);
ev._e_my=GetPointer(_main);
returntrue;
}
1. les rectangles et les kanvas sont utilisés en grande quantité avec la dynamique, peut-être que cela ne clignoterait pas si tout était sur un seul kanvas, mais il y a déjà des limitations de plate-forme, et dessiner tout sur un seul kanvas n'est pas souhaitable. Peut-être si seulement pour traduire tout en une fois sur DirectX...
2. J'ai juste ajouté un petit composant, qui implémente l'étirement. Et il n'y a pas d'intégrité, ce ne sont que des éléments assemblés, et pas forcément graphiques.
A quoi ne vous attendiez-vous pas ? Des étirements ? C'est aussi simple que ça pour moi :
Il clignote parce que vous modifiez la taille de TOUS les kanvas, ce qui consomme des ressources, mais si vous modifiez la zone de l'image visible sur les kanvas de taille MAXIMALE, vous vous débarrassez de cet effet désagréable. En d'autres termes, vous créez à l'avance un kanvas de la taille de l'écran du moniteur, vous y connectez l'image (de la même taille), puis vous la "recadrez". Et les fonctions de redimensionnement ne font que définir la zone visible du canevas, sans la recréer.
Essayez de créer une fenêtre à part entière. Comme un formulaire Windows. Vous pouvez le faire sans dynamisme, mais puisque vous l'avez partiellement implémenté, je pense que vous obtiendrez une fenêtre "caoutchouc" semblable à celle de Windows.
La partie la plus difficile sera de dessiner les boutons :))
Oui, je me suis dit que c'était la partie la plus difficile, parce qu'il n'y en a pas. ))))
Les défilements ont été réalisés séparément, ils peuvent être appliqués à une configuration de fenêtre spécifique, le reste (événements, modifications des propriétés requises) se fera automatiquement. Les connecter est très simple :
En ce qui concernela difficulté de créer un tableau : le moteur s'est avéré très bon, donc créer un tableau en l'utilisant n'est pas si difficile.
Oui, je me suis dit que c'était la partie la plus difficile, parce qu'il n'y en a pas. ))))
Une démo pour votre moniteur. Pour le coin inférieur droit, vous pouvez redimensionner le tableau.
Une démo pour votre moniteur. Dans le coin inférieur droit, vous pouvez redimensionner le tableau.
Merci pour la démo pour mon moniteur.
Et donc :
mais quand vous le redimensionnez :
Par idée, vous devriez arriver à une option similaire :
Eh bien, dans l'ensemble, vous avez certainement bien fait ! Je ne m'y attendais pas. ))))
Je me suis souvenu !
Je me suis souvenu de ce que tout ça me rappelle...
démos de GVision (un des descendants de TVision).
Vers 93-95, vous pouviez acheter les démos mentionnées ci-dessus (*qui ne sait pas - le logiciel était vendu au détail) dans la librairie "House of Tech Books" sur la rue Leninsky.
Il y avait même un moniteur séparé où la démo défilait, et où on pouvait "essayer". C'était cool - les panneaux, les boutons, les cases à cocher/radio, et les graphiques...
mais ensuite j'ai acheté un Zortec-C. Une boîte lourde, avec 5 volumes de documentation et quelques disquettes :-)
C'est bon de s'en souvenir.
Merci pour la démo pour mon moniteur.
Et donc :
mais quand vous redimensionnez :
Par idée, vous devriez arriver à une option similaire :
Eh bien, dans l'ensemble, vous avez certainement bien fait ! Je ne m'y attendais pas. ))))
1. utilisé des rectangles et des kanvasses en grand nombre avec de la dynamique, peut-être pas en clignant des yeux si tout était sur un seul kanvas, il y a déjà des limitations de la plateforme, et dessiner tout sur un seul kanvas n'est pas souhaitable. Peut-être si seulement pour traduire tout en une fois sur DirectX...
2. J'ai juste ajouté un petit composant, qui implémente l'étirement. Et il n'y a pas d'intégrité, ce ne sont que des éléments assemblés, et pas forcément graphiques.
A quoi ne vous attendiez-vous pas ? Des étirements ? C'est aussi simple que ça pour moi. Je fais ces choses pour mon projet, je n'ai pas l'intention de créer une bibliothèque de contrôles graphiques, bien que la base pour sa création soit très bonne.
1. les rectangles et les kanvas sont utilisés en grande quantité avec la dynamique, peut-être que cela ne clignoterait pas si tout était sur un seul kanvas, mais il y a déjà des limitations de plate-forme, et dessiner tout sur un seul kanvas n'est pas souhaitable. Peut-être si seulement pour traduire tout en une fois sur DirectX...
2. J'ai juste ajouté un petit composant, qui implémente l'étirement. Et il n'y a pas d'intégrité, ce ne sont que des éléments assemblés, et pas forcément graphiques.
A quoi ne vous attendiez-vous pas ? Des étirements ? C'est aussi simple que ça pour moi :