Curseur personalisé masm

Signaler
Messages postés
56
Date d'inscription
mardi 27 août 2002
Statut
Membre
Dernière intervention
4 février 2008
-
Messages postés
56
Date d'inscription
mardi 27 août 2002
Statut
Membre
Dernière intervention
4 février 2008
-
je cherche a mettre un curseur personalisé ( curseur.cur ) dans un de mes programmes mais j'ai du mal a utiliser l'api LoadCursorA ....
on m'a parler d'une api LoadCursorFromFile mais j'ai rien trouvé dessus

Cendra

11 réponses

Messages postés
85
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
19 mai 2003

je crois ke c pas LoadCursorFromFile mais LoadImage
dont la syntaxe est la suivante :

push LR_LOADFROMFILE ;c la le loadfromfile
push 0
push 0
push IMAGE_CURSOR ;specifie que c un curseur
push offset <str_fichier> ;l'offset de la var contenant le nom de ton fichier
push 0
call LoadImage

si tu vx utiliser LoadCursor c possible mais ds ce cas fo creer un fichier ressource a lier avec ton prog pis fo preciser l'instance de ton programme ds l'appel c tt

hum... mais il serait pas plus simple de poser ce genre de questions sur un forum C/Cpp ? je pense que tu obtiendrais des reponses plus rapidement
Messages postés
56
Date d'inscription
mardi 27 août 2002
Statut
Membre
Dernière intervention
4 février 2008
1
j'ai trouvé comment faire :)

dans l'asm :

invoke LoadCursor,hInstance,2000
invoke SetCursor,eax

dans le RC :

2000 CURSOR DISCARDABLE "test.cur"
Messages postés
85
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
19 mai 2003

ah je croyais que tu voulais le charger a partir d'un fichier. autrement LoadImage permet plus de possibilites que LoadCursor. sinon pr le SetCursor, vo pas mieux l'inclure directement ds la creation de la fenetre ? ds la struct WNDCLASSEX ? pk a moins que tu veuilles changer tt le tmps de curseur
Messages postés
56
Date d'inscription
mardi 27 août 2002
Statut
Membre
Dernière intervention
4 février 2008
1
en effet le curseur reste le meme tout le long de mon programme ,
peux tu me dire comment faire precisement pour le WNDCLASSEX ou une autre methode :)
Messages postés
85
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
19 mai 2003

le WNDCLASSEX (ya aussi WNDCLASS) c la classe de fenetre que tu utilises qd tu cree ta fenetre windows, tas bien du passer par la avant den arriver aux curseurs ?
bon ben cette structure possedent tt les membres necessaires pr donner une apparence a ta fenetre et dedans ya le membre hCursor qui est a la position 1ch qui permet d assigner un curseur a ta fenetre qd tu vas la creer

donc tu rajoutes ds l'initiation de la classe de fenetre a la place du traditionnel

.code

push IDC_ARROW ;charge un curseur fleche par defaut
push 0 ;aucune instance puiske curseur par defaut
call LoadCursor

mov [wc.hCursor],eax

bah tu vas ecrire :

.data

cursor db "mycur.cur",0

.code

push LR_LOADFROMFILE ;chargement a partir dune source externe
push 0 ;hauteur par defaut demandee
push 0 ;largeur par defaut demandee
push IMAGE_CURSOR ;specifie que l'image demandee est un curseur
push offset cursor ;charge ton curseur personalise
push 0 ;aucune instance puiske fichier externe
call LoadImage

mov [wc.hCursor],eax

voila c aps vraiment klr dsl (mais chui aps un bon prof ^^ g que 14ans ;p) mais si tu vx plus de precision, je pense quil serait bon voir tres bon de te procurer (si tu ne las pas deja le Win32 Developper's Reference, c de langlais mais c la meilleure reference offline pk online ya MSDN quest meilleur)
Messages postés
56
Date d'inscription
mardi 27 août 2002
Statut
Membre
Dernière intervention
4 février 2008
1
ca y est c'est j'ai mon joli curseur :)
mais les bontons créés avec BmpButton refusent de prendre en compte le curseur
Messages postés
85
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
19 mai 2003

question stupide mais... c koi BmpButton ?? pk si c une fonction de l'API je connais pas :/ on c jms, mes references datent un peu, v voir sur MSDN mais g jms entendu parle dune telle fonction
Messages postés
85
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
19 mai 2003

euh bah g aps trouve ce que ctait BmpButton mais si tu veux savoir comment faire pour que les boutons crees avec CreateWindow prennent aussi le curseur perso ya 2 solutions soit :

1°) Solution du galerien pur...
tu cree une classe de fenetre personnalisee avec ton curseur comme curseur par defaut
cette solution est tres fatiguante etd emande du temps dc c deconseille en + tu pourras plus profiter des models par defauts (aussi pas bo soient ils) de boutons de MS

2°) Bon alors la 2sd c de changer le curseur de ton bouton sans pour autant en creer une new classe, pour ca tu cree un bouton avec CreateWindow, normal puis apres tu fais

push hCur ;hCur est el handle de ton curseur
push GCL_HCURSOR ;indique que tu vas modifier le curseur
push hBttn ;ici hBttn est le handle de ton bouton
call SetClassLong

voila chai aps si ct ca que tu voulais sinon explike moi plus en details ce que tu vx dire par bouton cree avec BmpButton ?
Messages postés
56
Date d'inscription
mardi 27 août 2002
Statut
Membre
Dernière intervention
4 février 2008
1
c'est une fonction tirée de MASM32Lib

voila ces details:

BmpButton

BmpButton proc hParent:DWORD,topX:DWORD,topY:DWORD,

rnum1:DWORD,rnum2:DWORD,ID:DWORD

Description

BmpButton is a custom control that uses 2 bitmaps for the UP and DOWN positions.

Parameters
1. hParent The handle of the window that thew control will be displayed on.

2. topX The top "x" co-ordinate for the control.

3. topY The top "y" co-ordinate for the control.

4. rnum1 The resource ID for the UP position bitmap.

5. rnum2 The resource ID for the DOWN position bitmap.

6. ID The identification number to attribute to the control.

Return Value
The return value is the handle of the control.

Comments
This function allows the programmer to exactly control the appearance of the bitmap button. When the button is clicked, it sends a WM_COMMAND message to the parent on release as is normal for buttons.

This control should be processed in the message handling proc like a normal button, trap the WM_COMMAND message in the parent of the control and process the wParam parameter to obtain the control ID.
Messages postés
85
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
19 mai 2003

bon alors je connais rien de cette lib (je savais meme aps que ca existait ;) enfin par contre je connais un moyen de faire ce que tu cherches a faire cad un bouton avec une image qui change qd on appuie dessus et le curseur aussi
en fait ca repose sur les owner-drawn buttons, c un control cree un normallement avec le style BS_OWNERDRAW en +, apres lavoir cree tu geres le dessin de la surface du bouton en repondant au messages WM_DRAWITEM qui est envoye a la fonction callback de la fenetre parent a chaque fois ke le bouton est redessine
bon voila c lexplikation pr le code g mis un lien en dessous, c une source a moi qui est sur un compte multimania qui me sert pr les echanges et autres experimentations
pis sinon une page de MSDN pr mieux comprendre, la syntaxe est en C

si tas des questions (et vu comme mon source ets clair tud evaris en avoir rapidement ;p) poses les moi sur ce forum

MSDN

source
Messages postés
56
Date d'inscription
mardi 27 août 2002
Statut
Membre
Dernière intervention
4 février 2008
1
ce probleme est bien regler j'ai refait des sources pour cette fonction avec un paramettre en plus ( le curseur :) )

merci beaucoup pour ton aide