Создание Эльфов : Эльфостроение : Форум

Страница 163 из 211: « 1 ... 159 160 161 162 [163] 164 165 166 167 ... 211 »

 blacklizard:
07.02.11, 18:14
 cachok9999, if i were to to redraw the volume bar, i will make a patch to send disp_obj pointer to elf..

 blacklizard:
07.02.11, 19:02
 cachok9999, w995_r1ha035

Код: 
include "x.inc"
include "lib.asm"

org 0x14F98570
dw New+1    


org 0x15E740F0
New:    
        PUSH {R0-R7,LR}
        LDR    R0, off_IsVolumeRedrawBook
        LDR    R6, off_FindBook
        BLX    R6        
        CMP    R0, 0
        BEQ    loc_If_No
        LDR    R5, [R0,0x18]
        LDR    R0, [SP]
        BLX    R5
        B    send_data
loc_If_No:                
        LDR    R0, [SP]
        LDR    R1, [SP,4]
        LDR    R2, [SP,8]
        LDR    R3, [SP,0xC]
        LDR    R7, off_DefaultRedraw
        BLX    R7
send_data:                                
        MOV    R2, 0
        LDR    R1, [SP]
        LDR    R0, dword_event
        LDR    R7, off_UI_Event_wData
        BLX    R7        
        POP    {R0-R7,PC}
IsVolumeRedrawBook:                
        PUSH    {LR}
        CMP    R0, 0
        BEQ    return_0
        LDR    R0, [R0]
        LDR    R0, [R0,4]
        adr    R1, aVolumeRedraw    
        LDR    R3, off_strcmp
        BLX    R3        
        CMP    R0, 0
        BEQ    return_1
return_0:                
        MOV    R0, 0
        POP    {PC}
return_1:                
        MOV    R0, 1
        POP    {PC}
        align 4
off_DefaultRedraw        dw 0x14D66B3C+1    
dword_event                dw 0x3030        
off_FindBook            dw FindBook+1                        
off_strcmp                dw strcmp+1                            
off_IsVolumeRedrawBook    dw IsVolumeRedrawBook+1    
off_UI_Event_wData        dw UI_Event_wData+1                    
aVolumeRedraw           db "Volume_Redraw",0



Добавлено 8.2.11 00:08

on my phone


 den_po:
09.02.11, 00:30
 не нужно никаких патчей. сейчас я обновил эльфлоадер (через несколько минут будет на моём сайте), с новым хуком можно получить гуй/дисп после вызова обработчика PAGE_ENTER_EVENT нужной буки (именно там гуй и создаётся).
кусок примера:
Код: 

...

    //ставим хук
    ModifyUIPageHook(PAGE_ENTER_EVENT, HookCB, 0, 2);

..

int HookCB(void *msg, BOOK* book, PAGE_DESC * page_desc, LPARAM ClientData)
{
    debug_printf("\n!!! book '%s', page '%s'\n", book->xbook->name, page_desc->name);
    
    if( !strcmp(book->xbook->name, "VolumeControlBook") &&
       !strcmp(page_desc->name,"VolumeControl_Active_Page") )
    {
        
        debug_printf("\n!!! guilist size %d\n", book->xguilist->guilist->FirstFree);
        if( book->xguilist->guilist->FirstFree )
        {
            debug_printf("\n!!! guilist[0]=%s\n", DispObject_GetName( GUIObject_GetDispObject( (GUI*) List_Get(book->xguilist->guilist,0) ) ) );
        }            
    }
    
    return 0;
}


в результате при выводе на экран регулятора громкости в логе имеем:
11424348 !!! book 'VolumeControlBook', page 'VolumeControl_Active_Page'
11424348 !!! guilist size 1
11424348 !!! guilist[0]=VolumeControl

убийство можно отловить либо через подменённый ondelete нужного диспа, либо например при вызове страницы
11425223 !!! book 'VolumeControlBook', page 'VolumeControl_Idle_Page'


Добавлено 9.2.11 00:33

выкладываю исходники этого же примера, но с использованием класслиб (немножко не до конца вычистил хвосты другого эльфа, но оно не мешает)

 den_po:
09.02.11, 12:10
 вышеприведённый пример больше касается работы с гуями конкретной книги. а если переделать вот так
Код: 
    debug_printf("\n!!! book '%s', page '%s'\n", book->xbook->name, page_desc->name);
    
    int sz = book->xguilist->guilist->FirstFree;
    debug_printf("\n!!! guilist size %d\n", sz);
    for(int i=0; i< book->xguilist->guilist->FirstFree; i++ )
    {
        debug_printf("\n!!!   guilist[%d]=%s\n", i, DispObject_GetName( GUIObject_GetDispObject( (GUI*) List_Get(book->xguilist->guilist, i) ) ) );
    }            
    
    return 0;

можно будет наблюдать все гуи любых книг

577475 !!! book 'ScreensaverBook', page 'Screensaver_LockMain_Page'
577475 !!! guilist size 1
577475 !!! guilist[0]=Keylock

578852 !!! book 'MenuBook', page 'Menu_First_Page'
578852 !!! guilist size 1
578852 !!! guilist[0]=MainMenu
578852 !!! book 'MenuBook', page 'Menu_Init_Page'
578852 !!! guilist size 1
578852 !!! guilist[0]=MainMenu

582662 !!! book 'BookManager', page 'BookManager_Main_Page'
582662 !!! guilist size 3
582662 !!! guilist[0]=TabMenuBar
582662 !!! guilist[1]=ListObject
582662 !!! guilist[2]=ListObject

584248 !!! book 'DataBrowserBook', page 'DataBrowser_Main_Page'
584248 !!! guilist size 5
584248 !!! guilist[0]=TabMenuBar
584248 !!! guilist[1]=ListObject
584248 !!! guilist[2]=ListObject
584248 !!! guilist[3]=ListObject
584248 !!! guilist[4]=Feedback

 cachok9999:
09.02.11, 14:26
 den_po,
When i want to compilate your example i have this error

Код:
Error[e117]: Incompatible runtime models. Module func specifies that '__dlib_file_descriptor' must be '1', but module ?xcloseall has the value '0'


can you explain where is the problem, i cant find it...

thanks in advance

[ Редактировано cachok9999 в 9.2.11 13:27 ]

 den_po:
09.02.11, 14:30
 cachok9999,
1) update all includes
2) try to change project/options/general options/library configuration/library

 cachok9999:
09.02.11, 14:36
 den_po,
thanks i solve the problem, only change library normal to full

 den_po:
09.02.11, 20:08
 эльфмейкерам на заметку. декодирование утф-8

Код: 
    STRID_DATA utf8str;
    
    utf8str.lenght = SID_ANY_LEN;
    utf8str.flag = 8;
    utf8str.ptr = (char*) "тест СѓС‚С„8";
    
    STRID id = Str2ID( &utf8str, 8, SID_ANY_LEN );

    //если нужно в массив wchar_t
    //wchar_t temp[256];
    //TextID2wstr( id, temp, MAXELEMS(temp) );

    MessageBox(EMPTY_SID, id, NOIMAGE, 1, 0, 0);



Добавлено 9.2.11 21:53

"flag" я скоро переименую в "encoding", имейте в виду


Добавлено 9.2.11 22:11

заодно и 9й тип расковырял
http://supertrubka.org/wiki/doku.php?id=elflib:functions:str2id

 blacklizard:
10.02.11, 01:36
 den_po, you mean by decoding UTF-8 string, we can use special characters? I don't get it.
I read here but dont get it
http://en.wikipedia.org/wiki/UTF-8


By the way, can you please add this constant to SVN?

UI_MEDIAPLAYER_NEW_TRACK_EVENT

W995 R1HA035 = 0x40E2

This constant have this struct


Код: 
typedef struct
{
  char dummy[0x28];
  int track_id;
  TIME_int ElapsedTime;
  char dummy_1[0x24];
  TIME_int FullTime;
}UI_MEDIAPLAYER_NEW_TRACK_DATA;//DB3210


Thanks in advance

 zylka:
11.02.11, 01:31
 den_po, logbooks will reset at the entrance to contacts.
My new elf based on ModifyUIPageHook (PAGE_ENTER_EVENT...
also

What is the cause?
Страница 163 из 211: « 1 ... 159 160 161 162 [163] 164 165 166 167 ... 211 »

URL этой темы:
https://mobilefree.justdanpo.ru/newbb_plus/viewtopic.php?topic_id=2479&start=1620

© 2005-2018 supertrubka.org