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

Страница 57 из 211: « 1 ... 53 54 55 56 [57] 58 59 60 61 ... 211 »

 Xe1:
26.08.08, 20:38
 Joker XT
Мыж не екстрасенсы)

а жаль )))))))
вот код (правда это не изначальный код, но сути не меняет ) :-)

#include "..\\include\Lib_Clara.h"
#include "..\\include\Dir.h"
#include "..\\include\cfg_items.h"
#include "conf_loader.h"
#include "config_data.h"


typedef struct
{
BOOK book;
}MyBOOK;

MyBOOK * myBook;
GUI_LIST * list;
GUI* maingui;
bool visible;
BOOK* daemon;

//bool test=0;
#pragma segment="ELFBEGIN"
void elf_exit(void){
kill_data(__segment_begin("ELFBEGIN"), (void(*)(void*))mfree_adr()); //\u041e\u041d\u041a\u0421\u0412\u042e\u0415\u0420\u042f\u042a \u0412\u0420\u041d \u0414\u042e\u041c\u041c\u0428\u0415 \u0411\u0428\u042c\u0415 \u0414\u0415\u041f\u0415\u0419\u0420\u0425\u0411\u0428
} //"pragma" \u041c\u0415 \u0421\u0414\u042e\u041a\u042a\u0427\u0420\u042f\u042a?
int NewKey(int key, int r1 , int mode);
static int ReconfigElf(void *mess ,BOOK *book);
static void onMyBookClose(BOOK * book);

int isPaR(BOOK * struc)
{
if (struc->onClose==(void*)onMyBookClose)
{
return(1);
}
else
{
return(0);
}
}
static int TerminateElf(void * ,BOOK *book)
{
FreeBook(book);
return(1);
}

typedef struct
{
BOOK * book;
}MSG;

static int ShowAuthorInfo(void *mess ,BOOK *book)
{
MSG * msg = (MSG *)mess;
int iconID;
iconidname2id(_T("SMI_WINK_ICN"),-1,&iconID); //;-)
MessageBox(0x6fffffff,STR("Supaelf (c) xzkto"),iconID, 1 ,5000,msg->book);
return(1);
}
void PaRBack(BOOK *bk, void *lt)
{
//GUIObject_SoftKey_RemoveItem(mazaGui,ACTION_BACK);
//GUIObject_SoftKey_RemoveItem(mazaGui,ACTION_SELECT1);
GUI_Free(maingui);
// exitproc();
}

void PaROnEnterPressed(BOOK *bk, void *lt)
{
int item = ListMenu_GetSelectedItem((GUI_LIST*)bk->gui);
if(item==0)
MessageBox (0x6fFFFFFF,STR("Yo!"),0,1,5000,0);
if(item==1)
MessageBox (0x6fFFFFFF,STR("2xYo!"),0,1,5000,0);
}



int PaROnLBMessage(GUI_MESSAGE * msg)
{
int item;
//OBJECT * obj;
int text[2];
switch(msg->msg)
{
case 1:
item=GUIonMessage_GetCreatedItemIndex(msg);
text[0]=Str2ID (L"Line 1",0,100);
text[1]=Str2ID (L"Line 2",0,100);
SetMenuItemText0(msg,TextCopyId(text[item]));
}
return(1);
}

GUI_LIST * PaRCreateGuiList(void * r0, BOOK * bk)
{
bk->gui=(GUI*)CreateListObject(bk,0);
GuiObject_SetTitleText(bk->gui,Str2ID(L"Just guilist",0,SID_ANY_LEN));

SetNumOfMenuItem(bk->gui,2);
OneOfMany_SetonMessage((GUI_ONEOFMANY*)bk->gui,PaROnLBMessage);
SetCursorToItem(bk->gui,0);
SetMenuItemStyle(bk->gui,3);


GUIObject_Softkey_SetAction(bk->gui,ACTION_BACK, PaRBack);
GUIObject_Softkey_SetAction(bk->gui,ACTION_SELECT1,PaROnEnterPressed);
return((GUI_LIST*)bk->gui);
}
void CloseMyBook(BOOK* booka,void* X3)
{
//GUI_Free(booka->gui);
FreeBook(booka);
//myBook=0;
}


static void onMyBookClose(BOOK * book)
{
ModifyKeyHook(NewKey,0);
GUI_Free((GUI*)book->gui);
FreeBook(book);
delete myBook;
SUBPROC(elf_exit);
}
const PAGE_MSG bk_msglst_base[] @ "DYN_PAGE" =
{
ELF_TERMINATE_EVENT, TerminateElf,
ELF_SHOW_INFO_EVENT, ShowAuthorInfo,
ELF_RECONFIG_EVENT, ReconfigElf,
NIL_EVENT_TAG, NULL
};

const PAGE_DESC bk_base = {"MegaElf_Base_Page",0,bk_msglst_base};
void CreatePnRBook()
{
myBook=new MyBOOK;
memset(myBook,0,sizeof(MyBOOK));
if (!CreateBook(myBook,onMyBookClose,&bk_base,"MegaElf",-1,0))
{
delete myBook;
SUBPROC(elf_exit);
// return (0);
}
}
int NewKey(int key, int r1 , int mode)
{
if(key==KEY_SHOW)
{
if(mode==KEYMODE_SHOW)
{
BOOK * bk;
if (!(bk=FindBook(isPaR)))
{
CreatePnRBook();maingui=(GUI*)PaRCreateGuiList(0,(BOOK*)myBook); ShowWindow(maingui);
return(-1);
}
else
{

CloseMyBook(bk,0);

return(0);
}
}
}

return(0);
}
void startproc()
{
/*
maingui=(GUI*)PaRCreateGuiList(0,myBook->book);
ShowWindow(mazaGui);
*/
ModifyKeyHook(NewKey,1);

}

static int ReconfigElf(void *mess ,BOOK *book)
{
RECONFIG_EVENT_DATA *reconf=(RECONFIG_EVENT_DATA *)mess;
int result=0;
if (wstrcmpi(reconf->path,successed_config_path)==0 && wstrcmpi(reconf->name,successed_config_name)==0)
{
//exitproc();
InitConfig();
//Timer_ReSet(&timer,REFRESH_TIME,onTimer,0);
//exitproc();

startproc();
result=1;
}
return(result);
}
//daemon
void Daemon_onClose(BOOK * book)
{
}

const PAGE_MSG Daemon_Base_PageEvents[] @ "DYN_PAGE" =
{
ELF_RECONFIG_EVENT,ReconfigElf,
NIL_EVENT_TAG,0
};

const PAGE_DESC Daemon_Base_Page = {"MegaDaemon_Base_Page",0,Daemon_Base_PageEvents};


int isBookmanDaemonBook(BOOK * book)
{
if(!strcmp(book->xbook->name,"MegaDaemon")) return(1);
return(0);
}

void DestroyDaemon(void)
{
BOOK * Daemon_Book;
if (Daemon_Book=FindBook(isBookmanDaemonBook)) FreeBook(Daemon_Book);
}

void CreateDaemon(void)
{
BOOK * Daemon_Book;
if (Daemon_Book=FindBook(isBookmanDaemonBook)) FreeBook(Daemon_Book);
Daemon_Book=new BOOK;
CreateBook(Daemon_Book,Daemon_onClose,&Daemon_Base_Page,"MegaDaemon",-1,0);
}
//end of daemon
int main()
{
CreatePnRBook();

//CreateDaemon();
myBook=0;
InitConfig();
startproc();
//MMIPROC((void (*)(void))onTimer);
return 0;
}

от UltraShot'а: поправил тэг "code", а то страницу листать неудобно. легче в блокнот скопировать и посмотреть

[ Редактировано UltraShot в 27.8.08 10:55 ]

 UltraShot:
26.08.08, 22:11
 static void onMyBookClose(BOOK * book)
{
ModifyKeyHook(NewKey,0);
GUI_Free((GUI*)book->gui);
FreeBook(book); //Может, это не надо?
delete myBook;
SUBPROC(elf_exit);
}
это у тебя и так "приЗакрытииМоейКниги", а ты опять пустую книжку уничтожаешь.
можно так:
static void onMyBookClose(BOOK * book)
{
ModifyKeyHook(NewKey,0);
GUI_Free((GUI*)book->gui);
myBook=0;
SUBPROC(elf_exit);
}
пробуй, отпишись

 Xe1:
26.08.08, 22:37
 UltraShot
это само-собой, не в этом проблема
проблема в CloseMyBook (см NewKey)

 Joker XT:
26.08.08, 23:47
 Убирай гуй-фри и фрибук из того, чё те Шот написал и всё

 Xe1:
27.08.08, 10:28
 Joker XT
да говорю не в этом проблема, ребут происходит при повторном нажатии KEY_SHOW
при первом нажатии этой клавиши эльф появляется, создаётся книга и гуй
а при втором нажатии эльф по идее должен убить убрать гуй и книгу, но остаться висеть в памяти
вот в этом месте и ребут (((((
А то, что писал Шот будет работать тока кагда гуя нету на экране

 UltraShot:
27.08.08, 10:52
 Xe1
ужас=)
разберись уже с сорцом, даже по твоему сорцу видно, что в памяти он висеть не остаётся. У тебя там закрывается книга + убирается гуи + сабпроц(эльф_эксит)

А то, что писал Шот будет работать тока кагда гуя нету на экране

почему же??

 Xe1:
27.08.08, 11:55
 сабпрок не вызывается, вызывается тока FreeBook()
посмотри вниметельней на NewKey, там вызывается CloseMyBook, а не OnMyBookClose! =)
UltraShot
почему же??

точнее, как сказал Joker XT - "Убирай гуй-фри" еси эльф будет на экране гуй-то не убётся, или его можно не убивать? :-?

 UltraShot:
27.08.08, 12:05
 Xe1
сабпрок не вызывается, вызывается тока FreeBook()

когда закрываешь книгу onMyBookClose автоматом вызывается!

 Xe1:
27.08.08, 12:18
 UltraShot
блин, точно!!!!!!!!


Добавлено 27.8.08 14:22

тупею патихоньку ))))) :-D

 eddmund:
02.09.08, 11:15
 Since nobody replied to my last question here (from August 14), I am asking again:

I want to display an icon within a CreateYesNoQuestionVA GUI object. I tried:
Код: 
    GUI* yn=(GUI*)CreateYesNoQuestionVA(
      0,
      VAR_BOOK(myBook),
      VAR_YESNO_PRE_QUESTION(pre_question),
      VAR_YESNO_QUESTION(question),
      0
    );
    GUIObject_Softkey_SetAction(yn, ACTION_YES,  yn_onYes);
    GUIObject_Softkey_SetAction(yn, ACTION_NO,   yn_onNo);

    int icon_id;
    if (iconidname2id(_T("DESKTOP_ORGANIZER_ICN"), -1, &icon_id)) {
      InputFeedback_SetIcon(yn, icon_id);
    }


The Yes/No dialogue appears, but no icon will be displayed. can anybody help please?
Страница 57 из 211: « 1 ... 53 54 55 56 [57] 58 59 60 61 ... 211 »

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

© 2005-2018 supertrubka.org