# CS程序显示在浏览器流程
我们可以把自己的CS程序的窗口,显示在我们定义好的菜单中。流程如下。
- 通过框架的菜单管理添加菜单,并设置权限
- 改造CS程序,在接收事件中,根据参数判断应该打开或者关闭窗口
- 调试程序
- 发布程序
# 添加菜单
在菜单管理模块可以添加菜单,我们以添加一个显示CS模块的菜单为例,演示如何添加菜单。
- 打开菜单管理,点击新增按钮,弹出增加菜单界面。分别选择菜单图标,输入菜单名称、显示排序、路由地址。
点击确定
- 在新增加的菜单行,点击该菜单右边的增加按钮,新增菜单。
在添加菜单界面录入如下:
提示:
组件路径
必须填cschild
,表示加载cs模块。cs程序中可以根据路由地址
确认打开什么模块
# CS程序修改
CS程序可以通过发消息与satweb框架交互,satweb打开关闭窗口时,会发送消息给CS程序,CS程序需要调用框架的loading和messagebox等也可以给satweb发消息。
# PB示例代码
- 主窗口定义实例变量
n_win_service n_win
2.主窗口open
事件加上代码
n_win.of_init(handle(this))
//修改为网页上显示的id值,可以调试时附加到浏览器
n_api.il_web = 723334
//如果在浏览器打开,此函数会把窗口附加到浏览器
n_api.of_webapp_attach(handle(this), false)
- 窗口
other
事件
long ll_msg
ulong ll_data
string ls_cmd
ll_msg = message.number
//得到浏览器发送回来的数据,可以自己根据返回的字符参数,确定要执行的操作。
if ll_msg = 74 then
ll_data = n_api.SatWebApp_GetData(lparam)
ls_cmd = n_api.of_utf8tostring(ll_data)
event ue_webcmd(ls_cmd)
end if
- 定义
ue_webcmd
事件
//接收网页发过来的命令
string ls_params[]
string ls_key
ulong ll_hwnd
ls_params = n_api.of_split( as_cmd, ";")
if ls_params[1] = "open" then
ls_key = ls_params[2]
ll_hwnd = long(ls_params[3])
choose case ls_key
case "/demo/driver"
n_win.of_openchild(ls_key, "w_child", ll_hwnd)
case "/demo/http"
n_win.of_openchild(ls_key, "w_http", ll_hwnd)
case "/demo/push"
n_win.of_openchild(ls_key, "w_push", ll_hwnd)
case "/demo/crypt"
n_win.of_openchild(ls_key, "w_crypt", ll_hwnd)
case "/demo/json"
n_win.of_openchild(ls_key, "w_json", ll_hwnd)
case else
n_win.of_openchild(ls_key, "w_child", ll_hwnd)
end choose
elseif ls_params[1] = "close" then
n_win.of_closechild(ls_params[2])
elseif ls_params[1] = "hide" then
n_win.of_hideChild()
elseif ls_params[1] = "location-host" then
n_api.il_host = ls_params[2]
elseif ls_params[1] = "user" then
ls_key = ls_params[2]
end if
可以在该事件中根据ls_params参数打开、关闭自己的窗口,或者接收用户信息等。
n_win.of_openchild(ls_key, "w_http", ll_hwnd)
通过 n_win 对象封装的方法打开 w_http 窗口并加载到web菜单页面上,如果该窗口已经打开,web页面会直接跳转到该窗口和CS MDI窗口类似n_win.of_closechild(ls_params[2])
关闭指定窗口,当关闭TAB页面
时调用n_win.of_hideChild()
隐藏窗口,当用户切换Tab时,当前窗口不再是需要显示窗口会调用该方法
- 响应增加的菜单
在
ue_webcmd
事件中增加一个分枝,当路由地址为/mypro/m1
时,打开对应的pb窗口
case "/mypro/m1"
n_win.of_openchild(ls_key, "w_json", ll_hwnd)
提示: 其中
mypro
和m1
是我们建立菜单时设置的路由地址
# CS程序调试
在实际的开发过程中,调试程序是最常用的功能。satweb框架允许CS程序在ide调试过程中加载到框架,支持断点调试CS程序。方便开发人员实时看到效果。调试步骤:
- 在浏览器输入 http://127.0.0.1:5555/webui?debug=true 显示如下:
- pb程序在窗口open事件中修改n_api.il_web为网页id值,IDE中点击
运行
或调试
启动程序
//修改为网页上显示的id值,可以调试时附加到浏览器
n_api.il_web = 593820
# 编译发布
记住将n_api.il_web改为0,不用调试模式。将程序编译为exe,然后通过上传工具,上传到应用名为test的应用中。上传工具使用可以参考自动升级
← JSON窗口