中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-16 17:34
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » DOS的界面开发终结者 查看 93,996 回复 290
271 发表于 2008-11-20 11:18 ·  中国 广东 深圳 电信
高级用户
★★
积分 668
发帖 295
注册 2005-07-26 00:00
UID 41110
性别 男
来自 广东深圳
状态 离线
Originally posted by godai at 2008-7-17 12:00:
郭大大, 您的winsail程序在试用中出现一个现象: 就是在振动环境中有时候偶尔会发生PS2鼠标指针乱飞掉的情况。 初步判断是干扰引起的鼠标通讯错误 ...



关于鼠标在振动的工业环境中乱跳的情况可能是由于用了“光电鼠标”,建议在工业强振动环境用“机械式滚轮鼠标”试一试。
272 发表于 2009-03-05 00:45 ·  中国 广东 深圳 电信
初级用户
★★
积分 138
发帖 67
注册 2007-07-04 10:11
UID 93093
性别 女
来自 云南
状态 离线
好像好久没有更新了!
273 发表于 2009-03-15 10:05 ·  中国 湖北 武汉 电信
新手上路
积分 16
发帖 8
注册 2009-03-12 12:09
UID 141144
性别 男
状态 离线
下来学习学习,
274 发表于 2009-04-02 23:36 ·  中国 广东 深圳 电信
高级用户
★★
积分 668
发帖 295
注册 2005-07-26 00:00
UID 41110
性别 男
来自 广东深圳
状态 离线
窗口控件支持了“命令快捷键”函数
void CWindow::AddCommandKey(WORD wKey, void far (*pMyFc)(CObject *));

函数功能:增加键盘快捷键(无需控件宿主)

入口参数:wKey ------ 虚拟按键值。例如F1键是VK_F1,F1键是VK_F2,...,F10键是VK_F10
pMyFc ---- 回调函数。原型为
void far MyFc(CObject* pObject)
{
CWindow* pWindow = (CWindow *)pObject;
//下面增加您自己的代码
//......
}
出口参数:无
返 回 值:无

[ Last edited by firstsail on 2009-4-2 at 23:39 ]
275 发现数据库Flush函数的严重出错 发表于 2009-05-06 08:12 ·  中国 广东 深圳 电信
高级用户
★★
积分 668
发帖 295
注册 2005-07-26 00:00
UID 41110
性别 男
来自 广东深圳
状态 离线
发现经过
有客户反映,程序未正常关机时,经常造成数据库文件的数据丢失,数据库文件非法!
检查程序
自己的程序每写一次数据纪录,已经调用了“CFoxpro::Flush()”函数,其作用是将数据真正写入磁盘,如果有上面说过的情况,理应是该函数有问题。

BOOL CFoxpro::Flush()
{
//检查文件指针的合法性
if (NULL == m_pFile)
{
return(FALSE);
}

//刷新磁盘缓冲区
::fflush(m_pFile);

return(TRUE);
}

初步怀疑C函数库提供的fflush()函数并不是将磁盘冲区数据全部写入磁盘,经过使用BC31的帮助文件,发现真不是这回事!正确应如下修改

解决问题

将CFoxpro::Flush()修改为如下所示,已解决

BOOL CFoxpro::Flush()
{
//检查文件指针的合法性
if (NULL == m_pFile)
{
return(FALSE);
}

//刷新磁盘缓冲区
::fflush(m_pFile);

int duphandle = ::dup(fileno(m_pFile));

::close(duphandle);

return(TRUE);
}
276 WinSail的TCP/IP栈是如何工作的? 发表于 2009-05-16 01:11 ·  中国 广东 深圳 电信
高级用户
★★
积分 668
发帖 295
注册 2005-07-26 00:00
UID 41110
性别 男
来自 广东深圳
状态 离线
为了让大家对WINSAIL在单任务系统中如何调度TCP/IP的。下面作一些说明!

(1)在窗口的CWindow::OnIdle(CObject* pObj)函数中,调用了TCP/IP的循环处理入口函数指针pSocketLoopFc指向的套接字循环函数。




CWindow::OnIdle(CObject* pObj)的源代码如下


extern BOOL bAfxNetcard; //是否在CONFIG.Sys文件中配置需要网卡标志
extern BOOL bAfxInitSocket; //是否套接字成功初始化标志
extern BOOL (*__pSocketInitFc)(); //套接字初始化函数指针
extern BOOL (*__pSocketCloseFc)();//套接字关闭函数指针
extern BOOL (*__pSocketLoopFc)(BOOL, BOOL, BOOL);//套接字循环函数指针

void CWindow::OnIdle()
{
//这里判断是否需要执行TCP/IP栈
if (bAfxNetcard && bAfxInitSocket && __pSocketLoopFc != NULL)
{
__pSocketLoopFc(TRUE, TRUE, TRUE);
}

//这里执行void CWindow::SetIdleFc()函数注册的“空闲函数指针“
if (m_pIdleFc != NULL)
{
m_pIdleFc((CObject*)this);
}
}

(2)注册TCP/IP协议栈的函数AfxRegisterNetcardEntry()源代码如下

BOOL AfxRegisterNetcardEntry(BOOL (*pSocketInitFc)(),
BOOL (*pSocketCloseFc)(), BOOL (*pSocketLoopFc)(BOOL, BOOL, BOOL))
{
if (pSocketInitFc == NULL || pSocketCloseFc == NULL)
{
return(FALSE);
}
__pSocketInitFc = pSocketInitFc;
__pSocketCloseFc = pSocketCloseFc;
__pSocketLoopFc = pSocketLoopFc;
return(TRUE);
}

(3)WinSail默认的
套接字初始化函数:GlobalInitSocket()函数
套接字关闭函数是:GlobalCloseSocket()函数
套接字循环函数:EthernetEntry()函数

EthernetEntry只处理ARP、RARP、ICMP请求以及没有发送的数据包及时发送出去,对于其它的请求则被忽略。
所以用户应用还需要重新编写自己的“套接字循环函数”。


//下面是用户自己编写的“套接字循环函数”。这个可以参照Sail3000工程的Sail2000.Cpp文件和Remote_N.Cpp文件,它实现了“文件传输、键盘按键下发、鼠标按键下发、屏幕上传、QQ聊天”等功能。
BOOL User_EthernetEntry(BOOL bSingle, BOOL bSend, BOOL bIcmp)
{
//运行默认的套接字循环函数
::EthernetEntry(bSingle, bSend, bIcmp);

//下面编写自己的SOCKET查询、读、写等等
//(略)


return(TRUE);
}



(4)由于WINSAIL运行于单任务中,所以任何地方的长时间堵塞,都会造成TCP/IP的长期堵塞。为了减少这情况,在堵塞的循环中,须调用

User_EthernetEnty(TRUE, TRUE, TRUE);


(5)如果用户注册第三方的TCP/IP栈(如Watcp等),初始化函数成功须返回TRUE,否则返回FALSE,WinSail自动对初始化函数的返回标志对bAfxInitSocket变量置位,同时别忘了配置config.Sys文件中的“Netcard”段的“netCard”键值置成 TRUE,方能与WinSail完美结合!

在WINSAIL里面的InitSystem()函数是这样初始化TCP/IP协议栈的:



bAfxInitSocket = FALSE;

if (bAfxNetcard && __pSocketInitFc != NULL &&
__pSocketCloseFc != NULL)
{
if (!__pSocketInitFc())
{
__pSocketCloseFc();
bAfxInitSocket = FALSE;

//AfxMessageBox("网络","无法加载网络!");
}
else
{
bAfxInitSocket = TRUE;
}
}

[ Last edited by firstsail on 2009-5-16 at 02:25 ]
277 发表于 2009-11-15 09:08 ·  中国 广东 珠海 电信
新手上路
积分 5
发帖 3
注册 2009-11-09 05:24
UID 154418
性别 男
状态 离线
好东西哦
278 发表于 2010-07-05 14:17 ·  中国 广东 深圳 电信
高级用户
★★
积分 668
发帖 295
注册 2005-07-26 00:00
UID 41110
性别 男
来自 广东深圳
状态 离线
网站因地址解析错误,导致网站几个月不能正常登录.现在终于可以登录了!
279 发表于 2010-07-09 13:56 ·  中国 北京 联通
新手上路
积分 14
发帖 9
注册 2010-07-03 20:00
UID 169927
性别 男
状态 离线
太神奇了 看不懂啊
280 WinSail的MakeDlg.Exe文件升级 发表于 2011-01-14 11:15 ·  中国 广东 深圳 福田区 电信
高级用户
★★
积分 668
发帖 295
注册 2005-07-26 00:00
UID 41110
性别 男
来自 广东深圳
状态 离线
WinSail的MakeDlg.Exe文件升级



增高了两个选项
(1)将CLabel和CGroup控件解释成非控件
(2)将CGroup坐标与Windows对齐

<1>如果选中"CLabel和CGroup控件解释成非控件"选项, 则将所有的CLabel与CGroup控件的生成代码被注释,并且生成void FAR OnDraw_VccFunction(CObject *)函数,函数内部生成代码如下:

其中CLabel控件解释成ChPrintf()函数
其中CGroup控件解释成DrawBoxCaptionEx()函数

这样设计的目的是为了节省宝贵的内存


<2>如果选中"将CGroup坐标与Windows对齐"选项, 则WinSail的Group控件与Windows的Group控件的可视边框区域相同,强列推荐使用该选项.


下载地址:http://www.firstsail.com.cn/software.html

[ Last edited by firstsail on 2011-1-14 at 11:23 ]
281 发表于 2011-01-16 00:48 ·  中国 广东 深圳 联通
新手上路
积分 10
发帖 5
注册 2010-11-07 01:21
UID 177218
性别 男
状态 离线
我用的联通网络,不知道为什么,我无法进入郭兄的网址“http://www.FirstSail.b2b.Cn

希望那个好心朋友能帮将郭兄的软件发到我的邮箱里面,感谢了
邮箱地址: wuhengsi88@163.com
282 发表于 2011-01-19 10:16 ·  中国 广东 深圳 电信
高级用户
★★
积分 668
发帖 295
注册 2005-07-26 00:00
UID 41110
性别 男
来自 广东深圳
状态 离线
Originally posted by wuhengsi at 2011-1-16 00:48:
我用的联通网络,不知道为什么,我无法进入郭兄的网址“http://www.FirstSail.b2b.Cn

希望那个好心朋友能帮将郭兄的软件发到我的邮箱里面,感谢了
邮箱地址: wuhengsi88@163.com



网站地址是:http://www.firstsail.com.cn/softwafe.html
电子邮箱是:szhello8@21cn.net
283 发表于 2016-12-24 23:58 ·  中国 广东 东莞 联通
新手上路
积分 10
发帖 5
注册 2016-12-24 10:55
UID 182008
性别 男
状态 离线
学习学习
284 发表于 2018-07-13 20:16 ·  中国 广东 深圳 电信
新手上路
积分 5
发帖 4
注册 2017-05-16 20:00
UID 182269
性别 男
状态 离线
好久没有回来了!
285 如果定制可移值的Excel能识别的数据库 发表于 2018-07-14 12:08 ·  中国 广东 深圳 电信
高级用户
★★
积分 668
发帖 295
注册 2005-07-26 00:00
UID 41110
性别 男
来自 广东深圳
状态 离线
在单片机系统,或Linux系统中,经常要用到自定义的数据库,该数据库文件希望能被Windows下的Office Excel识别,怎么办呢?现在有一个方法,可以使用Foxpro2.6版本的数据库,文件结构是公开的,且可被Excel识别。

在WinSail中,由Foxpro.h和Foxpro.Cpp文件组成,稍后会公开所有源代码上来,如果有需要的人士可以移值!
论坛跳转: