Avatar billede semiprofkode Nybegynder
12. juli 2006 - 18:31 Der er 2 kommentarer

pointer/handle/cursor problem

Hej, min kode virker fint nok, jeg får en cursorinfostruct med cursorens position osv., men jeg skal bare tjekke om cursoren er
"hånden" eller ej. Det kan jeg ikke finde ud af, mest fordi jeg ikke forstår helt hvad "handle" og "pointer" er. Pointene går til den eller dem som kan forklare forskellen, løse problemet, og evt. korrigere min terminologi.


public struct CursorInfoStruct
{
    public Int32 cbSize;
    public Int32 flags;
        public IntPtr hCursor;
    public Point ptScreenPos;
}
[DllImport ("user32.dll")]
static extern bool GetCursorInfo(out CursorInfoStruct pci);

......

pci=new CursorInfoStruct();
pci.cbSize=Marshal.SizeOf(pci);
GetCursorInfo(out pci);
           
Bitmap bm1=Icon.FromHandle(CopyIcon(pci.hCursor)).ToBitmap();
Bitmap bm2=Icon.FromHandle(CopyIcon(Cursors.Hand.Handle)).ToBitmap();

if (bm1.Equals(bm2)) ...............
Avatar billede jens_klinting Nybegynder
13. juli 2006 - 20:38 #1
Jeg ved ikke hvilken kontekst din kode indgår i, men det virker umiddelbart som en temmelig besværlig måde at undersøge om den nuværende cursor er en hånd.

Generelt er det ikke ønkværdigt at basere sin kode på P/Invoke. Der er selvfølgelig situationer, hvor det er den eneste mulighed. Men man når langt med de managed API'er .NET frameworket stiller til rådighed.

Følgende skulle klare det:

if (System.Windows.Forms.Cursor.Current == System.Windows.Forms.Cursors.Hand)
{
  // Do something
}

Mvh.
Jens
Avatar billede semiprofkode Nybegynder
14. juli 2006 - 08:40 #2
Jeg er ret sikker på det var det første jeg prøvede, og konkluderede det ikke virkede globalt, dvs. uden for min egen form. Har lige prøvet igen med samme resultat.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester