导读:这篇文章和上一篇是同样性质的,只不过是分开讲方便大家逐一突破,顺带区分开。
实验环境:Visual C++ 6.0
- 首先,新建一个MFC项目,我使用的是"基本对话框"类型项目。
- 选择"工具" -> "选项" -> "目录" -> "Include files"选项, 添加上Lua安装下的include目录的路径
- 选择"工具" -> "选项" -> "目录" -> "Library files"选项, 添加上Lua安装下的lib目录的路径
- 打开 "你的项目名Dlg.cpp" ,然后添加以下语句
代码:
extern C
{
#include lua.h
#include lualib.h
#include lauxlib.h
}
#pragma comment(lib, lua51.lib)
lua_State *lua;
- 在窗口上拉进去一个Button,命名为"被调用",然后添加点击响应函数
- 在响应函数中添加以下语句
代码:
lua = lua_open ();
if(lua)
{
luaopen_base (lua);
luaopen_table (lua);
luaopen_string (lua);
luaopen_math (lua);
luaopen_debug (lua);
//luaopen_io (lua);
}
lua_pushcfunction(lua, Msg);
lua_setglobal(lua, Msg);
luaL_dofile(lua, test.lua); // 解释分析lua文件
然后在这个按钮响应函数上面添加一个静态函数:
int Msg(lua_State* L)
{
// 测试第一个参数是否为字串形式,并取得这个字串
const char *s1 = luaL_checkstring(L, 1);
MessageBox(NULL, s1, caption, MB_OK);
lua_pop(lua, 1); // 清除栈里的这个字串
lua_pushlstring(L, MsgOK!, 6); // 把返回值压进栈里
// 这个返回是指返回值的个数
return 1;
}
最后一步,在项目目录下新建一个文件,命名为"test.lua",然后在里面输入以下内容,然后运行程序,点击按钮你将会发现他会弹出两次对话框。
c = Msg (123);
Msg(c);