Ich schlage vor, den Maustastenstatus hinzuzufügen. Es hat keinen Einfluss auf die Geschwindigkeit, aber es kann nützlich sein)
struct Window
{
long ChartId; // Kennung des aktuellen Fenstersuint Color; // Hintergrundfarbe des Fenstersint Width; // Fensterbreiteint Height; // Fensterhöheint height[]; // Höhe der Unterfensterint Left_bar; // Nummer des ganz linken Balkens im Fensterdouble Right_bar; // Nummer des ganz rechten Balkens im Fensterdouble Total_bars; // die maximale Anzahl von Balken im Fensterint BarsInWind; // Anzahl der sichtbaren Balken im Fensterdouble Y_min; // Der Mindestwert des Preises im Fensterdouble Y_max; // Der Höchstwert des Preises im Fensterdouble dy_pix; // Preisänderung für ein Pixelint dx_pix; // Ändern der Anzahl der Balken pro Pixelint MouseX; // Koordinate X der aktuellen Position des Mauszeigersint MouseY; // Y-Koordinate der aktuellen Position des Mauszeigersint MouseStatus; // Status der Maustastendouble MouseBar; // die aktuelle Balkenposition des Mauszeigers double MousePrice; // der aktuelle Kurs des Mauszeigersdatetime MouseTime; // die aktuelle Zeit des Mauszeigersint MouseSubWin; // Nummer des Teilfensters, in dem sich der Mauszeiger befindetint WindowsTotal;// Summe der Unterfenster, einschließlich des Hauptfenstersint SubWin; // aktuelles Unterfensterdatetime time[]; // Array der Öffnungszeit aller sichtbaren Balken im Fenster
};
Ich schlage vor, den Maustastenstatus hinzuzufügen. Es hat keinen Einfluss auf die Geschwindigkeit, aber es kann nützlich sein)
Ich kann dem nicht zustimmen, da ich darin nicht viel Sinn sehe.
Der Punkt ist, dass der Status von Maustasten und Tasten ein Ereignismodell ist, das nur dort verarbeitet werden sollte, wo das Auftreten dieses Ereignisses abgefangen wird, nämlich in OnChartEvent. Sie werden keine Endlosschleife zur Abfrage des Auftretens eines Ereignisses außerhalb des Ereignishandlers einschränken. Welchen Sinn hat es also, diesen Status außerhalb von OnChartEvent zu platzieren, wenn die gesamte Verarbeitung dieser Klicks in OnChartEvent erfolgen sollte, dessen Status sich in lparam und sparam befindet.
Ich kann dem nicht zustimmen, da ich darin keinen Sinn sehe.
Der Punkt ist, dass der Status von Maustasten und Tasten ein Ereignismodell ist, das nur dort behandelt werden sollte, wo das Auftreten dieses Ereignisses abgefangen wird, nämlich in OnChartEvent. Sie werden keine Endlosschleife zur Abfrage des Auftretens eines Ereignisses außerhalb des Event-Handlers einschränken. Welchen Sinn hat es also, diesen Status außerhalb von OnChartEvent zu platzieren, wenn die gesamte Verarbeitung dieser Klicks in OnChartEvent erfolgen sollte, dessen Status sich in lparam und sparam befindet.
Warum dann Mauskoordinaten speichern? ) Auch ereignisgesteuert )
Mauskoordinaten sind eine andere Sache. Die aktuellen Mauskoordinaten sind keine Ereignisinformation. Das Ereignis ist ihre Änderung.
Es kann vorkommen, dass Mauskoordinaten außerhalb von OnChartEvent benötigt werden. Zum Beispiel, hier.
Oleksii Chepurnyi:
Ich habe das mit der Schleife nicht verstanden...
Insbesondere wurde der Status benötigt, um zu vermeiden, dass ein Teil des Objekts beim Ziehen mit der Maus gezeichnet wird.
Nun, wenn man die Maus zieht, wird der Befehl zum Neuzeichnen eines Teils des Objekts von OnChartEvent in dem Moment aufgerufen, in dem sich die Mauskoordinate ändert und die Maus gedrückt wird, und OnChartEvent hat diesen Status, warum sollte man ihn in die Window-Struktur einbetten?
Würde man dasselbe nicht von OnChartEvent aus tun und gleichzeitig in der Instanz W der Window-Struktur MouseStatus vorhanden sein, müsste man eine Endlosschleife zur Abfrage dieses Parameters (MouseStatus) organisieren, um den Moment des Loslassens der Maustaste zu erwischen, was die CPU zum Stillstand bringen würde.
Diese Schleife ist nicht nur bei OnChartEvent notwendig.
Ich möchte nur sagen, dass es möglich und notwendig ist, den Status der Maustaste nur in OnChartEvent zu verwenden, wo er bereits vorhanden ist.
Wenn ich falsch liege, geben Sie mir bitte ein konkretes Beispiel, wo dieser Status nicht von OnChartEvent benötigt würde.
Wenn ich falsch liege, geben Sie bitte ein konkretes Beispiel, in dem dieser Status von etwas anderem als OnChartEvent angefordert wird.
Ich habe oben ein Beispiel geschrieben, alles funktioniert gut)
In OnChartEvent, wenn die Maus bewegt wird, ändern wir die Parameter und geben den Befehl, die Leinwand neu zu zeichnen. Ohne einen Parameter in der Struktur müssten wir sparam an ein Objekt übergeben, von dort an ein anderes Objekt und von dort an die Methode Draw().
Die Mauskoordinaten sind eine andere Sache. Die aktuellen Mauskoordinaten sind keine Ereignisinformation. Das Ereignis ist ihre Änderung.
Es kann vorkommen, dass die Mauskoordinaten außerhalb von OnChartEvent benötigt werden. Zum Beispiel, hier.
Nun, wenn Sie die Maus ziehen, wird der Befehl zum Neuzeichnen eines Teils des Objekts von OnChartEvent in dem Moment aufgerufen, in dem sich die Mauskoordinate ändert und die Maustaste gedrückt ist, und OnChartEvent hat diesen Status, warum sollte es in die Window-Struktur eingebettet werden?
Wenn Sie dasselbe nicht von OnChartEvent aus tun würden und gleichzeitig in der Instanz W der Window-Struktur MouseStatus vorhanden wäre, müssten Sie eine Endlosschleife der Abfrage dieses Parameters (MouseStatus) organisieren, um den Moment des Loslassens der Maustaste zu erwischen, was die CPU zum Stillstand bringen würde.
Diese Schleife wird nicht nur in OnChartEvent benötigt.
Ich möchte nur sagen, dass Sie den Status der Maustaste nur in OnChartEvent verwenden können und sollten, da er dort bereits vorhanden ist.
Wenn ich falsch liege, dann geben Sie mir ein konkretes Beispiel, wo dieser Status nicht von OnChartEvent benötigt würde.
Sehr seltsame Argumentation. Es gibt überhaupt keine Logik.
Sowohl Mauskoordinaten als auch gedrückte Tasten sind externe Zustände. Sie werden über Parameter an den Handler übergeben, und wenn sie in den internen Variablen des Objekts abgelegt werden (was sicherlich nützlich ist), sollten sie dort als Ganzes und nicht in Teilen vorhanden sein. Eine Bibliothek ist per Definition etwas, das nicht für den eigenen Bedarf, sondern in verallgemeinerter Form und unter Berücksichtigung der potenziellen Bedürfnisse anderer erstellt wird. Man kann nicht alle Bedürfnisse im Voraus kennen, also macht man keine künstlichen Einschränkungen wie diese.
Ich habe oben ein Beispiel geschrieben, alles funktioniert gut)
In OnChartEvent, wenn die Maus bewegt wird, ändern wir die Parameter und geben den Befehl, die Leinwand neu zu zeichnen. Ohne einen Parameter in der Struktur müssten wir sparam an ein Objekt übergeben, von dort an ein anderes Objekt und von dort an die Methode Draw().
Dies ist ein Klassiker des Genres - in allen Fensterbibliotheken werden die Zustände der Maustasten in einer einzigen Struktur mit den Cursor-Koordinaten übergeben.
weil sie alle zusammen eine Entität beschreiben und überhaupt nicht getrennt werden können.
Ich schlage vor, den Maustastenstatus hinzuzufügen. Es hat keinen Einfluss auf die Geschwindigkeit, aber es kann nützlich sein)
Ich schlage vor, den Maustastenstatus hinzuzufügen. Es hat keinen Einfluss auf die Geschwindigkeit, aber es kann nützlich sein)
Ich kann dem nicht zustimmen, da ich darin nicht viel Sinn sehe.
Der Punkt ist, dass der Status von Maustasten und Tasten ein Ereignismodell ist, das nur dort verarbeitet werden sollte, wo das Auftreten dieses Ereignisses abgefangen wird, nämlich in OnChartEvent.
Sie werden keine Endlosschleife zur Abfrage des Auftretens eines Ereignisses außerhalb des Ereignishandlers einschränken. Welchen Sinn hat es also, diesen Status außerhalb von OnChartEvent zu platzieren, wenn die gesamte Verarbeitung dieser Klicks in OnChartEvent erfolgen sollte, dessen Status sich in lparam und sparam befindet.
Außer dem Zweck, eine neue Struktur der Mausereigniskennungen einzuführen, um die Lesbarkeit des Codes zu verbessern.
Ich kann dem nicht zustimmen, da ich darin keinen Sinn sehe.
Der Punkt ist, dass der Status von Maustasten und Tasten ein Ereignismodell ist, das nur dort behandelt werden sollte, wo das Auftreten dieses Ereignisses abgefangen wird, nämlich in OnChartEvent.
Sie werden keine Endlosschleife zur Abfrage des Auftretens eines Ereignisses außerhalb des Event-Handlers einschränken. Welchen Sinn hat es also, diesen Status außerhalb von OnChartEvent zu platzieren, wenn die gesamte Verarbeitung dieser Klicks in OnChartEvent erfolgen sollte, dessen Status sich in lparam und sparam befindet.
Außer dem Zweck, eine neue Struktur der Mausereigniskennungen einzuführen, um die Lesbarkeit des Codes zu verbessern.
Und warum dann die Mauskoordinaten speichern? ) Auch ereignisgesteuert )
Das mit der Schleife habe ich nicht verstanden...
Insbesondere brauchte ich den Status, um zu vermeiden, dass ein Teil des Objekts beim Ziehen mit der Maus gezeichnet wird.
Warum dann Mauskoordinaten speichern? ) Auch ereignisgesteuert )
Mauskoordinaten sind eine andere Sache. Die aktuellen Mauskoordinaten sind keine Ereignisinformation. Das Ereignis ist ihre Änderung.
Es kann vorkommen, dass Mauskoordinaten außerhalb von OnChartEvent benötigt werden. Zum Beispiel, hier.
Ich habe das mit der Schleife nicht verstanden...
Insbesondere wurde der Status benötigt, um zu vermeiden, dass ein Teil des Objekts beim Ziehen mit der Maus gezeichnet wird.
Nun, wenn man die Maus zieht, wird der Befehl zum Neuzeichnen eines Teils des Objekts von OnChartEvent in dem Moment aufgerufen, in dem sich die Mauskoordinate ändert und die Maus gedrückt wird, und OnChartEvent hat diesen Status, warum sollte man ihn in die Window-Struktur einbetten?
Würde man dasselbe nicht von OnChartEvent aus tun und gleichzeitig in der Instanz W der Window-Struktur MouseStatus vorhanden sein, müsste man eine Endlosschleife zur Abfrage dieses Parameters (MouseStatus) organisieren, um den Moment des Loslassens der Maustaste zu erwischen, was die CPU zum Stillstand bringen würde.
Diese Schleife ist nicht nur bei OnChartEvent notwendig.
Ich möchte nur sagen, dass es möglich und notwendig ist, den Status der Maustaste nur in OnChartEvent zu verwenden, wo er bereits vorhanden ist.
Wenn ich falsch liege, geben Sie mir bitte ein konkretes Beispiel, wo dieser Status nicht von OnChartEvent benötigt würde.
Wenn ich falsch liege, geben Sie bitte ein konkretes Beispiel, in dem dieser Status von etwas anderem als OnChartEvent angefordert wird.
Ich habe oben ein Beispiel geschrieben, alles funktioniert gut)
In OnChartEvent, wenn die Maus bewegt wird, ändern wir die Parameter und geben den Befehl, die Leinwand neu zu zeichnen. Ohne einen Parameter in der Struktur müssten wir sparam an ein Objekt übergeben, von dort an ein anderes Objekt und von dort an die Methode Draw().
Die Mauskoordinaten sind eine andere Sache. Die aktuellen Mauskoordinaten sind keine Ereignisinformation. Das Ereignis ist ihre Änderung.
Es kann vorkommen, dass die Mauskoordinaten außerhalb von OnChartEvent benötigt werden. Zum Beispiel, hier.
Nun, wenn Sie die Maus ziehen, wird der Befehl zum Neuzeichnen eines Teils des Objekts von OnChartEvent in dem Moment aufgerufen, in dem sich die Mauskoordinate ändert und die Maustaste gedrückt ist, und OnChartEvent hat diesen Status, warum sollte es in die Window-Struktur eingebettet werden?
Wenn Sie dasselbe nicht von OnChartEvent aus tun würden und gleichzeitig in der Instanz W der Window-Struktur MouseStatus vorhanden wäre, müssten Sie eine Endlosschleife der Abfrage dieses Parameters (MouseStatus) organisieren, um den Moment des Loslassens der Maustaste zu erwischen, was die CPU zum Stillstand bringen würde.
Diese Schleife wird nicht nur in OnChartEvent benötigt.
Ich möchte nur sagen, dass Sie den Status der Maustaste nur in OnChartEvent verwenden können und sollten, da er dort bereits vorhanden ist.
Wenn ich falsch liege, dann geben Sie mir ein konkretes Beispiel, wo dieser Status nicht von OnChartEvent benötigt würde.
Sehr seltsame Argumentation. Es gibt überhaupt keine Logik.
Sowohl Mauskoordinaten als auch gedrückte Tasten sind externe Zustände. Sie werden über Parameter an den Handler übergeben, und wenn sie in den internen Variablen des Objekts abgelegt werden (was sicherlich nützlich ist), sollten sie dort als Ganzes und nicht in Teilen vorhanden sein. Eine Bibliothek ist per Definition etwas, das nicht für den eigenen Bedarf, sondern in verallgemeinerter Form und unter Berücksichtigung der potenziellen Bedürfnisse anderer erstellt wird. Man kann nicht alle Bedürfnisse im Voraus kennen, also macht man keine künstlichen Einschränkungen wie diese.
Ich habe oben ein Beispiel geschrieben, alles funktioniert gut)
In OnChartEvent, wenn die Maus bewegt wird, ändern wir die Parameter und geben den Befehl, die Leinwand neu zu zeichnen. Ohne einen Parameter in der Struktur müssten wir sparam an ein Objekt übergeben, von dort an ein anderes Objekt und von dort an die Methode Draw().
Dies ist ein Klassiker des Genres - in allen Fensterbibliotheken werden die Zustände der Maustasten in einer einzigen Struktur mit den Cursor-Koordinaten übergeben.
weil sie alle zusammen eine Entität beschreiben und überhaupt nicht getrennt werden können.
aktualisiert auf Version 1.29
neu:
1. Hinzufügen der folgenden Defines zur Vereinfachung der Codeerstellung und zur Verbesserung der Lesbarkeit:
2. Hinzufügen des Parameters MouseStatus zur Window-Struktur, der 4 Werte annehmen kann, wie von den Workern gefordert: