Prova a fare una finestra completa. Come un modulo di Windows. Puoi farlo senza dinamismo, ma dato che l'hai parzialmente implementato, penso che otterrai una finestra "di gomma" simile a quella di Windows.
Реter Konow: Prova a fare una finestra completa. Come un modulo di Windows. Puoi farlo senza dinamismo, ma dato che l'hai parzialmente implementato, penso che otterrai una finestra "di gomma" simile a quella di Windows.
La parte più difficile sarà disegnare i pulsanti :))
Gli scorrimenti sono stati fatti separatamente, possono essere applicati a una specifica configurazione della finestra, il resto (eventi, modifiche alle proprietà richieste) sarà fatto automaticamente. Collegarli è molto semplice:
Nel 93-95 circa si potevano comprare i demo di cui sopra (*chi non lo sa - il software era venduto al dettaglio) nella libreria "House of Tech Books" in via Leninsky. Aveva persino un monitor separato dove scorreva la demo e si poteva "provare". Era forte - i cartelli, i pulsanti, le caselle di controllo/radio, e la grafica...
ma poi ho comprato uno Zortec-C. Una scatola pesante, con 5 volumi di documentazione e alcuni floppy disk :-)
Il meccanismo delle finestre "gommose" è inizialmente implementato,
ma quando si ridimensiona:
le finestre non dovrebbero lampeggiare,
ci dovrebbero essere 8 maniglie di presa della finestra per il ridimensionamento - per ogni lato e ogni angolo.
Infatti, la finestra come entità non è formata. Non c'è ancora integrità.
Per idea, si dovrebbe arrivare a un'opzione simile:
Beh, nel complesso, hai fatto sicuramente bene! Non me l'aspettavo. ))))
Continua.
1. usato rettangoli e kanvasses in gran numero con dinamiche, forse non blink se tutto era su un kanvas, ci sono già limitazioni della piattaforma, e disegnare tutto su un kanvas non è auspicabile. Forse solo per tradurre tutto in una volta su DirectX...
2. Ho appena aggiunto un piccolo componente che implementa il tratto. E non c'è integrità, sono solo elementi assemblati e non necessariamente grafici.
Cosa non ti aspettavi? Stretching? Ecco quanto è facile per me. Faccio queste cose per il mio progetto, non ho intenzione di creare una libreria di controlli grafici, anche se la base per la sua creazione è molto buona
#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. rettangoli e kanvasses sono usati in gran numero con la dinamica, forse non sbatterebbe le palpebre se tutto fosse su un kanvas, ma ci sono già limitazioni della piattaforma, e disegnare tutto su un kanvas non è desiderabile. Forse solo per tradurre tutto in una volta su DirectX...
2. Ho appena aggiunto un piccolo componente che implementa il tratto. E non c'è integrità, sono solo elementi assemblati e non necessariamente grafici.
Cosa non ti aspettavi? Stretching? Ecco quanto è facile per me:
Lampeggia perché si cambia la dimensione di TUTTO il kanvas, il che è dispendioso in termini di risorse, ma se si cambia l'area dell'immagine visibile sul kanvas di dimensione MASSIMA, ci si libera di questo spiacevole effetto. Cioè, si crea in anticipo un kanvas delle dimensioni dello schermo del monitor, vi si collega l'immagine (della stessa dimensione) e poi la si "ritaglia". E le funzioni di ridimensionamento definiranno solo l'area visibile della tela, non la ricreeranno di nuovo.
Prova a fare una finestra completa. Come un modulo di Windows. Puoi farlo senza dinamismo, ma dato che l'hai parzialmente implementato, penso che otterrai una finestra "di gomma" simile a quella di Windows.
La parte più difficile sarà disegnare i pulsanti :))
Sì, ho pensato che fosse la parte più difficile, perché non ce ne sono. ))))
Gli scorrimenti sono stati fatti separatamente, possono essere applicati a una specifica configurazione della finestra, il resto (eventi, modifiche alle proprietà richieste) sarà fatto automaticamente. Collegarli è molto semplice:
Per quanto riguarda ladifficoltà di creare una tabella: il motore è venuto molto bene, quindi creare una tabella con esso non è così difficile.
Sì, ho pensato che questa è la parte più difficile, perché non ce ne sono. ))))
Una demo per il tuo monitor. Per l'angolo in basso a destra puoi ridimensionare la tabella
Una demo per il tuo monitor. Per l'angolo in basso a destra puoi ridimensionare la tabella
Grazie per la demo per il mio monitor.
E così:
ma quando si ridimensiona:
Per idea, si dovrebbe arrivare a un'opzione simile:
Beh, nel complesso, hai fatto sicuramente bene! Non me l'aspettavo. ))))
Mi sono ricordato!
Mi sono ricordato cosa mi ricorda tutto questo...
demo di GVision (uno dei discendenti di TVision).
Nel 93-95 circa si potevano comprare i demo di cui sopra (*chi non lo sa - il software era venduto al dettaglio) nella libreria "House of Tech Books" in via Leninsky.
Aveva persino un monitor separato dove scorreva la demo e si poteva "provare". Era forte - i cartelli, i pulsanti, le caselle di controllo/radio, e la grafica...
ma poi ho comprato uno Zortec-C. Una scatola pesante, con 5 volumi di documentazione e alcuni floppy disk :-)
bello da ricordare.
Grazie per la demo per il mio monitor.
E così:
ma quando si ridimensiona:
Per idea, si dovrebbe arrivare a un'opzione simile:
Beh, nel complesso, hai fatto sicuramente bene! Non me l'aspettavo. ))))
1. usato rettangoli e kanvasses in gran numero con dinamiche, forse non blink se tutto era su un kanvas, ci sono già limitazioni della piattaforma, e disegnare tutto su un kanvas non è auspicabile. Forse solo per tradurre tutto in una volta su DirectX...
2. Ho appena aggiunto un piccolo componente che implementa il tratto. E non c'è integrità, sono solo elementi assemblati e non necessariamente grafici.
Cosa non ti aspettavi? Stretching? Ecco quanto è facile per me. Faccio queste cose per il mio progetto, non ho intenzione di creare una libreria di controlli grafici, anche se la base per la sua creazione è molto buona
1. rettangoli e kanvasses sono usati in gran numero con la dinamica, forse non sbatterebbe le palpebre se tutto fosse su un kanvas, ma ci sono già limitazioni della piattaforma, e disegnare tutto su un kanvas non è desiderabile. Forse solo per tradurre tutto in una volta su DirectX...
2. Ho appena aggiunto un piccolo componente che implementa il tratto. E non c'è integrità, sono solo elementi assemblati e non necessariamente grafici.
Cosa non ti aspettavi? Stretching? Ecco quanto è facile per me: