程序功能和流程我简单说一下:
1、运行程序 弹出登录窗口要求输入用户名和密码同时主窗口不显示。
2、点击登录窗口中的取消键后关闭登录窗口,退出程序。
3、输入用户名、密码后验证用户名和密码(本例中用户名为:123,密码为:456)。如果验证不通过则弹出对话框提示用户名密码不对。如果通过验证,则关闭登录窗口,显示主窗口,并在主窗口上显示登录成功的字样。
初版代码如下(注意:该代码有一个重大逻辑错误,正确代码继续往下看):

import win.ui;
/*DSG{{*/
var mainform = ..win.form( mode="popup";right=599;bottom=399;parent=...;text="主窗口";border="dialog frame" )
mainform.add(
static={ bottom=165;right=402;left=144;top=85;z=1;transparent=1;cls="static" }
)
/*}}*/

//登录窗口代码
var loginform = ..win.form( text="登录窗口";right=355;bottom=208;parent=...;mode="popup";border="dialog frame";sysmenu=false )
loginform.add(
button2={ bottom=183;text="取消";left=189;top=152;z=6;right=262;cls="button" };
edit={ bottom=73;right=253;left=111;top=46;z=3;edge=1;cls="edit" };
button={ bottom=185;text="登录";left=88;top=153;z=5;right=162;cls="button" };
static={ bottom=70;right=120;left=62;top=51;z=1;transparent=1;text="用户名:";cls="static" };
edit2={ bottom=123;right=252;left=112;multiline=1;top=92;z=4;password=1;edge=1;cls="edit" };
static2={ bottom=130;right=161;left=63;top=97;z=2;transparent=1;text="密 码:";cls="static" }
)

loginform.button.oncommand = function(id,event){
if(loginform.edit.text == "123" and loginform.edit2.text == "456"){
mainform.static.text = "登录成功。";
mainform.show(); //主窗口显示
loginform.close();//登录窗口关闭
}else{
win.msgbox("用户名密码不正确","不对");
}
}

loginform.button2.oncommand = function(id,event){
loginform.close(); //关闭窗口退出程序
}

loginform.show(); //显示登录窗口
win.loopMessage();

2013.03.23 补充:重要提示:
这个程序实例有一个非常重大的逻辑错误。
昨天我在论坛里逛的时候发现一个在很早以前就发布的一个登陆窗口示例,地址:http://bbs.aardio.com/thread-2665-1-1.html 我的登陆窗口实现的思路跟这个示例是相同的。这个帖子中有这样一个讨论:当停留在登陆窗口,不登陆,用工具遍历窗口,查到主窗口句柄,显示主窗口,就可以绕过登陆窗口,直接进入主窗口!
绕过登陆窗口的代码如下:

import winex;

var hwnd=winex.find("AAU_FORM","主窗口")

win.show(hwnd);
win.loopMessage();

我自己试了一下,这段代码确实能绕过登陆窗口把主窗口调用显示出来。 这段代码简直就是黑客必备代码啊!

于是我对代码做了修改,解决这个问题的思路是把主窗口的“声明”和“构建”放到验证用户正确后才执行。也就是放到:if(loginform.edit.text == “123” and loginform.edit2.text == “456”){ 这句后面。修改后的完整代码如下:

import win.ui;

var loginform = ..win.form( sysmenu=false;text="登录窗口";bottom=208;parent=...;right=355;border="dialog frame";mode="popup" )
loginform.add(
button2={ bottom=183;right=262;left=189;top=152;z=6;text="取消";cls="button" };
edit={ bottom=73;right=253;left=111;top=46;z=3;edge=1;cls="edit" };
button={ bottom=185;right=162;left=88;top=153;z=5;text="登录";cls="button" };
static={ bottom=70;text="用户名:";left=62;right=120;top=51;z=1;transparent=1;cls="static" };
edit2={ password=1;bottom=123;right=252;left=112;multiline=1;top=92;z=4;edge=1;cls="edit" };
static2={ bottom=130;text="密 码:";left=63;right=161;top=97;z=2;transparent=1;cls="static" }
)

loginform.button.oncommand = function(id,event){
if(loginform.edit.text == "123" and loginform.edit2.text == "456"){
var mainform = ..win.form( mode="popup";right=599;bottom=399;text="主窗口";border="dialog frame" )
mainform.add(
static={ bottom=165;right=402;left=144;top=85;z=1;transparent=1;cls="static" }
)
mainform.static.text = "登录成功。";
mainform.show(); //主窗口显示
loginform.close();//登录窗口关闭
}else{
win.msgbox("用户名密码不正确","不对");
}
}

loginform.button2.oncommand = function(id,event){
loginform.close(); //关闭窗口退出程序
}

loginform.show(); //显示登录窗口
win.loopMessage();