mobiles.lt

Autorius Tema: ***ELF'ų kurimas***  (Skaityta 14906 kartus)

  • Speed Dial

Neprisijungęs Denukas

Specialistas
****
I will be back... Įrašai: 1203 | Karma: +14/-1 | Lytis: Vyras
166 kreditai Žiūrėti inventorių Siųsti pinigus Denukas
***ELF'ų kurimas***
« Įrašytas: Sausio 31, 2008, 18:23 »
ELF'ų kurimas

Paprastų elfų kūrimas nereikalauja ypatingų programavimo žinių, bet be jų nesukūrsite nieko gero! Elfų kūrimas su "Embedded Workbench 4.0 Evaluation" vyksta C++ kalba. Sukūrtą elfą galite išbandyti ar naudoti tik telefone, kuriame yra įrašytas elfpackas. Daugiau apie elfpacko įrašymą i telefona ir jau sukūrtus elfus galite pasiskaityti šioje temoje ***ELFpack & ELFs***.

Instrukcija


Kaip minėjau visas programavimas vyksta su  "Embedded Workbench 4.0 Evaluation" programa, tad ją parsisiunčiame. Parsisiuntę, išskleidžiame ją ir jos aplanke sukuriame kitą aplanką "SE". Tada parsisiunčiame iš iš čia bent "C++", "include", "Library", "ElfPack" ir kokį "HelloWorld" elfą (rekomenduočiau parsisiųsti viską, kas tame aplanke yra, dauguma tų failų opensource elfai), bei sukeliame viską į prieštai sukurtą "SE" aplanką.
Tuomet įeiname į nurodyįą direktoriją "...\Embedded Workbench 4.0 Evaluation\SE\HelloWorld" ir paleidžiame "HelloWorld.eww" failą. Atidarytas failas turi atrodyti panašiai į šį:


Du kartus spragtelėkite su pele ant main.c, jums atidarys programavimo langą.


Prieš pradedant programuoti pirmiausią atlikite šį veiksmą!
Project -> Edit Configurations... -> Release -> OK


Norint patikrinti ar jūsų komandose nėra klaidų spauskite Project -> Compile arba Alt+F7.
Jeigu norite išsaugoti elfą spauskite Project -> Rebuild All, elfas bus išsaugotas "...\SE_ELF\Elf\Release\Exe" aplanke.


Raudonai apibrauktas kodas turi būti įtraukiamas, kuriant betkokį elfą:
Citata
#include "..\\include\Lib_Clara.h"
#include "..\\include\Dir.h"
void elf_exit(void)
{
  kill_data(&ELF_BEGIN, (void(*)(void*))mfree_adr());
}
Mėlynai apibrauktas kodas yra jusų programuojamo elfo komadu kodas: taip pat kiekvienas elfas turi turėti pagrindine funkciją:
Citata
int main (void)

Sėkmės, kuriant naujus ir kietus elfus!!!
Jeigu sudomino, labai daug pamokų, naudojant sudėtingesnes funkcijas rasite čia.


Elfų funkcijų kodai:


Citata
StatusIndication_ShowNotes(STR("čia rasomas tekstas, kuris bus rodomas ant ekrano"));

Citata
StatusIndication_ShowNotes(0x6FFFFFFF); - išvalo ekraną.

Citata
SetLampLevel(skaičius nuo 0 iki 100, tai yra blykstės švietimo stiprumo %);

Citata
SUBPROC(elf_exit); - išjungia elfą,

Citata
int NewKey(int key, int r1 , int mode)
{
 if (key==mugtuko kodas)
 {
   if(mode==paspaudimo kodas)
   {
   }   
 }


Elfų main.c failai:


SystemTemp
Citata
#include "..\\include\Lib_Clara.h"
#include "..\\include\Dir.h"

void elf_exit(void)

{
kill_data(&ELF_BEGIN, (void(*)(void*))mfree_adr());
}
 BATT bat;
 u16 ws[193];


int NewKey(int key, int r1 , int mode)
{

if (key==KEY_POWER)
{   if(mode==KBD_SHORT_PRESS)

   {
      ModifyKeyHook(NewKey,0);
      StatusIndication_ShowNotes(0x6FFFFFFF);
      SUBPROC(elf_exit);
      return(0);
   }   
}

if(key==KEY_PLAY)
{
  if(mode==KBD_SHORT_PRESS)
  {
    GetBattaryState((int const*)1 , &bat);
    snwprintf(ws,196,(u16*)L"Temp = %d C",bat.SystemTemperature);
    StatusIndication_ShowNotes(Str2ID(ws,0,SID_ANY_LEN));   
  }
return(-1);
}

return(0);
}
 
int main(u16 *exename,u16 *filename)

ModifyKeyHook(NewKey,1);       
return(0);
}

Lighter
Citata
#include "..\\include\Lib_Clara.h"
#include "..\\include\Dir.h"

void elf_exit(void)
{
kill_data(&ELF_BEGIN, (void(*)(void*))mfree_adr());
}
int i=0;
char flag=0;

int NewKey(int key, int r1 , int mode)
{
 

if (key==KEY_POWER)
{
   if(mode==KBD_SHORT_PRESS)

   {
      ModifyKeyHook(NewKey,0);
      StatusIndication_ShowNotes(0x6FFFFFFF);
      SetLampLevel(0);
      SUBPROC(elf_exit);
      return(0);
   }   
}

if(key==KEY_VOL_UP)
{
  if(mode==KBD_SHORT_PRESS)
  {
    if(i<100)
    {
      if(i==110)i=100;
      i+=10;
      if(flag==1)StatusIndication_ShowNotes(int2strID(i/10));
      SetLampLevel(i^0x01);
    }
  }
return(-1);
}

if(key==KEY_VOL_DOWN)
{
  if(mode==KBD_SHORT_PRESS)
  {
    if(i>0)
    {
      if(i==-10)i=0;
      i-=10;
      if(flag==1)StatusIndication_ShowNotes(int2strID(i/10));
      SetLampLevel(i^0x01);
    }
}
return(-1);
}

if(key==KEY_CAMERA_FOCUS)
{
  if(mode==KBD_SHORT_PRESS)
  {
    if(flag==0)
    {
      StatusIndication_ShowNotes(STR("ïîêąç óšîâí˙ ˙šêîñòč âêėž÷¨¨í"));
      flag=1;
    }else
    {
      flag=0;
      StatusIndication_ShowNotes(0x6FFFFFFF);
    }   
  }
return(-1);
}

return(0);
}

int main(const u16 *exename, const u16 *filename)
{
ModifyKeyHook(NewKey,1);
return(0);
}

SoundOnKeyPress v1.3
Citata
#include "..\include\Lib_Clara.h"
#include "..\include\Dir.h"

void elf_exit(void)                             
{
    kill_data(&ELF_BEGIN, (void(*)(void*))mfree_adr());
}

bool pl=false;
u16 * Path;
u16 * PathMP3;
u16 * SFile;
bool ismute=false;
bool stby=false;

int UIHook1(UI_MESSAGE* mes)
{
    stby=false;
    return 0;
}

int UIHook2(UI_MESSAGE* mes)
{
    stby=true;
    return 0;
}


int id;

int NewKey(int key, int r1 , int mode)
{
    if (mode==KBD_SHORT_PRESS)
    {
        if (key==KEY_POWER)
        {
            ModifyKeyHook(NewKey,0);
            ModifyUIHook(PHONE_IN_STBY_EVENT,UIHook2,0);
            ModifyUIHook(UI_STANDBY_UNFOCUS_EVENT,UIHook1,0);
            SUBPROC(elf_exit);
            return(0);
        }

       
      if(isKeylocked()==0 && stby==true && ismute==false)
      {
        switch(key)
        {
          case 0x10:
            SFile=(u16*)L"/KeySound/0.mp3";pl=true;break;
          case 0x11:
            SFile=(u16*)L"/KeySound/1.mp3";pl=true;break;       
          case 0x12:
            SFile=(u16*)L"/KeySound/2.mp3";pl=true;break;       
          case 0x13:
            SFile=(u16*)L"/KeySound/3.mp3";pl=true;break;
          case 0x14:
            SFile=(u16*)L"/KeySound/4.mp3";pl=true;break;
          case 0x15:
            SFile=(u16*)L"/KeySound/5.mp3";pl=true;break;
          case 0x16:
            SFile=(u16*)L"/KeySound/6.mp3";pl=true;break;
          case 0x17:
            SFile=(u16*)L"/KeySound/7.mp3";pl=true;break;
          case 0x18:
            SFile=(u16*)L"/KeySound/8.mp3";pl=true;break;
          case 0x19:
            SFile=(u16*)L"/KeySound/9.mp3";pl=true;break;
          case 0x1A:
            SFile=(u16*)L"/KeySound/z.mp3";pl=true;break;
          case 0x1B:
            SFile=(u16*)L"/KeySound/r.mp3";pl=true;break;
          default:
            pl=false;break;
        }
       
        if(pl)
        {
            Path=GetDir(1);
            id=PlayFile(Path,SFile);
            if(id)
            {pl=false;return(1);}
            Path=GetDir(0);
            id=PlayFile(Path,SFile);
            if(id)
            {pl=false;return(1);}
            Path=GetDir(9);
            id=PlayFile(Path,SFile);
            if(id)
            {pl=false;return(1);}
            Path=GetDir(8);
            id=PlayFile(Path,SFile);
            if(id)
            {pl=false;return(1);}
            id=PlayFile(PathMP3,SFile);
            if(id)
            {pl=false;return(1);}
        }
      }         
    }   
   
    if (mode==KBD_LONG_PRESS)
    {
        if (key==KEY_DIEZ)
        {
            if(ismute)                       
              ismute=false;
            else
              ismute=true;
        }
    }
    return(1);
}



int main(const u16 *exename, const u16 *filename)
{
  PathMP3=(u16*)L"/card/MP3/";
  ModifyUIHook(UI_STANDBY_UNFOCUS_EVENT,UIHook1,1);
  ModifyUIHook(PHONE_IN_STBY_EVENT,UIHook2,1);
  ModifyKeyHook(NewKey,1);
  return(0);
}

KeyCode
Citata
#include "..\\include\Lib_Clara.h"
#include "..\\include\Dir.h"

void elf_exit(void)
{
  kill_data(&ELF_BEGIN, (void(*)(void*))mfree_adr());
}

u16 timer;
int nkey;
char s[28]="KeyCode     (c) Deitro :)";

void onTimer (u16 * unk , void * data)
{
    StatusIndication_ShowNotes(Str2ID(s,1,25));
    delay(500);
}

int NewKey(int key, int r1 , int mode)
{
    if (mode==KBD_SHORT_PRESS)
    {
        if (key==KEY_DIEZ)
        {
            StatusIndication_ShowNotes(0x6FFFFFFF);
            ModifyKeyHook(NewKey,0);
            SUBPROC(elf_exit);
            return(0);
        }
    }   
    if (key==KEY_ESC)
        return(-1);
       
    s[9]=char(key/10+0x30);
    s[10]=char(key%10+0x30);   
    nkey=key;
    timer=Timer_Set(500,onTimer,0);
    return(-1);
}

int main()
{
  ModifyKeyHook(NewKey,1);
  return 0;
}

HelloWord
Citata
#include "..\\include\Lib_Clara.h"
#include "..\\include\Dir.h"

void elf_exit(void)
{
  kill_data(&ELF_BEGIN, (void(*)(void*))mfree_adr());
}

u16 timer;
int lamp=0;
int n=10;

void onTimer (u16 * unk , void * data)
{
  if(n--)
  {
    Timer_ReSet(&timer,500,onTimer,0);
    SetLampLevel(lamp^=0x10);
  }
  else
  {
    StatusIndication_ShowNotes(0x6FFFFFFF);
    SetLampLevel(0);
    SUBPROC(elf_exit);
  }
}

int main (void)
{
  StatusIndication_ShowNotes(STR("Hello World!"));
  timer=Timer_Set(500,onTimer,0);
  return(0);
}



Manau pradžiai užteks. Bandykit ir išmoksit!!!
« Paskutinį kartą keitė: Rugpjūčio 04, 2010, 21:33 sukūrė Denukas »
  • Live with Walkman + 16GB, k850i + 8GB, o2 Xda Exec + 4GB, k750i@w800i + 2GB

  • Speed Dial

Neprisijungęs Denukas

Specialistas
****
I will be back... Įrašai: 1203 | Karma: +14/-1 | Lytis: Vyras
166 kreditai Žiūrėti inventorių Siųsti pinigus Denukas
Ats.: ***ELF'ų kurimas***
« Atsakymas #1 Įrašytas: Sausio 31, 2008, 18:23 »
BookManager
Citata
#include "..\\include\Lib_Clara.h"
#include "..\\include\Dir.h"

int onRootListChanged(void * r0, BOOK * bk);
void onMyBookClose(BOOK *);
void CloseMyBook(BOOK * Book, void *);
int CreateMenu(void * r0, BOOK * bk);


typedef struct
{
  BOOK  book;
  char * filebuf;
  void * oldOnKey;
  LIST * session_list;
}MyBOOK;

typedef struct
{
  BOOK * book;
  UI_APP_SESSION * session;
  int book_name;
}BOOK_ITEM;

typedef struct
{
  UI_APP_SESSION * session;
  LIST * book_list;
  int session_name;
  int book_in_session;
}SESSION_ITEM;

// äýôîėòíūå çíą÷åíč˙
int KeyPressMode=3;
int KeyActiv=0x00;
int KeyTerminate=0xff;
int Ignore_KeyLock=0;
int ItemMode=0;




MyBOOK * bman_book=0;

int isBookManager(BOOK * struc);

const PAGE_MSG bk_msglst[] @ "DYN_PAGE"  =
{
  BOOK_DESTROYED_EVENT_TAG,onRootListChanged,
  0,0};

const PAGE_DESC bk = {"BookManagerBook",0,&bk_msglst[0]};



void elf_exit(void)

{
  kill_data(&ELF_BEGIN, (void(*)(void*))mfree_adr());
}

//=====================================================================================


int isBookManager(BOOK * struc)
{
  if (struc->onClose==(void*)onMyBookClose)
  {
    return(1);
  }
  else
  {
    return(0);
  }
}

// âç˙òü çíą÷åíčå čç číč-ôąéėą
int GetParam(char * name)
{
  u16 ws[50];
  int sID=0;
  MyBOOK * myBook = (MyBOOK *) FindBook(isBookManager);
 
  if (myBook->filebuf)
  {
    char * param;
    if (param=manifest_GetParam(myBook->filebuf,name,0))
    {
      str2wstr(ws,param);
      sID=Str2ID(ws,0,SID_ANY_LEN);
      mfree(param);
      return(sID);
    }
  }
  if(!sID)
  {
    str2wstr(ws,name);
    sID=Str2ID(ws,0,wstrlen(ws));
  }
  return(sID);
}

// ïîėó÷čòü čì˙ ęąâū
int GetJavaName(BOOK * bk)
{
  u16 ws[100];
  TextID2wstr(Book_GetSession(bk)->name,ws,100);
  if (!wstrncmp(ws,(u16*)L"Foreign app",11))
  {
    return(JavaSession_GetName());
  }
  return(0);
}

// ñîç乸ì ñïčñîê ñåññčé/êíčã
void CreateBookLst(MyBOOK * myBook)
{
  int i,j,k,cnt;
  BOOK * book;
  UI_APP_SESSION * session;
  SESSION_ITEM *si;
  i=root_list_get_session_count();
  cnt=0;
  for (j=0;j<i;j++)
  {
    si=0;
    session=root_list_get_session(j);
    for (k=0;k<session->listbook->FirstFree;k++)
    {
      book=(BOOK*)ListElement_GetByIndex(session->listbook,k);
      if( book->xguilist->guilist->FirstFree)
      {
        if ((!isBookManager(book))&&(!isVolumeControllerBook(book))&&(!isRightNowBook(book)))
        {
          if (!si)
          {
            char s[100];
            u16 ws[100];
            si=new SESSION_ITEM;
            si->book_list=List_New();
            TextID2wstr(session->name,ws,100);
            si->session_name=GetParam(wstr2strn(s,ws,100));
            si->session=session;
          }
          BOOK_ITEM * b = new BOOK_ITEM;
          b->book=book;
          b->session=session;
          b->book_name=0x6fffffff;
          if (!(b->book_name=GetJavaName(book)))
          {
            b->book_name=GetParam(book->xbook->name);
          }
          ListElement_Add(si->book_list,b);
        }
      }
    }
    if (si)
    {
     
      si->book_in_session=si->book_list->FirstFree;
      ListElement_AddtoTop(myBook->session_list,si);
      cnt++;   
    }
  }
  SetNumOfMenuItem(myBook->book.gui,cnt);
}


// ïšč óįčéñòâå êąêîé ėčįî êíčãč
int onRootListChanged(void * r0, BOOK * bk)
{
  // åñėč ÃÓČ åñòü, òî óįčėč
  if (bk->gui) GUI_Free((GUI*)bk->gui);
  // ñîçäąėč ìåíž
  CreateMenu(0,bk);
  return(0);
};


int SubItem=0;

// óñòąíąâėčâąåì òåêñòū â ïóíêòąõ ìåíž
int onLBMessage(GUI_MESSAGE * msg)
{
  //  static const u16 *sss="jwefg " __DATE__ "sdjkfwe";
  MyBOOK * myBook = (MyBOOK *) FindBook(isBookManager);
  int item;
  SESSION_ITEM * si;
  switch(msg->msg)
  {
    // onCreateListItem
  case 1:
    item=GUIonMessage_GetCreatedItemIndex(msg);
    si=(SESSION_ITEM *)ListElement_GetByIndex(myBook->session_list,item);
    SetMenuItemText0(msg,TextCopyId(si->session_name));
    SetMenuItemText2(msg,Str2ID (L"\nBookManager v2.1\nbuild 140108\nCopyright (c) 2007-2008\nHussein",0,100));
    if (si->book_list->FirstFree>1)
    {
      List2lineSetAsSubitem(msg,0,si->book_in_session);
    }
    else
    {
      SetMenuItemText1(msg,TextCopyId((int)(((BOOK_ITEM*)(ListElement_GetByIndex(si->book_list,0)))->book_name)));
    }
    SubItem=0;
    break;
    // onCreateListSubItem
  case 3:
    item=GUIonMessage_GetCreatedSubItemParrentIndex(msg);
    si=(SESSION_ITEM *)ListElement_GetByIndex(myBook->session_list,item);
    BOOK_ITEM * bi =(BOOK_ITEM *) ListElement_GetByIndex(si->book_list,SubItem++);
    List2lineSubitemAddText(msg,TextCopyId(bi->book_name));
    break;
  }
  return(1);
};

// ïšč âūįîšå ïóíêòą
void onEnterPressed(BOOK * book,void * lt)
{
  MyBOOK * myBook = (MyBOOK *) book;
  SESSION_ITEM * si= (SESSION_ITEM*)ListElement_GetByIndex(myBook->session_list,GetFocusetListObjectItem(book->gui));
  // ñòąâčì ôîêóñ íą âåšõížž êíčãó â ñåññčč
  BookObj_SetFocus(((BOOK_ITEM*)(ListElement_GetByIndex(si->book_list,0)))->book,0);
  CloseMyBook(book,0);
};


// ïšč íąęąòčč "Ñ"
void onDelPressed(BOOK * book,void * lt)
{
  MyBOOK * myBook = (MyBOOK *) FindBook(isBookManager);
  SESSION_ITEM * si= (SESSION_ITEM*)ListElement_GetByIndex(myBook->session_list,GetFocusetListObjectItem(book->gui));
  BOOK *bk =(BOOK*)(((BOOK_ITEM*)(ListElement_GetByIndex(si->book_list,0)))->book);
  if (bk)
  {
    if (GetJavaName(bk))
    {
      JavaSession_Manager(0x0E);
    }
    else
    {
      if (Find_StandbyBook()!=bk)
      {
        UI_Event_toSID(RETURN_TO_STANDBY_EVENT,bk->BookID);
      }
    }
  }
};


// ïąò÷åíūé onKey îò ñâîåé ìåížõč...;)
void myOnKey(void *p, int i1, int i2, int i3, int i4)
{
  void (*OldOnKey)(void *, int, int, int, int);
 
  MyBOOK * myBook = (MyBOOK *) FindBook(isBookManager);
  OldOnKey=(void(*)(void *,int,int,int,int))myBook->oldOnKey;
  OldOnKey(p,i1,i2,i3,i4);
 
 
  if ((i4==KBD_SHORT_RELEASE)||(i4==KBD_LONG_PRESS))
  {
    if (i1==KEY_DEL)
    {
      onDelPressed((BOOK*)myBook,0);
    }
    if (i1==KEY_DIEZ)
    {
      if (i4==KBD_SHORT_RELEASE)
      {
   if (Find_StandbyBook()!=0)Show(Find_StandbyBook());
      }
      else
      {
   UI_Event(RETURN_TO_STANDBY_EVENT);
      }
      CloseMyBook((BOOK*)myBook,0);
    }
    if (myBook->filebuf)
    {
      char key[20];
      char * param;
      sprintf(key,i4==3?"[S_KEY%d]":"[L_KEY%d]",i1-0x10);
      if (param=manifest_GetParam(myBook->filebuf,key,0))
      {
   u16 par[256];
   str2wstr(par,param);
   StartAPP(par);
   mfree(param);
   if (Find_StandbyBook()!=0)Show(Find_StandbyBook());
        CloseMyBook((BOOK*)myBook,0);
      }
    }
  }
};

// ñîçäąíčå ìåíž
GUI_LIST * CreateGuiList(void * r0, BOOK * bk)
{
  int p[2];
  GUI_LIST * lo;
  lo =CreateListObject(bk,0);
  bk->gui=(GUI*)lo;
  p[0]=Str2ID (L"Heap : ",0,7);
  p[1]=int2strID (GetFreeBytesOnHeap());
  GuiObject_SetTitleText(lo,Str2ID(p,5,2));
  CreateBookLst((MyBOOK*)bk);
 
  OneOfMany_SetonMessage((GUI_ONEOFMANY*)lo,(void*)onLBMessage);
  SetCursorToItem(lo,0);
  SetMenuItemStyle(lo,ItemMode);
 
  AddMSGHook(lo,ACTION_BACK, CloseMyBook);
  AddMSGHook(lo,ACTION_SELECT1,onEnterPressed);
 
 
  ((MyBOOK*)bk)->oldOnKey=(void*)DISP_OBJ_GetOnKey(lo->DISP_OBJ);
 
  DISP_DESC_SetOnKey( DISP_OBJ_GetDESC (lo->DISP_OBJ), (DISP_OBJ_ONKEY_METHOD)myOnKey );
  return(lo);
};

// ñîçäąíčå č îòîįšąęåíčå ìåíž
int CreateMenu(void * r0, BOOK * bk)
{
  bk->gui=(GUI*)CreateGuiList(0,bk);
  ShowWindow(bk->gui);
  return(0);
}

int h2i(char * h)
{
  char c;
  int res=0;
  while((*h++)!='x');
  do
  {
    c=*h++;
    if (c>0x60) c-=0x20; else c-=0x30;
    if (c>9) c-=7;
    res<<=4;
    res|=c;
  }
  while(*h!=';');
  return(res);
}

// ïšč çąêšūòčč êíčãč
void onMyBookClose(BOOK * book)
{
  MyBOOK * myBook=(MyBOOK*)book;
  if (myBook->filebuf)
  {
    mfree(myBook->filebuf);
    myBook->filebuf=0;
  }
  LIST * lst = myBook->session_list;
  SESSION_ITEM * si;
 
  while (lst->FirstFree)
  {
    int i=0;
    si=(SESSION_ITEM *)ListElement_Remove(lst,0);
   
    while (i<si->book_list->FirstFree)
    {
      BOOK_ITEM * bi=(BOOK_ITEM *)ListElement_GetByIndex(si->book_list,i++);
      TextFree(bi->book_name);
      delete(bi);
    }
    TextFree(si->session_name);
    List_Free(si->book_list);
    delete(si);
  }
  List_Free(myBook->session_list);
}


void CloseMyBook(BOOK * Book, void *)
{
  FreeBook(Book);
  bman_book=0;
};

// ñîįñòâåííî ñòąšò
__root int CreateBookList(void)
{
  int file;
 
  //  u16 f[100];
  if (!bman_book)
  {
    MyBOOK * myBook =bman_book= (MyBOOK *)malloc(sizeof(MyBOOK));
    memset(myBook,0,sizeof(MyBOOK));
    CreateBook(myBook,onMyBookClose,&bk,"BookManager",-1,0);
    //
    myBook->session_list=List_New();
    myBook->filebuf=0;
    // îòêšūâąåì äė˙ ÷òåíč˙ bookman.ini
    if ((file=_fopen(GetDir(DIR_INI),(u16*)L"bookman.ini",0x001,0x180,0))>=0)
    {
      FSTAT fstat;
      // îïšåäåė˙åì åãî šąçìåš
      if (isFileExist(GetDir(DIR_INI),(u16*)L"bookman.ini",&fstat)==0)
      {
        // âūäåė˙åì ïąì˙òü
   myBook->filebuf=(char*)malloc(fstat.fsize+1);
        // ÷òčòąåì åãî
   fread(file,(char*)myBook->filebuf,fstat.fsize);
      }
      // çąêšūâąåì
      fclose(file);
    }
    CreateMenu(0,(BOOK*)myBook);
  }
  return(0);
}

int NewKey(int key, int r1 , int mode)
{
  if (mode==KeyPressMode)
  {
    if (key==KeyTerminate)
    {
      if ((isKeylocked())&&(!Ignore_KeyLock)) return(0);
      ModifyKeyHook(NewKey,0);
      SUBPROC(elf_exit);
      return(0);
    }
    if (key==KeyActiv)
    {
      if ((isKeylocked())&&(!Ignore_KeyLock)) return(0);
      BOOK * bk;
      if (!(bk=FindBook(isBookManager)))
      {
        CreateBookList();
        return(-1);
      }
      else
      {
        CloseMyBook(bk,0);
        return(0);
      }
    }
  }
  return(0);
}

// įåšåì çíą÷åíč˙ čç číč-ôąéėą
void get_ini_key(void)
{
  int file;
  char * buf;
  if ((file=_fopen(GetDir(DIR_INI),(u16*)L"bookman.ini",0x001,0x180,0))>=0)
  {
    FSTAT fstat;
    if (isFileExist(GetDir(DIR_INI),(u16*)L"bookman.ini",&fstat)==0)
    {
      buf=(char*)malloc(fstat.fsize+1);
      fread(file,buf,fstat.fsize);
     
      char * param;
      if (param=manifest_GetParam(buf,"[START_KEY]",0))
      {
        KeyActiv=h2i(param);
        mfree(param);
      }
      if (param=manifest_GetParam(buf,"[KEY_MODE]",0))
      {
        KeyPressMode=h2i(param);
        mfree(param);
      }
      if (param=manifest_GetParam(buf,"[TERMINATE_KEY]",0))
      {
        KeyTerminate=h2i(param);
        mfree(param);
      }
      if (param=manifest_GetParam(buf,"[IGNORE_KEYLOCK]",0))
      {
        Ignore_KeyLock=h2i(param);
        mfree(param);
      }
      if (param=manifest_GetParam(buf,"[EXT_MODE]",0))
      {
        if(h2i(param))  ItemMode=3;
        mfree(param);
      }
      mfree(buf);
    }
    fclose(file);
  }
}


int main (void)
{
  get_ini_key();
  ModifyKeyHook(NewKey,1);
  return(0);
}
  • Live with Walkman + 16GB, k850i + 8GB, o2 Xda Exec + 4GB, k750i@w800i + 2GB

Neprisijungęs smiriukas

Guru
*****
SM|R1USz :) Įrašai: 3386 | Karma: +297/-11 | Lytis: Vyras
21 kreditai Žiūrėti inventorių Siųsti pinigus smiriukas
Tas, kuris primena veidrodį.. |
Ats.: ***ELF'ų kurimas***
« Atsakymas #2 Įrašytas: Sausio 31, 2008, 19:34 »
Denukas eilini karta neblogai padirbejo.. :) Na ka gal kada reiks isbandyt.. Laukiam mes jusu forumieciai sukurtu elfu.. bus tikrai idomu paziureti ka sukure forumieciai..  ;D
  • Būna įvarių ir dažnokai kinta :cat:
Oh my Lord, tell me what I'm livin for.. || Hatters gonna hate. ;D || PARDUODU NAUDOTUS MOBILIUOSIUS TELEFONUS! :)

Neprisijungęs bugatis

Žinovas
***
Įrašai: 395 | Karma: +30/-1 | Lytis: Vyras
166 kreditai Žiūrėti inventorių Siųsti pinigus bugatis
Ats.: ***ELF'ų kurimas***
« Atsakymas #3 Įrašytas: Sausio 31, 2008, 22:21 »
Butu n ejuokai paciam kazka parasyt... :D asmeniskas as bandysiu kokio nors jau sukurto elfo funkcijas patobulint, padaryt "update" ;D

Neprisijungęs afaustas

Naujokas
*
Įrašai: 34 | Karma: +0/-0
27 kreditai Žiūrėti inventorių Siųsti pinigus afaustas
Ats.: ***ELF'ų kurimas***
« Atsakymas #4 Įrašytas: Vasario 01, 2008, 15:53 »
Gerai padirbejote, Denuk! Uz tai jums duodu +. Man reikes pabandyti kurti, taip pat mokytis C++.

Neprisijungęs bronius69

Specialistas
****
Įrašai: 1278 | Karma: +11/-3 | Lytis: Vyras
208 kreditai Žiūrėti inventorių Siųsti pinigus bronius69
Ats.: ***ELF'ų kurimas***
« Atsakymas #5 Įrašytas: Vasario 01, 2008, 17:58 »
nelabai suprantu kaip veikia elfai,tai ir ant siemensu buvo parasyta viskas su cc++?
  • NOKIA N95

  • Speed Dial

Neprisijungęs Denukas

Specialistas
****
I will be back... Įrašai: 1203 | Karma: +14/-1 | Lytis: Vyras
166 kreditai Žiūrėti inventorių Siųsti pinigus Denukas
Ats.: ***ELF'ų kurimas***
« Atsakymas #6 Įrašytas: Vasario 01, 2008, 18:37 »
nelabai suprantu kaip veikia elfai,tai ir ant siemensu buvo parasyta viskas su cc++?
Jop. Siemens elfai irgi parašyti su šita pačia programa, tik naudojant jiems pritaikytą library.
P.S. Atsidarykite Lib_Clara.h failą ten surašytos visos galimos funkcijos.
« Paskutinį kartą keitė: Vasario 01, 2008, 18:39 sukūrė Denukas »
  • Live with Walkman + 16GB, k850i + 8GB, o2 Xda Exec + 4GB, k750i@w800i + 2GB

Neprisijungęs z520i

Patyręs naujokas
**
Įrašai: 120 | Karma: +0/-0
32 kreditai Žiūrėti inventorių Siųsti pinigus z520i
Ats.: ***ELF'ų kurimas***
« Atsakymas #7 Įrašytas: Vasario 01, 2008, 20:45 »
man elfo neissaugo... :'(

  • Speed Dial

Neprisijungęs Denukas

Specialistas
****
I will be back... Įrašai: 1203 | Karma: +14/-1 | Lytis: Vyras
166 kreditai Žiūrėti inventorių Siųsti pinigus Denukas
Ats.: ***ELF'ų kurimas***
« Atsakymas #8 Įrašytas: Vasario 01, 2008, 21:19 »
man elfo neissaugo... :'(
Turbut kazkur padarei klaida , paziurek apacioje programavimo lanngo atsiranda laukelis, kuriame uzrasomi komentarai. Jeigu padarai klaidu ten uzraso ir salia eilutes, kurioje yra klaida, atsiranda zenkliukas.
  • Live with Walkman + 16GB, k850i + 8GB, o2 Xda Exec + 4GB, k750i@w800i + 2GB

Neprisijungęs z520i

Patyręs naujokas
**
Įrašai: 120 | Karma: +0/-0
32 kreditai Žiūrėti inventorių Siųsti pinigus z520i
Ats.: ***ELF'ų kurimas***
« Atsakymas #9 Įrašytas: Vasario 02, 2008, 10:21 »
O kaip atsidaryt elfa? As noreciau paredaguot?

  • Speed Dial

Neprisijungęs Denukas

Specialistas
****
I will be back... Įrašai: 1203 | Karma: +14/-1 | Lytis: Vyras
166 kreditai Žiūrėti inventorių Siųsti pinigus Denukas
Ats.: ***ELF'ų kurimas***
« Atsakymas #10 Įrašytas: Vasario 02, 2008, 11:08 »
O kaip atsidaryt elfa? As noreciau paredaguot?
Pats nežinau, tie kas nori, kad jų elfus tobulintų duoda source jų.
  • Live with Walkman + 16GB, k850i + 8GB, o2 Xda Exec + 4GB, k750i@w800i + 2GB

Neprisijungęs Eimantaster

Patyręs naujokas
**
Įrašai: 68 | Karma: +2/-0 | Lytis: Vyras
29 kreditai Žiūrėti inventorių Siųsti pinigus Eimantaster
***ELF'ų kurimas***
« Atsakymas #11 Įrašytas: Rugpjūčio 24, 2008, 15:39 »
Citata
O kaip atsidaryt elfa? As noreciau paredaguot?

pabandyk googlint su užklausa "[.elf extension] to [source file extension] converter" ar pan, buvau radęs tokiu būdu SA:MP skriptams
  • LG KS20,k750i@w800i,5110,6230i,v3,cx65...

Neprisijungęs Bandytojas

Naujokas
*
Įrašai: 4 | Karma: +0/-0
1 kreditai Žiūrėti inventorių Siųsti pinigus Bandytojas
Ats.: ***ELF'ų kurimas***
« Atsakymas #12 Įrašytas: Rugpjūčio 01, 2010, 12:34 »
Sveiki visi, jei ši tema dar "nemirus" tai gal galėtumet kasnors atnaujinti nuorodas, nes turiu tik programa o tuos kitus failus tai ne visus.

Neprisijungęs smiriukas

Guru
*****
SM|R1USz :) Įrašai: 3386 | Karma: +297/-11 | Lytis: Vyras
21 kreditai Žiūrėti inventorių Siųsti pinigus smiriukas
Tas, kuris primena veidrodį.. |
Ats.: ***ELF'ų kurimas***
« Atsakymas #13 Įrašytas: Rugpjūčio 01, 2010, 14:03 »
Sveikas, na tema kaip ir mirus. :)
  • Būna įvarių ir dažnokai kinta :cat:
Oh my Lord, tell me what I'm livin for.. || Hatters gonna hate. ;D || PARDUODU NAUDOTUS MOBILIUOSIUS TELEFONUS! :)

Neprisijungęs Bandytojas

Naujokas
*
Įrašai: 4 | Karma: +0/-0
1 kreditai Žiūrėti inventorių Siųsti pinigus Bandytojas
Ats.: ***ELF'ų kurimas***
« Atsakymas #14 Įrašytas: Rugpjūčio 02, 2010, 13:45 »
O tu nezinai kokie failai turetu buti tame se_elf aplankale? Arba gal siaip zinai informacijos kaip tuoj elfus kurt?

Neprisijungęs smiriukas

Guru
*****
SM|R1USz :) Įrašai: 3386 | Karma: +297/-11 | Lytis: Vyras
21 kreditai Žiūrėti inventorių Siųsti pinigus smiriukas
Tas, kuris primena veidrodį.. |
Ats.: ***ELF'ų kurimas***
« Atsakymas #15 Įrašytas: Rugpjūčio 02, 2010, 14:07 »
Na aš pats, tai ne. Bet su Denuku susirašau. Galėsiu užklausti.
  • Būna įvarių ir dažnokai kinta :cat:
Oh my Lord, tell me what I'm livin for.. || Hatters gonna hate. ;D || PARDUODU NAUDOTUS MOBILIUOSIUS TELEFONUS! :)

Neprisijungęs Bandytojas

Naujokas
*
Įrašai: 4 | Karma: +0/-0
1 kreditai Žiūrėti inventorių Siųsti pinigus Bandytojas
Ats.: ***ELF'ų kurimas***
« Atsakymas #16 Įrašytas: Rugpjūčio 03, 2010, 13:44 »
Butu labai gerai jei uzklaustum :)

Neprisijungęs smiriukas

Guru
*****
SM|R1USz :) Įrašai: 3386 | Karma: +297/-11 | Lytis: Vyras
21 kreditai Žiūrėti inventorių Siųsti pinigus smiriukas
Tas, kuris primena veidrodį.. |
Ats.: ***ELF'ų kurimas***
« Atsakymas #17 Įrašytas: Rugpjūčio 03, 2010, 16:32 »
Sutarta, paprašysiu, kad jis apsireikštų šioje temoje. :)
  • Būna įvarių ir dažnokai kinta :cat:
Oh my Lord, tell me what I'm livin for.. || Hatters gonna hate. ;D || PARDUODU NAUDOTUS MOBILIUOSIUS TELEFONUS! :)

  • Speed Dial

Neprisijungęs Denukas

Specialistas
****
I will be back... Įrašai: 1203 | Karma: +14/-1 | Lytis: Vyras
166 kreditai Žiūrėti inventorių Siųsti pinigus Denukas
Ats.: ***ELF'ų kurimas***
« Atsakymas #18 Įrašytas: Rugpjūčio 04, 2010, 21:34 »
@Bandytojas
Mečiau aš jau telefonų modingą. Gal kada ir grįšiu paprogramint elfų, kai atsiras elfpakas ant se k850.
Viskas ko tik gali prireikt elfų kūrimui slepiasi vat čia. Ten rasi visus aprašymus, kaip ką padaryt, kas jau naudojama elfuose, tik gaila rusų kalba, pats verčiaus su google translator (jei nemoki versk į en, nes išvertus į lt nieko nesuprasi.).
Ryt poryt, kai turėsiu priėjimą prie senojo pc, pabandysiu surast tuos failus ir atnaujint nuorodas, bet tikrai galima rast ir tam forume, kurio linką katik daviau.
Įrašyta: Rugpjūtis 03, 2010, 20:58
Nu va truputį pakoregavau tutorialą ir atnaujinau linkus. Sėkmės kuryboje.
  • Live with Walkman + 16GB, k850i + 8GB, o2 Xda Exec + 4GB, k750i@w800i + 2GB

Neprisijungęs Bandytojas

Naujokas
*
Įrašai: 4 | Karma: +0/-0
1 kreditai Žiūrėti inventorių Siųsti pinigus Bandytojas
Ats.: ***ELF'ų kurimas***
« Atsakymas #19 Įrašytas: Rugpjūčio 19, 2010, 12:40 »
Labai dekui :)