Курсоры

Assembler programming questions
  • может так?

    Code: Select all

    mov eax,37
    mov ebx,4
    xor edx,edx
    mov ecx,path
    int 0x40
    
    path db '/rd/1/cursor.cur'
  • Veliant, дык говорю ж, что без использования внешних файлов.. ибо это ни к чему хорошему не приведет.
  • mov eax,37
    mov ebx,4
    mov edx,2
    mov ecx,cur
    int 0x40

    cur:
    db 0xaa, 0xrr, 0xgg, 0xbb ... так 32 раза
    db ... так 32 строки
    где аа - значение альфа-канала, rr - красный, gg - зеленый, bb - синий для каждого (!) пиксела
    А вообще это мазохизм :) Проще файл считать и не мучаться
  • Heavyiron wrote:А вообще это мазохизм :) Проще файл считать и не мучаться
    Я лублу помучаться..
    Если не секрет, а как эта структура на сишке выглядеть будет? Типа такого?

    Code: Select all

    char cur[32][4*32];
    
    // или даже так
    
    typedef unsigned __int32 Dword;
    Dword cur[32][32];
    
  • Ошибка при линковке через VS2005 :(

    Code: Select all

    void ChangeCursor()
    {
    	char cur[32*32*4];
    	__asm{
    		mov		eax, 37
    		mov		ebx, 4
    		mov		edx, 0x05050002
    		mov		ecx, cur
    		int		0x40
    	}
    }
    
    game.obj : error LNK2019: unresolved external symbol __chkstk referenced in function "void __cdecl ChangeCursor(void)" (?ChangeCursor@@YAXXZ)
  • Serial

    Ты решил загрузить курсор из стека ? Там сплошной мусор.
    И чем тебе не нравятся cur ? Их можно в VC сделать.

    Ладно, если тебе нравится raw ARGB, сохраняешь образ в файл и делаешь заглушку на асме

    Code: Select all

    format MS COFF
    
    public cursor1
    public cursor2
    
    section '.data' align 16 data readable writable
    
    cursor1:
    file 'cursor1.raw'
    cursor2:
    file 'cursor2.raw'
    
  • Serge wrote:Serial
    Ты решил загрузить курсор из стека ? Там сплошной мусор.
    И чем тебе не нравятся cur ? Их можно в VC сделать.
    Вот только что отладил работу...

    Code: Select all

    	Dword *cur = new Dword[1024];
    	for (int i = 0; i < 1024; i++)
    	{
    		cur[i] = 0x00000000;
    	}
    	delete[] cur;
    И кстати.. отказался от красивого курсора с помощью API :( ибо он очень сильно мерцает. Сделал его прозрачным, и буду рисовать курсор вручную в окне приложения.

    Всем спасибо за помощь!
  • Serial

    Он мерцает там где нет аппаратного курсора. А там где он есть начнёт мерцать твой вариант :(
  • Serge wrote:Serial

    Он мерцает там где нет аппаратного курсора. А там где он есть начнёт мерцать твой вариант :(
    а где есть аппаратный курсор?
  • в ati видеокартах radeon 9ххх
  • Heavyiron wrote:в ati видеокартах radeon 9ххх
    Хм.. а это уже интересно 8)
    Но всё равно имхо большинство юзеров будут с другими видюхами.

    [офф]Кстати, тяжело ли написать подобный драйвер для NVidia?[/офф]
  • Точнее аппаратный курсор должен работать на ATI 7500 - x850 и не работать на новых х1000+
  • На сколько я понял по постам Serge, проблема только в отсечении курсора?
  • Who is online

    Users browsing this forum: No registered users and 3 guests