Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: Hiiren kursorin muuttaminen

HenuGO [30.10.2009 22:07:21]

#

Olen tekemässä pientä ohjelmanpätkää mittojen ottamiseen ruudulta. Ohjelma toimii jo ihan ok, mutta pientä säätöä vielä löytyy. Eli haluaisin vaihtaa hiiren osoittimen Cursors.Cross -tyyppiseksi mittapisteiden syötön ajaksi. Ongelmani on se, etten saa kursoria vaihdettua toimimaan ohjelman ulkopuolella.

Ohjelmaa voi kokeilla osoitteen:
http://koti.mbnet.fi/henu/ScaleStix/ScaleStix.exe
kautta.

Eli kun painetaan vaikka "Start ref" -nappia niin ohjelma minimoi itsensä. Haluaisin että hiiren osoitin muutettaisiin samalla ristiksi pisteiden syötön ajaksi. Tämän jälkeen sen pitäisi taas muuttua defaultiksi.

Onko kellään siis ratkaisua tähän?

Kyseessä on siis VB .NET

erkkipetteri [31.10.2009 11:47:40]

#

VB.Netistä en tiiä, vaan kutosessa hoituu tähän tapaan:

Private Declare Function CopyIcon Lib "user32" (ByVal hIcon As Long) As Long
Private Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
Private Declare Function SetSystemCursor Lib "user32" (ByVal hcur As Long, ByVal id As Long) As Long
Private Declare Function GetCursor Lib "user32" () As Long
Private Const OCR_NORMAL As Long = 32512
Private Const OCR_CROSS As Long = 32515
Private TempCursor As Long
Private NewCursor As Long
Private Path As String

Private Function ChangeCursor(CursorPath As String, CursorType As Long) As Long
ChangeCursor = CopyIcon(GetCursor())
NewCursor = LoadCursorFromFile(CursorPath)
Call SetSystemCursor(NewCursor, CursorType)
End Function

Private Sub Command1_Click()
Path = InputBox("Anna uuden kurson polku", "Anna polku")
TempCursor = ChangeCursor(Path, OCR_CROSS)
End Sub

Private Sub Command2_Click()
Call SetSystemCursor(TempCursor, OCR_CROSS)
End Sub

HenuGO [31.10.2009 12:49:37]

#

Jeps.

Löysin tuon VB6-ratkaisun googlestakin, mutta en kyllä ole ainakaan vielä saanut pelamaan tuossa minun ohjelmassani. Kokeilin tähän tapaan:

    Private Declare Function CopyIcon Lib "user32" (ByVal hIcon As Long) As Long
    Private Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
    Private Declare Function SetSystemCursor Lib "user32" (ByVal hcur As Long, ByVal id As Long) As Long
    Private Declare Function GetCursor Lib "user32" () As Long
    Private Const OCR_NORMAL As Long = 32512
    Private Const OCR_CROSS As Long = 32515
    Private TempCursor As Long
    Private NewCursor As Long
    Private Path As String


 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        NewCursor = LoadCursorFromFile("C:\Windows\Cursors\cross.cur")
        Call SetSystemCursor(NewCursor, OCR_CROSS)

End Sub

Käytän Win vistaa. En tiedä että voisiko tässä olla joku sellainen juttu ettei vistan turvaominaisuudet anna ulkoisen ohjelman vaihtaa kursoria???

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta