2008-09-06 13 views
2

Ich erstelle ein benutzerdefiniertes win32-Steuerelement/Widget und möchte den Cursor in ein horizontales "Splitter" -Symbol ändern, wenn ich über eine bestimmte vertikale Linie im Steuerelement schwebe. IE: Ich möchte diese vertikale Linie (Trennbalken) links und rechts (WEST und EAST) ziehen.Wo befindet sich die Win32-Ressource für den Mauszeiger zum Ziehen von Teilern?

Von den Systemcursor (OCR_ *), der einzige Cursor, der Sinn macht, ist das OCR_SIZEWE. Leider ist das der große, umständliche Cursor, den das System bei der Größenänderung eines Fensters verwendet. Stattdessen suche ich nach dem Cursor, der ungefähr 20 Pixel hoch und ungefähr 3 oder 4 Pixel breit ist, mit zwei kleinen Pfeilen, die nach links und rechts zeigen.

Ich kann dies leicht zeichnen und es als Ressource in meiner Anwendung enthalten, aber der Cursor selbst ist so weit verbreitet, dass ich sicher sein wollte, dass es etwas nicht fehlte.

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

Antwort

4

In der 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önnen Sie das Modul, in dem sie sich befinden, immer noch laden und benutzen, aber es gibt keine Garantie, dass Ihr Programm nach einem Systemupdate/-upgrade weiter funktioniert.

Fügen Sie Ihre eigenen hinzu. Das letzte, was Sie wollen, ist eine zusätzliche Abhängigkeit über einen winzigen kleinen Cursor hinzuzufügen.

0

Ich hatte genau dieses Problem. Wenn ich für einen vertikalen Splitter Denken über einige alte Code sah wieder eine einfache Antwort, die ich hatte, stellte sich heraus, dass ich bauen und meine eigene Ressource geladen:

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

Ich erinnere mich vage, eine beträchtliche Zeit und Mühe in Fund investieren Die Systemmethode, es zu tun, so (meine Vermutung) ist, dass es kein System ICON bereitwillig zur Verfügung stellt, um die Arbeit zu erledigen, also sind Sie besser dran, Ihre eigenen zu rollen.

Dies ist eine der Zeiten, in denen ich mich irren möchte, da ich gerne ein System-Icon für diesen Job hätte.