Új hozzászólás Aktív témák
-
ArchElf
addikt
válasz Rodrighez #967 üzenetére
És itt egy hack:
public static void ChangeCursor(string path, Form Form)
{
Cursor cursor = new Cursor(LoadCursorFromFile(path));
Form.Cursor = cursor;
}
[DllImport("user32.dll", EntryPoint="LoadCursorFromFileW", CharSet=CharSet.Unicode)]
private static extern IntPtr LoadCursorFromFile(string str);Itt viszont vigyázni kell, hogy a LoadCursorFromFile egy handle-t hoz létre, amit ezzel a módszerrel nem tudsz felszabadítani. Amenyiben csak egy ikon kell egyszerre, belerakhatod a LoadCursorFromFile() hívás eredményét egy statikus változóba (de több esetén is berakhatod mondjuk egy HashTable-be) és amikor kilépsz, vagy kurzort váltasz, akkor fel kell szabadítani a handle-t egy CloseHandle hívással:
[DllImport("kernel32.dll", SetLastError=true)]
private static extern bool CloseHandle(IntPtr hObject);
[DllImport("user32.dll", EntryPoint="LoadCursorFromFileW", CharSet=CharSet.Unicode)]
private static extern IntPtr LoadCursorFromFile(string str);
private static IntPtr iconHandle;
public static void ChangeCursor(string path, Form Form)
{
if (iconHandle != null) CloseHandle(iconHandle);
iconHandle = LoadCursorFromFile(path)
Cursor cursor = new Cursor(iconHandle);
Form.Cursor = cursor;
}Persze ebből is hiányzik még a hibakezelés, mega form lezárásakor a handle felszabadítása.
AE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Steam, GOG, Epic Store, Humble Store, Xbox PC Game Pass, Origin Access, uPlay+, Apple Arcade felhasználók barátságos izgulós topikja
- Milyen okostelefont vegyek?
- Vicces képek
- Székesfehérvár és környéke adok-veszek-beszélgetek
- A fociról könnyedén, egy baráti társaságban
- EA Sports WRC '23
- Villanyszerelés
- Dell asztali gépek
- EAFC 24
- További aktív témák...