Подскажите пожалуйста, как можно отловить смену курсора? Имеется ввиду внешний вид указателя мыши(например стрелка или рука).
LoadCursor причем сдесь вообще это фукция ? это только создают курсор и возврощает его описатель. WM_SETCURSOR, SetClassLong(, GCL_HCURSOR, ) так же не стоит забывать про рег в классе окна RegisterClass;
shchetinin Дизайн или стиль Windows определяется содержимым файла "shell32.dll", там курсоры, иконки и пр. При создании окна обычно используют IDI_APPLICATION-иконку и IDC_ARROW-курсор. Как загрузить любой курсор из shell32.dll?
LoadCursor(GetModuleHandleW(L"shell32.dll"), ID) ? что вы от этого хотите? Ну курсор прогрузится а для окна не будет установлен. BYTE ANDmaskCursor[] = {}; BYTE XORmaskCursor[] = {}; CreateCursor( hinst, // app. instance 19, // horizontal position of hot spot 2, // vertical position of hot spot 32, // cursor width 32, // cursor height ANDmaskCursor, // AND mask XORmaskCursor ); // XOR mask И shell32.dll не нужет. Конкретизируете вопрос.
shchetinin Через HackRes я узнал ID понравившегося курсора в shell32.dll, как я должен установить/загрузить/отобразить этот курсор для своего окна?
кажется нашел! Код (Text): ; uType: IMAGE_BITMAP := 0x0 IMAGE_CURSOR := 0x2 IMAGE_ICON := 0x1 ; Size: cx := 48, cy := cx ; fuLoad: LR_COLOR := 0x2 LR_CREATEDIBSECTION := 0x2000 LR_DEFAULTSIZE := 0x40 LR_LOADFROMFILE := 0x10 LR_LOADMAP3DCOLORS := 0x1000 Module = %A_WinDir%\SYSTEM32\SHELL32.DLL ModuleHandle := DllCall("GetModuleHandleA", Str,Module) CursorHandle := DllCall( "LoadImageA", Uint,ModuleHandle, Str,Cursor, Uint,IMAGE_ICON, Int,cx, Int,cy, UInt,0x10 )
П.С тогда и используйте LoadIcon , хотя конечно можно использовать LoadImage, но это общая функция -> Описатели HICON, HCURSOT могут вальироватяс от версии к версии.
shchetinin GetModuleHandleW(L"shell32.dll") возвращает ноль даже если я передаю полный путь к shell32.dll