2008-09-06 14 views
2

Je construis un contrôle/widget personnalisé win32 et je voudrais changer le curseur en symbole "splitter" horizontal lorsque je survole une ligne verticale particulière dans le contrôle. IE: Je veux faire glisser cette ligne verticale (barre de séparation) à gauche et à droite (Ouest et Est). Parmi les curseurs système (OCR_ *), le seul curseur logique est OCR_SIZEWE. Malheureusement, c'est le grand curseur gênant que le système utilise lors du redimensionnement d'une fenêtre. Au lieu de cela, je cherche le curseur qui fait environ 20 pixels de haut et environ 3 ou 4 pixels de large avec deux petites flèches pointant vers la gauche et la droite.Où est la ressource Win32 pour le curseur de la souris pour faire glisser les séparateurs?

Je peux facilement dessiner ceci et l'inclure comme une ressource dans mon application mais le curseur lui-même est si répandu que je voulais être sûr qu'il ne manquait pas quelque chose. Par exemple: lorsque vous utilisez le mécanisme de glisser-déposer COM (CLSID_DragDropHelper, IDropTarget, etc.) vous avez implicitement accès à l'icône "glisser" (petite case sous le pointeur). Je n'ai pas vu de constante OCR_ * pour ce type ... de même, si je ne trouve pas ce curseur, je me demande s'il fait partie d'un objet COM ou autre chose dans la bibliothèque win32.

Répondre

4

Il existe toutes sortes d'icônes, de curseurs et d'images utilisés dans l'interface utilisateur de Windows qui ne sont pas accessibles au public pour les logiciels tiers. Bien sûr, vous pouvez toujours charger le module dans lequel ils résident et les utiliser, mais il n'y a aucune garantie que votre programme continuera à fonctionner après une mise à jour/mise à jour du système.

Incluez les vôtres. La dernière chose que vous voulez est d'ajouter une dépendance supplémentaire sur un minuscule petit curseur.

0

J'ai eu ce problème exact. Quand je me suis retourné sur un vieux code pour une pensée de séparation verticale avoir une réponse facile, il est apparu que je devais construire et charger ma propre ressource:

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

Je me souviens vaguement d'investir un peu de temps et d'efforts en trouver la façon de le faire, donc (à mon avis) est qu'il n'y a pas un ICON système facilement disponible pour faire le travail, donc il vaut mieux rouler le vôtre.

C'est un de ces moments où je voudrais me tromper, car j'aurais aimé qu'il y ait une icône système pour ce travail.