欢迎访问 Forcal程序设计

FORCAL扩展动态库之Windows窗口库Fc Win

目 录

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日