Смена курсора.

Тема в разделе "WASM.WIN32", создана пользователем Euler, 2 окт 2011.

  1. Euler

    Euler New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2009
    Сообщения:
    56
    Подскажите пожалуйста, как можно отловить смену курсора? Имеется ввиду внешний вид указателя мыши(например стрелка или рука).
     
  2. onSide

    onSide New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    476
    Сделай LoadCursor и посмотри какие сообщения шлются.
     
  3. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    LoadCursor причем сдесь вообще это фукция ? это только создают курсор и возврощает его описатель.


    WM_SETCURSOR, SetClassLong(, GCL_HCURSOR, ) так же не стоит забывать про рег в классе окна RegisterClass;
     
  4. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    shchetinin
    а как загрузить курсор или иконку в собственное создаваемое окно из shell32.dll?
     
  5. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    Установить курсор и загрузить объект курсора? Не могли бы вы более подробно задавать вопрос?
     
  6. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    shchetinin
    Дизайн или стиль Windows определяется содержимым файла "shell32.dll", там курсоры, иконки и пр. При создании окна обычно используют IDI_APPLICATION-иконку и IDC_ARROW-курсор. Как загрузить любой курсор из shell32.dll?
     
  7. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    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 не нужет.

    Конкретизируете вопрос.
     
  8. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    shchetinin
    Через HackRes я узнал ID понравившегося курсора в shell32.dll, как я должен установить/загрузить/отобразить этот курсор для своего окна?
     
  9. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    LoadCursor((HINSTANCE)GetModuleHandleW(L"shell32.dll"), ID_понравившегося курсора в shell32.dl)
     
  10. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    кажется нашел!
    Код (Text):
    1. ; uType:
    2. IMAGE_BITMAP := 0x0
    3. IMAGE_CURSOR := 0x2
    4. IMAGE_ICON := 0x1
    5.  
    6. ; Size:
    7. cx := 48, cy := cx
    8.  
    9. ; fuLoad:
    10. LR_COLOR := 0x2
    11. LR_CREATEDIBSECTION := 0x2000
    12. LR_DEFAULTSIZE := 0x40
    13. LR_LOADFROMFILE := 0x10
    14. LR_LOADMAP3DCOLORS := 0x1000
    15.  
    16. Module = %A_WinDir%\SYSTEM32\SHELL32.DLL
    17. ModuleHandle := DllCall("GetModuleHandleA", Str,Module)
    18. CursorHandle := DllCall( "LoadImageA", Uint,ModuleHandle, Str,Cursor, Uint,IMAGE_ICON, Int,cx, Int,cy, UInt,0x10 )
     
  11. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    Mikl___
    Вы не курсор грузите а IMAGE_ICON.
     
  12. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    П.С тогда и используйте LoadIcon , хотя конечно можно использовать LoadImage, но это общая функция -> Описатели HICON, HCURSOT могут вальироватяс от версии к версии.
     
  13. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    shchetinin
    GetModuleHandleW(L"shell32.dll") возвращает ноль даже если я передаю полный путь к shell32.dll [​IMG]