Создание Эльфов : Эльфостроение : Форум |
Страница 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->guiGUI*)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();mainguiGUI*)PaRCreateGuiList(0,(BOOK*)myBook); ShowWindow(maingui); return(-1); } else { CloseMyBook(bk,0); return(0); } } } return(0); } void startproc() { /* mainguiGUI*)PaRCreateGuiList(0,myBook->book); ShowWindow(mazaGui); */ ModifyKeyHook(NewKey,1); } static int ReconfigElf(void *mess ,BOOK *book) { RECONFIG_EVENT_DATA *reconfRECONFIG_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 тупею патихоньку ))))) |
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 |