参考自http://blog.sina.com.cn/s/blog_764b1e9d010115qu.html

参考文章的方法是构建一个button控件,通过单击实现,这种方法比较复杂,不是我们经常能用的的,我们希望在程序中直接控制相当于单击了菜单的操作,下面就是实现方法。

一、背景知识:

ENVI的菜单系统,包括主菜单和显示窗口菜单,是由ENVI安装目录下menu目录下的envi.men和display.men这两个ASCII码文件定义的。Windows系统上menu的路径为itt\idlxx\products\envixx\menu。

envi.men文件定义了ENVI主菜单中的选项,display.men文件定义了显示窗口菜单中的选项。每次ENVI启动的时候,这两个文件被读入并根据其内容构建ENVI的菜单。在菜单中添加内容,只需在这两个文件中添加相应的内容并重启ENVI即可。

使用任何文本编辑器就可以打开envi.men文件。在文件的顶部有些介绍的注释文本。注释结束后,就是如下的文件的结构:

0 {File}

  1 {Open Image File} {open envi file} {envi_menu_event}

  1 {Open Vector File} {open vector file} {envi_menu_event}

  1 {Open Remote File} {open remote file} {envi_menu_event}

  1 {Open External File} {separator}

    2 {Landsat}

      3 {Fast} {open eosat tm} {envi_menu_event}

每一行开始的数据定义了菜单项的层次。0表示最顶层,1表示一级子菜单,2表示二级子菜单,如此类推。

{Open Image File}第一个大括号的部分定义了显示在菜单上的内容。

{open envi file}第二个大括号的部分定义了为菜单项所赋给的用户值(uValue),基于用户值可以判别哪个菜单项被点击了。

{envi_menu_event}第三个大括号定义了菜单项事件处理程序的名称,即编写的用户函数名。该处使用的是函数名,而不是用户函数所在的文件名,所以没有后缀。

二、应用

以envi下的统计功能为例,调用时首先明确菜单内容,如下:

;  1 {Statistics} {separator}

  ;    2 {Compute Statistics} {compute file stats} {envi_menu_event}

  ;  创建button时,

  

创建按钮时,{Compute Statistics}代表是value,{compute file stats} 代表uvalue,                {envi_menu_event}代表的是event_pro。

模拟单击完整代码如下:

pro
menu_example,sevent

uvalue='compute file stats'

base = widget_base()

butt_ok = widget_button(base, uvalue=uvalue)

sevent={widget_button,ID:butt_ok,TOP:butt_ok,handler:butt_ok,select:1}

envi_menu_event,sevent

end

 
 

IDL界面程序直接调用envi菜单对应功能的更多相关文章

  1. 直接拨号、将电话号码传入拨号程序、调用拨号程序、调用系统浏览器浏览网页、调用系统程序查看联系人、显示系统设置界面和显示Wi-Fi设置界面代码

    直接拨号.将电话号码传入拨号程序.调用拨号程序.调用系统浏览器浏览网页.调用系统程序查看联系人.显示系统设置界面和显示Wi-Fi设置界面代码 拨打号码的代码如下: Intent callIntent= ...

  2. [AIR] AIR 应用程序的调用和终止

    本节讨论几种对已安装的 Adobe® AIR® 应用程序进行调用的方法,以及关闭运行中的应用程序的选项和注意事项. 注: NativeApplication.InvokeEvent 和 Browser ...

  3. Unity开发Android应用程序:调用安卓应用程序功能

    开发环境: Eclipse3.4 + adt12 + jdk6 + AndroidSDK2.2 Unity3.4 + windows7 测试设备: HTC Desire HD 本文要涉及到的几个重点问 ...

  4. Native Application 开发详解(直接在程序中调用 ntdll.dll 中的 Native API,有内存小、速度快、安全、API丰富等8大优点)

    文章目录:                   1. 引子: 2. Native Application Demo 展示: 3. Native Application 简介: 4. Native Ap ...

  5. 在桌面Linux环境下开发图形界面程序的方案对比

    在Linux下开发GUI程序的方法有很多,比如Gnome桌面使用GTK+作为默认的图形界面库,KDE桌面使用Qt作为默认的图形界面库,wxWidgets则是另一个使用广泛的图形库,此外使用Java中的 ...

  6. Quartz(GUI)图形界面程序----Quartz Web

    下载.设置和运行Quartz(GUI)图形界面程序----Quartz Web 一.获取Quartz Web程序(Quartz GUI).早期的 Quartz 框架开发者意识到一个 GUI 对于某类用 ...

  7. Java界面程序实现图片的放大缩小

    Java界面程序实现图片的放大缩小.这个程序简单地实现了图片的打开.保存.放大一倍.缩小一倍和固定缩放尺寸,但是并没有过多的涵盖对图片的细节处理,只是简单地实现了图片大小的放缩. 思维导图如下: 效果 ...

  8. pyinstaller打包PySide2写的GUI程序,调用ffmpeg隐藏CMD控制台解决方案

    1 问题描述 使用PySide2写了一个GUI程序,调用ffmpeg命令行工具,做简单的批量视频处理(调整帧宽度.帧高度.视频变速.降低视频码率达到限制视频大小),使用了ffmpeg. ffmpeg- ...

  9. Python编写的桌面图形界面程序实现更新检测和下载安装

    在Python中我们有很多种方案来编写桌面图形用户界面程序,譬如内置的 Tkinter .强大的 PyQt5 和 PySide2 ,还有 wxPython .借助这些或内置或第三方的模块,我们可以轻松 ...

随机推荐

  1. 洛谷P4382 劈配

    不知道这个Zayid是谁... 题意: 有n个人,m个导师.每个导师能接纳bi个人,每个人对于这m个导师都有一个志愿档次. 优先满足靠前的人,问到最后每个人匹配的导师是他的第几志愿. 每个人又有一个限 ...

  2. day6-python基础

  3. CentOS 6.5下Squid代理服务器的安装与配置

    1.1   缓存代理概述 作为应用层的代理服务器软件,squid主要提供缓存加速,应用层过滤控制的功能. 1.  代理的工作机制 当客户机通过代理来请求web页面时,指定的代理服务器会先检查自己的缓存 ...

  4. 团体程序设计天梯赛 L3-004. 肿瘤诊断

    数组的大小不能开太大,否则会出现段错误 用bfs而不用dfs,dfs存储太多中间过程,会超内存 #include <stdio.h> #include <stdlib.h> # ...

  5. C中有关引用和指针的异同

    参考于https://blog.csdn.net/wtzdedaima/article/details/78377201 C语言也学了蛮久的,其实一直都没有用到过或者碰到过引用的例子.前端时间再全面复 ...

  6. Qt error ------ incomplete type 'QApplication' used in nested name specifier

    没有包含 ‘QApplication’ 头文件

  7. python net-snmp使用

    安装 官网:http://www.net-snmp.org/download.html 环境:CentOS 6.6 + python 2.7.10 1.下载安装包 net-snmp-5.6.2.1.t ...

  8. P3007 [USACO11JAN]大陆议会The Continental Cowngress

    P3007 [USACO11JAN]大陆议会The Continental Cowngress 题意: 给出 n 个法案, m 头牛的意见, 每头牛有两个表决 格式为 "支持或反对某法案&q ...

  9. CF869 E 二维BIT

    1代表建一个屏障,2代表去掉一个屏障,3询问是否两点相通. 仿造一维询问是否在同一区间的问题扩展到二维,树状数组维护区间标记即可,标记值可以直接2500进制不会爆LL. /** @Date : 201 ...

  10. [洛谷P2444] [POI2000]病毒

    洛谷题目链接:[POI2000]病毒 题目描述 二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码.如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码是安全的.现在委员会 ...