打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
把lua嵌入到c++中当读配置文件
userphoto

2011.11.24

关注
把lua嵌入到c++中当读配置文件,呵呵,想到来os都混了一年多了,还没分享过代码,不是我小气,是一直都忙着整公司代码,商业代码不敢随便分享咯,最近下班空闲的时候迷上了duilib这个界面库,所以产生了个邪恶的想法 
,本来duilib都支持xml定义界面,所以想到了xml来定义界面,c++实现必要的解析功能,然后把lua脚本嵌入进来写逻辑处理。东西还没整完,最近一直都很忙,但是手贱先贴点代码上来
调用lua函数
01const char * ReadResources(char *name)
02{
03    lua_State * L = luaL_newstate() ;        //创建lua运行环境
04 
05    int ret = 0 ;
06    ret = luaL_loadfile(L,"winlt.lua") ;      //加载lua脚本文件
07    ret = lua_pcall(L,0,0,0) ;
08    lua_getglobal(L,"getResource");             //函数名
09    lua_pushlstring(L,name,strlen(name));
10    //运行函数并把结果压入栈 
11    lua_call(L, 1, 1);
12    const char * c=(const char *)lua_tostring(L,-1);
13    lua_pop(L, 1);
14    lua_close(L) ;                     //释放lua运行环境
15    return c;
16}


winlt.lua文件代码
1entity={
2    ["ResourcePath"]="\\skin",
3    ["ResourceZip"]="default.zip",
4    ["title"]="彩票筛选器",
5    ["xml"]="skin_zh.xml"
6};
7function getResource(name)
8    return entity[name];
9end
main函数代码
01int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/,LPSTR /*lpCmdLine*/, int nCmdShow)
02{
03    CPaintManagerUI::SetInstance(hInstance);
04    //CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetInstancePath());
05    CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetInstancePath() + ReadResources("ResourcePath"));
06    CPaintManagerUI::SetResourceZip(ReadResources("ResourceZip"));
07 
08    HRESULT Hr = ::CoInitialize(NULL);
09    if( FAILED(Hr) ) return 0;
10 
11    CFrameWindowWnd* pFrame = new CFrameWindowWnd();
12    if( pFrame == NULL ) return 0;
13 
14    pFrame->Create(NULL, ReadResources("title"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
15    pFrame->CenterWindow();
16    ::ShowWindow(*pFrame,SW_SHOW);
17    CPaintManagerUI::MessageLoop();
18 
19    ::CoUninitialize();
20    return 0;
21}
呵呵,这样以来,程序可以不经过编辑都能实现多皮肤多语音,多变逻辑处理了,至于lua处理逻辑部分,我还在完善中,呵呵

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Duilib学习笔记《01》— duilib整体框架认识
DirectUI界面技术和lua脚本
【图像处理背景差分原理】
yuv422与yuv420转换成RGB来显示
duilib学习笔记
在你的游戏中应用LUA
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服