中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] »
作者:
标题: DOS的界面开发终结者 上一主题 | 下一主题
firstsail
高级用户





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 271 楼』:  



  Quote:
Originally posted by godai at 2008-7-17 12:00:
郭大大, 您的winsail程序在试用中出现一个现象: 就是在振动环境中有时候偶尔会发生PS2鼠标指针乱飞掉的情况。 初步判断是干扰引起的鼠标通讯错误 ...

关于鼠标在振动的工业环境中乱跳的情况可能是由于用了“光电鼠标”,建议在工业强振动环境用“机械式滚轮鼠标”试一试。

2008-11-20 11:18
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
windowsvesta
初级用户




积分 138
发帖 67
注册 2007-7-4
来自 云南
状态 离线
『第 272 楼』:  

好像好久没有更新了!

2009-3-5 00:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
andyond
新手上路





积分 16
发帖 8
注册 2009-3-12
状态 离线
『第 273 楼』:  

下来学习学习,

2009-3-15 10:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 274 楼』:  

窗口控件支持了“命令快捷键”函数
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 ]

2009-4-2 23:36
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 275 楼』:  发现数据库Flush函数的严重出错

    发现经过
有客户反映,程序未正常关机时,经常造成数据库文件的数据丢失,数据库文件非法!
    检查程序
自己的程序每写一次数据纪录,已经调用了“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);
}

2009-5-6 08:12
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 276 楼』:  WinSail的TCP/IP栈是如何工作的?

为了让大家对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 ]

2009-5-16 01:11
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
zhiming420
新手上路





积分 5
发帖 3
注册 2009-11-9
状态 离线
『第 277 楼』:  

好东西哦

2009-11-15 09:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 278 楼』:  

网站因地址解析错误,导致网站几个月不能正常登录.现在终于可以登录了!

2010-7-5 14:17
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
houwenhui
新手上路





积分 14
发帖 9
注册 2010-7-3
状态 离线
『第 279 楼』:  

太神奇了 看不懂啊

2010-7-9 13:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 280 楼』:  WinSail的MakeDlg.Exe文件升级

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 ]

2011-1-14 11:15
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
wuhengsi
新手上路





积分 10
发帖 5
注册 2010-11-7
状态 离线
『第 281 楼』:  

我用的联通网络,不知道为什么,我无法进入郭兄的网址“http://www.FirstSail.b2b.Cn

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

2011-1-16 00:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 282 楼』:  



  Quote:
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

2011-1-19 10:16
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
f371575950
新手上路





积分 10
发帖 5
注册 2016-12-24
状态 离线
『第 283 楼』:  

学习学习

2016-12-24 23:58
查看资料  发送邮件  发短消息 网志  OICQ (371575950)  编辑帖子  回复  引用回复
firstsail2
新手上路





积分 5
发帖 4
注册 2017-5-16
状态 离线
『第 284 楼』:  

好久没有回来了!

2018-7-13 20:16
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (1937480597)  编辑帖子  回复  引用回复
firstsail
高级用户





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 285 楼』:  如果定制可移值的Excel能识别的数据库

在单片机系统,或Linux系统中,经常要用到自定义的数据库,该数据库文件希望能被Windows下的Office Excel识别,怎么办呢?现在有一个方法,可以使用Foxpro2.6版本的数据库,文件结构是公开的,且可被Excel识别。
   
    在WinSail中,由Foxpro.h和Foxpro.Cpp文件组成,稍后会公开所有源代码上来,如果有需要的人士可以移值!

2018-7-14 12:08
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
« [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: