Frage

Ich erstelle ein benutzerdefiniertes Win32-Steuerelement/Widget und möchte den Cursor in ein horizontales „Splitter“-Symbol ändern, wenn ich mit der Maus über eine bestimmte vertikale Linie im Steuerelement fahre.IE:Ich möchte diese vertikale Linie (Trennleiste) nach links und rechts (WEST und OST) ziehen.

Von den Systemcursorn (OCR_*) ist der einzige sinnvolle Cursor der OCR_SIZEWE.Leider ist dies der große, unhandliche Cursor, den das System beim Ändern der Fenstergröße verwendet.Stattdessen suche ich nach dem Cursor, der etwa 20 Pixel hoch und etwa 3 oder 4 Pixel breit ist und zwei kleine Pfeile aufweist, die nach links und rechts zeigen.

Ich kann dies leicht zeichnen und als Ressource in meine Anwendung einbinden, aber der Cursor selbst ist so weit verbreitet, dass ich sicher sein wollte, dass ihm nichts fehlt.

Zum Beispiel:Wenn Sie den COM-Drag-and-Drop-Mechanismus (CLSID_DragDropHelper, IDropTarget usw.) verwenden, haben Sie implizit Zugriff auf das „Drag“-Symbol (kleines Kästchen unter dem Zeiger).Ich habe für diesen Kerl keine explizite OCR_*-Konstante gesehen ...Wenn ich diesen Splitter-Cursor also nicht direkt finden kann, frage ich mich, ob er Teil eines COM-Objekts oder etwas anderes in der Win32-Bibliothek ist.

War es hilfreich?

Lösung

In der gesamten Windows-Benutzeroberfläche werden alle Arten von Symbolen, Cursorn und Bildern verwendet, die für Software von Drittanbietern nicht öffentlich verfügbar sind.Natürlich könnten Sie immer noch das Modul laden, in dem sie sich befinden, und sie verwenden, aber es gibt wirklich keine Garantie dafür, dass Ihr Programm nach einem Systemupdate/-upgrade weiterhin funktioniert.

Fügen Sie Ihre eigenen hinzu.Das Letzte, was Sie wollen, ist das Hinzufügen einer zusätzlichen Abhängigkeit über einen winzigen kleinen Cursor.

Andere Tipps

Ich hatte genau dieses Problem.Als ich mir einen alten Code für einen vertikalen Splitter noch einmal ansah und dachte, ich hätte eine einfache Antwort, stellte sich heraus, dass ich meine eigene Ressource erstellt und geladen hatte:

SetCursor( LoadCursor( ghInstance, "IDC_SPLITVERT" ));

Ich kann mich dunkel daran erinnern, dass ich beträchtliche Zeit und Mühe investiert habe, um das System dafür zu finden. Ich vermute also, dass kein System-ICON zur Verfügung steht, um diese Aufgabe zu erledigen. Daher ist es besser, wenn Sie Ihr eigenes System erstellen.

Dies ist einer dieser Momente, in denen ich mich irren möchte, da ich mir für diesen Job ein Systemsymbol gewünscht hätte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top