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 SubJeps.
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 SubKä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.