经过了无数次的尝试与分析,问题出在InstallShield的一个bug。
我们知道,在IS的窗口编辑器里,设置控件的层次可以右键点击一个控件然后选择bring to front或者send to back来调整,表面上看的确有效果,而实际上编译出来的msi却不是IDE里显示的那么好,原因是bring to front和send to back根本毫无用处,在msi文件里没有任何的反应。
再来看msi,窗口里的部件的显示先后顺序,windows installer文档里貌似没有明确指出,只是说:If the focus in the dialog box is on the control in the Control column, hitting the tab key moves the focus to the control listed in the Control_Next column。意思是如果窗口里的一个控件有输入焦点,那么敲击tab键就会将当前的焦点移动到Control_Next列所指定的下一个控件。
根据windows的特性可知,tab index实际上就是绘制顺序,也就是tab index越大的越后画,越小越先画。
再回头看InstallShield窗口编辑器右侧的控件属性里,也有一个tabIndex属性,这个属性才是真正控制绘制的地方,修改这个值可以按照你想要的顺序绘制窗口控件。
补充说明:不过windows也有问题,如果按钮在图片下面,怎么鼠标移入还能显示出来,呵呵。