在Win32SDK中使用Lu模块化编译运行库MLuWord文档下载推荐.docx
- 文档编号:15215820
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:30
- 大小:1.53MB
在Win32SDK中使用Lu模块化编译运行库MLuWord文档下载推荐.docx
《在Win32SDK中使用Lu模块化编译运行库MLuWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《在Win32SDK中使用Lu模块化编译运行库MLuWord文档下载推荐.docx(30页珍藏版)》请在冰豆网上搜索。
#defineIDE_EditCode30
#defineIDE_EditOut31
(注意:
复制到文件中后,最后一条语句后面,请加一个回车,否则容易出现编译错误。
下同。
)
资源文件:
TestMLu.rc(文件创建方法:
先创建一个文本文件,输入以下内容并保存,然后更改文件名为TestMLu.rc)
#include"
windows.h"
TestMLu.h"
//Menu
mainMenuMENUDISCARDABLE
{
POPUP"
计算(&
J)"
{
MENUITEM"
IDM_cal_comcal
MENUITEMSEPARATOR
编译(&
B)"
IDM_cal_com
执行(&
Z)"
IDM_cal_cal
}
}
实现文件:
TestMLu.cpp(文件创建方法:
先创建一个文本文件,输入以下内容并保存,然后更改文件名为TestMLu.cpp)
//////////////////////////////////////全局数据
HINSTANCEhInstance;
//实例句柄
HWNDhwndEditCode,hwndEditOut;
//代码窗口和输出窗口
LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);
//窗口函数说明
////////////////////////////////////////Windows应用程序入口
intWINAPIWinMain(HINSTANCEhhInstance,HINSTANCEhPrevInst,LPSTRlpszCmdLine,intnCmdShow)
HWNDhWnd;
MSGMsg;
WNDCLASSwndclass;
wchar_tlpszClassName[]=L"
classTestMLu"
;
//窗口类名
wchar_tlpszTitle[]=L"
TestMLu"
//窗口标题名
hInstance=hhInstance;
//记住实例句柄
//窗口类的定义
wndclass.style=0;
//窗口类型
wndclass.lpfnWndProc=WndProc;
//窗口处理函数为WndProc
wndclass.cbClsExtra=0;
//窗口类无扩展
wndclass.cbWndExtra=0;
//窗口实例无扩展
wndclass.hInstance=hInstance;
//当前实例句柄
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
//窗口的最小化图标为缺省图标
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
//窗口采用箭头光标
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
//窗口背景为白色
wndclass.lpszMenuName=L"
mainMenu"
;
//窗口菜单
wndclass.lpszClassName=lpszClassName;
//窗口类注册
if(!
RegisterClass(&
wndclass))//如果注册失败则发出警告声音
MessageBeep(0);
MessageBox(GetFocus(),L"
注册失败!
"
L"
MB_OK);
return0;
//创建窗口
hWnd=CreateWindow(lpszClassName,//窗口类名
lpszTitle,//窗口实例的标题名
WS_OVERLAPPEDWINDOW,//窗口的风格
CW_USEDEFAULT,
CW_USEDEFAULT,//窗口左上角坐标为缺省值
CW_USEDEFAULT,//窗口的高和宽为缺省值
NULL,//此窗口无父窗口
NULL,//此窗口无主菜单
hInstance,//创建此窗口的应用程序的当前句柄
NULL);
//不使用该值
//显示窗口
ShowWindow(hWnd,SW_SHOWNORMAL);
//绘制用户区
UpdateWindow(hWnd);
//消息循环
while(GetMessage(&
Msg,NULL,0,0))
TranslateMessage(&
Msg);
DispatchMessage(&
if(!
UnregisterClass(lpszClassName,hInstance))//AreWeAbleToUnregisterClass
MessageBox(NULL,L"
CouldNotUnregisterClass."
MB_OK|MB_ICONINFORMATION);
returnMsg.wParam;
//消息循环结束即程序终止时将信息返回系统
//窗口函数
LRESULTCALLBACKWndProc(HWNDhWnd,UINTMessage,WPARAMwParam,LPARAMlParam)
switch(Message)
caseWM_CREATE:
hwndEditCode=CreateWindow(L"
EDIT"
NULL,//创建代码编辑框;
WS_CHILD|WS_VISIBLE|WS_HSCROLL|WS_VSCROLL|WS_BORDER|ES_LEFT|ES_MULTILINE|
ES_AUTOHSCROLL|ES_AUTOVSCROLL,
0,0,LOWORD(lParam),HIWORD(lParam/2),hWnd,(HMENU)IDE_EditCode,hInstance,NULL);
hwndEditOut=CreateWindow(L"
NULL,//创建输出编辑框;
0,HIWORD(lParam/2+2),LOWORD(lParam),HIWORD(lParam/2-2),hWnd,(HMENU)IDE_EditOut,hInstance,NULL);
SetWindowText(hwndEditCode,L"
//这里是代码窗口,请将Lu代码写在下面\r\n"
);
SetFocus(hwndEditCode);
break;
caseWM_SIZE:
MoveWindow(hwndEditCode,0,0,LOWORD(lParam),HIWORD(lParam/2),true);
MoveWindow(hwndEditOut,0,HIWORD(lParam/2+2),LOWORD(lParam),HIWORD(lParam/2),true);
UpdateWindow(hWnd);
caseWM_COMMAND:
switch(LOWORD(wParam))
{
caseIDM_cal_com:
break;
caseIDM_cal_cal:
caseIDM_cal_comcal:
}
caseWM_DESTROY:
PostQuitMessage(0);
//调用PostQuitMessage发出WM_QUIT消息
default:
//默认时采用系统消息默认处理函数
returnDefWindowProc(hWnd,Message,wParam,lParam);
return0;
8、将TestMLu.h、TestMLu.rc和TestMLu.cpp三个文件放到文件夹“D:
\lu\lu32\TestMLu\TestMLu”。
9、返回VC,点击下图中红色圈出部分“项目->
添加现有项”。
10、添加TestMLu.h、TestMLu.rc和TestMLu.cpp三个文件到工程中。
11、新的工程如下图,点击下图中红色圈出部分“生成->
生成解决方案”。
12、生成成功。
13、点击下图中红色圈出部分“调试->
开始执行(不调试)”。
14、程序界面如下图所示,与我们设想一致。
15、在“TestMLu.cpp”中加入Lu脚本支持的代码,注意红色和青色部分是新加的。
/***********************************************************************
使用MLu的一般步骤:
(1)使用函数InitMLu进行初始化(必须)。
(2)使用函数LoadDll加载需要的Lu扩展库。
(3)使用函数ComModule将字符串源代码编译为模块(必须)。
(4)使用函数ExeModule执行模块,或者使用函数GetFor获取需要的表达式进行计算(必须)。
(5)使用函数SearchKey验证操作数据的类型,然后进行数据传送操作。
(本例未使用)
(6)使用函数FreeDll卸载Lu扩展库。
(7)使用函数FreeMLu释放资源(必须)。
***********************************************************************/
//使用Lu脚本必须的头文件
#include
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Win32SDK 使用 Lu 模块化 编译 运行 MLu