int CMyListBox::AddStringL(lua_State* L) { if(lua_istable(L, 1)) { int nTop = lua_gettop(L); lua_pushnil(L); while(lua_next(L, -2) != 0) { AddString(PAS(L, -1)); lua_pop(L, 1); } lua_pop(L, 1); } else if(lua_isnumber(L, 1) && !lua_isnoneornil(L, 2)) { InsertString(PAI(L, 1), PAS(L, 2)); } else { AddString(PAS(L, 1)); } return 0; }
extern "C" int rsalib_helloLua(lua_State* L) { printf("Hello Lua, I'm in Cpp! Lua's message is: %s/n", PAS(L, 1)); return 0; }
int CFlashCtrl::CallFunction(lua_State* L) { lua_pushstring(L, m_flashCtrl.CallFunction(PAS(L, 1))); return 1; }
int CFlashCtrl::LoadMovieL(lua_State* L) { m_flashCtrl.LoadMovie(PAI(L, 2), PAS(L, 1)); m_flashCtrl.Play(); return 0; }
int ListBoxType::Attribute(void* pControl, lua_State* L, BOOL bGet, BOOL& bHandled) { CMyListBox* pList = ChangeControlType(pControl); if(pList == NULL) { bHandled = FALSE; return 0; } bHandled = TRUE; CString strName = PAS(L, 1); const char* pszName = PAS(L, 1);\ //以下是处理控件属性,如果处理了,直接返回,否则不做操作 if(strName == "count") { if(bGet) { lua_pushnumber(L, pList->GetCount()); return 1; } } else if(strName == "cursel") { if(bGet) { lua_pushnumber(L, pList->GetCurSel()); return 1; } else { lua_pushnumber(L, pList->SetCurSel(PAI(L, 2))); return 1; } } else if(strName == "topindex") { if(bGet) { lua_pushnumber(L, pList->GetTopIndex()); return 1; } else { lua_pushnumber(L, pList->SetTopIndex(PAI(L, 2))); return 1; } } else if(strName == "item-height") { if(bGet) { lua_pushnumber(L, pList->GetItemHeight(0)); return 1; } } else if(strName == "dir") { if(bGet) { } else { pList->Dir(DDL_HIDDEN | DDL_READONLY | DDL_DIRECTORY, PAS(L, 2)); return 0; } } bHandled = FALSE; return 0; }