欢迎访问 Forcal程序设计

FORCAL扩展动态库之Windows窗口库FcWin

目  录

1 什么是FcWin

2 Windows控件窗口

FcWin::WinControl 控件窗口生成函数
FcWin::ClearEdit 清除当前有效的编辑框输出窗口的内容
FcWin::SetEditText 设置指定的编辑框窗口的内容
FcWin::SetCodeToEdit 将当前命令字符串传送到指定的编辑框
FcWin::  

3 一般窗口函数

FcWin::MessageBox 消息框函数
FcWin::  

1 什么是FcWin [返回页首]

    FcWin32W.dll是一个基于Forcal的Windows窗口扩展动态库,主要包含一些操作Windows窗口的函数。

    在FcWin中的函数是通过二级函数命名空间“FcWin”输出的,所有函数均具有类似“FcWin::MessageBox(...)”的格式。使用!using("FcWin");可简化FcWin中的函数访问。

    FcWin32W.dll需要FcData32W.dll的支持,FcData32W.dll要先于FcWin32W.dll加载。

2 Windows控件窗口 [返回页首]

[返回页首][实数函数] FcWin::WinControl(...):控件窗口生成函数

    用户可在窗口中自定义多个控件,为计算提供了方便。目前可以使用的控件有编辑框、静态文本、普通按钮、单选按钮、复选框、组框、位图等。

    可以使用以下常量:

    1) AUTOCLOSEWINDOW:卸载FcWin32W.dll时,自动关闭打开的窗口,如果不包含此常量,需手动关闭窗口。
    2) BUTTON:         标识普通按钮控件。
    3) RADIOBUTTON:    标识单选按钮控件。
    4) CHECKBOX:       标识复选框控件。
    5) GROUPBOX:       标识组框控件。
    6) EDIT:           标识编辑框控件。
    7) STATIC:         标识静态文本控件。
    8) BITMAP:         标识位图控件。

    当WinControl[...]多于两个参数时,可以在参数中直接定义控件使用,这是该函数的一般用法。
    当WinControl[a,20]只有两个参数时,第一个参数为一维数组,第二个参数为数组中的有效数据个数,控件在数组中定义。

    运行错误:

1、参数不匹配;
2、字符串地址错误;
3、窗口或控件的位置及大小不能小于0;
4、内存分配失败;
5、不可识别控件ID;
6、数组地址错误,指定的数组不存在;
7、没有足够的数组元素个数。

---------------------------------------------------------------------------

    WinControl用法1:一般用法

    每次调用WinControl[...]函数将会打开一个窗口,可以在窗口中放置多个预定义的控件,当用户选择了该控件时,可以执行相应的预定义的操作。我们通过例子说明WinControl[]函数的使用:

!using("FcWin");

(:DoStr)=
{   DoStr=
//变量DoStr保存程序代码;
    "
    (*计算时清屏*)
FcWin::ClearEdit[]; //在单击普通按钮时(*...*)中的字符串将被替换为指定的文本;
    (*表达式*);
    (*MB*);
    ",

    //在WinControl[...]函数中定义各类控件及操作;
    WinControl
    {   "例子",0,0,500,550,
//窗口名称为"例子",0,0,500,550定义了该窗口的大小;

        //静态文本控件定义,控件标题是"表达式:",10,10,70,20是该控件在窗口中的相对位置;
        STATIC,"表达式:",10,10,70,20,

        //编辑框控件定义,该编辑框的名称为"表达式",1表示是多行编辑框,若该项为-1则表示是单行编辑框;
        //80,10,380,100是该控件在窗口中的相对位置,最后的字符串""用于设置初始化文本;
        //在单击普通按钮时将用编辑框中的文本替换指定字符串中的子串(*表达式*);
        EDIT,"表达式",1,80,10,380,100,"",

        //组框控件定义,控件标题是"组框",10,120,90,60是该控件在窗口中的相对位置;
        GROUPBOX,"组框",10,120,90,60,

        //单选按钮控件定义,控件标题是"消息框1",15,135,80,20是该控件在窗口中的相对位置;
        //"MB"表示是同一组单选按钮(只要该位置有相同的字符串,就属于同一组单选按钮,用户只能选择其中的一个);
        //最后一个字符串"..."定义了按钮被选择后将被替换的文本;
        //在单击普通按钮时,若选择了"消息框1",则用"FcWin::MessageBox(\"aaa\",\"消息框1\")"替换指定字符串中的子串 (*MB*);
        //在单击普通按钮时,若选择了"消息框2",则用"FcWin::MessageBox(\"bbb\",\"消息框2\")"替换指定字符串中的子串 (*MB*);
        RADIOBUTTON,"消息框1",15,135,80,20,"MB","FcWin::MessageBox(\"aaa\",\"消息框1\")",
        RADIOBUTTON,"消息框2",15,155,80,20,"MB","FcWin::MessageBox(\"bbb\",\"消息框2\")",

        //复选框控件定义,控件标题是"计算时清屏",120,135,100,20是该控件在窗口中的相对位置;
        //在单击普通按钮时,若设置了选中标志,则用""替换指定字符串中的子串 (*计算时清屏*);
        //在单击普通按钮时,若没有设置选中标志,则用"//"替换指定字符串中的子串 (*计算时清屏*);
        //-1表示初始化时不设置选中标志,若为1则表示初始化时设置选中标志;
        CHECKBOX,"计算时清屏",120,135,100,20,"","//",-1,

        //普通按钮控件定义,控件标题是"计算",400,335,50,25是该控件在窗口中的相对位置;
        //在单击该按钮时,先对字符串DoStr中的子串(*...*)进行相应地替换,具体替换行为如前所述;
        //对字符串DoStr处理完所有的控件替换后,编译计算该字符串中的表达式,将结果输出到编辑框"结果输出2:";
        //注意字符串DoStr中的内容在前面进行了定义,DoStr表示该字符串的地址;
        BUTTON,"计算",400,335,50,25,DoStr,"结果输出2:",

        //位图控件定义,加载位图文件"函数图象.bmp",245,120,220,180是该控件在窗口中的相对位置;
        BITMAP,"函数图象.bmp",245,120,220,180,

        STATIC,"结果输出1:",10,310,100,20,
        EDIT,"结果输出1:",-1,120,310,330,20,"aaaaaa",

        STATIC,"结果输出2:",10,340,100,20,
        EDIT,"结果输出2:",1,10,370,450,130,""
    }
};

    运行时,请输入 FcWin::SetEditText("结果输出1:","结果输出到了这里!"); 或者 FcWin::SetCodeToEdit("结果输出2:"); ,观察运行情况。

---------------------------------------------------------------------------

    WinControl用法2:允许使用一个数组传递参数

!using("FcWin","XSLSF");

(::array)= array=new[rtoi(real_s),rtoi(20)]; //定义数组array,元素个数为20个;
(::begin)= begin=0;
//begin>0时开始打开窗口;

//num为数组array中的有效数据个数,其余全局变量为控件定义中用到的字符串,这些字符串和WinControl[]必须在一个表达式中;
f(::array,begin,num,Titil,Static1)=
{
    Titil="例子", Static1="静态文本控件!",
    if[begin++, WinControl(array,num-1)]
};

(::num)= num=0;
//定义窗口大小及标题;
(::array,num,Titil)=setra(array,&num,Titil,0,0,300,300);
//定义静态文本控件;
(::array,num,Static1)=setra(array,&num,STATIC,Static1,100,100,150,20);

f[];
//显示窗口;

[返回页首][实数函数] FcWin::ClearEdit():清除当前有效的编辑框输出窗口的内容

[返回页首][实数函数] FcWin::SetEditText("编辑框名称","内容"): 设置指定的编辑框窗口的内容

    如果指定的编辑框"编辑框名称"存在,将该编辑框的内容替换为"内容"。
    该函数可能返回如下运行错误:1、指定的字符串不存在。

[返回页首][实数函数] FcWin::SetCodeToEdit("编辑框名称"): 将当前命令字符串传送到指定的编辑框

    如果指定的编辑框"编辑框名称"存在,用当前命令字符串替换该编辑框的内容。该函数用于编程调试。
    该函数可能返回如下运行错误:1、指定的字符串不存在。

[返回页首][整数函数、实数函数] FcWin::(... ...):

 

3 一般窗口函数 [返回页首]

[返回页首][整数函数、实数函数] FcWin::MessageBox("消息框中显示的字符串","作为标题的字符串"):消息框函数

格式1:MessageBox["消息框中显示的字符串","作为标题的字符串"]
格式2:MessageBox["消息框中显示的字符串","作为标题的字符串",nType]
格式3:MessageBox[HWND,"消息框中显示的字符串","作为标题的字符串",nType]

说明:HWND标识将被创建的消息框的拥有窗口,如果此参数为0,则消息框没有拥有窗口;nType指定一个决定对话框的内容和行为的位标志集,此参数可以为下列标志组中标志的组合:
MB_OK
MB_OKCANCEL
MB_YESNO
MB_YESNOCANCEL
其他标志请参考WINDOWS API手册中该函数的说明。
返回值:如果没有足够的内存来创建消息框,则返回值为0。如果函数调用成功,则返回值为下列对话框返回的菜单项目值中的一个:
IDABORT:Abort按钮被选中。
IDCANCEL:Cancel按钮被选中。
IDIGNORE:Ignore按钮被选中。
IDNO:NO按钮被选中。
IDOK:OK按钮被选中。
IDRETRY:RETRY按钮被选中。
IDYES:YES按钮被选中。
标志和返回值的具体值请参考WINDOWS API手册,也可以自行验证。

该函数实际上是一个整数函数,但可以作为实数函数来使用。
该函数可能返回如下整数运行错误:1:参数设置不符合要求;2:指定的字符串不存在。


版权所有© Forcal程序设计 2002-2010,保留所有权利
E-mail: forcal@sina.com
  QQ:630715621
最近更新: 2010年01月23日