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.
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
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
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???
Aihe on jo aika vanha, joten et voi enää vastata siihen.