中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-15 00:35
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行
DOS开发编程 & 发展交流 (开发室) » DOS的界面开发终结者
可打印版本  98,432 / 290
第211楼 cxjnet 发表于 2007-11-30 00:43
新手上路 发帖 4 积分 7
谢谢提供了

用这东西开发DOS程序就简单多了
第212楼 wuxianglin2000 发表于 2007-12-29 15:33
初级用户 发帖 17 积分 34
我怎么打不开你的网站啊,能否发一份给我,谢谢!
wuxianglin2000@sina.com
第213楼 wuxianglin2000 发表于 2007-12-29 15:37
初级用户 发帖 17 积分 34
幸好到前面翻了一下帖子,已经下载了,谢谢!
第214楼 kit100 发表于 2008-01-03 23:35
新手上路 发帖 2 积分 4
think!!!!!
第215楼 kit100 发表于 2008-01-03 23:44
新手上路 发帖 2 积分 4
我怎么打不开你的网站啊,能否发一份给我,谢谢!
honkit.wong@gmail.com
第216楼 firstsail 发表于 2008-01-05 17:37
高级用户 发帖 295 积分 668 来自 广东深圳
第217楼 firstsail 发表于 2008-02-19 19:31
高级用户 发帖 295 积分 668 来自 广东深圳
如何加载第三方的TCP/IP和多任务模块
(1)对于第三方TCP/IP来说,注册三个函数,分别为“初始化服务函数”和“终止服务函数”以及“网络消息循环函数”
其中:
注册“初始化服务函数”是为了InitSystem()中调用。
注册“终止服务函数”是为了CloseSystem()中调用。
注册“网络消息循环函数”是为了CWindow::OnIdle()函数中调用。


(2)对于第三方多任务模块来说,注册三个函数,分别为“初始化服务函数”和“终止服务函数”以及“休息函数”
其中:
注册“初始化服务函数”是为了InitSystem()中调用。
注册“终止服务函数”是为了CloseSystem()中调用。
注册“休息函数”是为了系统内部在调用KernelDelay()函数时,转换到实际的delay或sleep休息函数。




int main(int argc, char** argv)
{

//注册WinSail-TCPIP栈
// GlobalInitSocket -- TCP/IP初始化服务函数
// GlobalCloseSocket -- TCP/IP终止服务函数
// EthernetEntry -- TCP/IP网络消息循环函数
::AfxRegisterNetcardEntry(::GlobalInitSocket,
::GlobalCloseSocket, ::EthernetEntry);

////注册WinSail-多任务栈
// KernelInitProcess -- 多任务初始化服务函数
// KernelCloseProcess -- 多任务终止服务函数
// __MultiTaskDelay -- 多任务的休息函数
::AfxRegisterMultitaskEntry(::KernelInitProcess,
::KernelCloseProcess, ::__MultiTaskDelay);

//初始化系统内核
if (!::InitSystem(argc, argv))
{
//关闭系统内核
::CloseSystem();
printf("\nInit System Error!");
return(0);
}


//用户程序
//.......


//关闭系统内核
::CloseSystem();

return(1);

}
第218楼 godai 发表于 2008-02-20 18:59
初级用户 发帖 13 积分 28
firstsail大大请进:关于winsail的问题
请问firstsail大大, 新下载了winwail的程序,发现了两个问题:

1。在有CMenu菜单的窗口里再加任一控件(例如加个工具条 CToolsBar)后, CMenu就不能用鼠标开启, 只能用键盘Alt+F开启后才能再用鼠标操作; 以前试用过大大的winsail早期版本反而没有问题?

2。 打开和存储文件夹好像不能支持软驱A盘?
第219楼 firstsail 发表于 2008-02-22 16:28
高级用户 发帖 295 积分 668 来自 广东深圳
在有CMenu菜单的窗口里再加任一控件(例如加个工具条 CToolsBar)后, CMenu就不能用鼠标开启, 只能用键盘Alt+F开启后才能再用鼠标操作; 以前试用过大大的winsail早期版本反而没有问题?


答:已经发现确实有这一问题,因网站服务器正在刷新,需在下午5:30以后方能上传更改后的WinSail,届时请重新下载后,编译时用Bc31重新“Build All”.


打开和存储文件夹好像不能支持软驱A盘?


答:由于软盘很少使用,在新版本上将它取消了。我一般用“CF卡”+“CF转IDE转换器”代替软盘。
第220楼 kmlxk 发表于 2008-02-24 01:51
初级用户 发帖 17 积分 45
强~眼泪直流啊。。
第221楼 godai 发表于 2008-02-26 11:56
初级用户 发帖 13 积分 28
郭大大: 有否更新?
郭大大, 是在您的主页 http://www.firstsail.com.cn/Software.html 上更新了吗? 我刚刚下了好像还没有变, 还是 版本, 里面的sail.lib也还是07年12月25日的?

另: 打开和存储对话框函数的一个小问题: 比如我的D盘是USB-disk, 启动程序的时候有检测到U盘, 但打开对话框的时候如果没有插U盘就会造成系统死机。

还有据我了解,在不少传统工业,由于更新缓慢,不少老的工业环境仍然在使用软盘。 如果从提高兼容性考虑,建议大大还是加入软盘读写功能,应该不用多加程序,因为读写与硬盘相同,都是DOS标准函数。

如果要解决上面两个问题, 建议在打开此对话框前先用absread或_bios_disk函数检测是否有此盘存在, 就可解决软盘或U盘没插入的问题。
第222楼 firstsail 发表于 2008-02-26 15:23
高级用户 发帖 295 积分 668 来自 广东深圳
在您的主页 http://www.firstsail.com.cn/Software.html 上更新了吗? 我刚刚下了好像还没有变, 还是 版本, 里面的sail.lib也还是07年12月25日的?



因为网络刚刚修复,直至今日才更新WinSail ,已修正菜单的鼠标问题!

如果要解决上面两个问题, 建议在打开此对话框前先用absread或_bios_disk函数检测是否有此盘存在, 就可解决软盘或U盘没插入的问题。


过几天按您所提示加入absread或_bios_disk函数检测磁盘的存在,请关注更新!

[ Last edited by firstsail on 2008-2-26 at 03:27 PM ]
第223楼 fgckfl 发表于 2008-02-26 21:14
初级用户 发帖 22 积分 46
试用得几点意见
1。多exe程序合成时,主程序调用子程序时,屏幕上会显示“sail200 触”,如何屏蔽呢?
2。settimefc()函数可否设定定时时间,dos下“嘟”得时间太短。有时不希望定时器工作太快。
3。多行编辑框怎么设定最大字节数,或行最大字节数,或最大列数,这样在输入时不需回车就可自动换行。
4。能给个列表控件编辑和数据库相结合得例子吗?
第224楼 firstsail 发表于 2008-02-27 10:51
高级用户 发帖 295 积分 668 来自 广东深圳
多exe程序合成时,主程序调用子程序时,屏幕上会显示“sail200 触”,如何屏蔽呢?

......

settimefc()函数可否设定定时时间,dos下“嘟”得时间太短。有时不希望定时器工作太快。


默认情况下是55mS,现将它设置为110mS
void far OnTime_MyDialog(CObject* pObj)
{

CDialog* pDialog = (CDialog *)pObj;

//引入静态变量作为计时次数
static int nLoops = 0;
if ((++nLoops) < 2)
{
return;
}
nLoops = 0;

//这里加入您的代码

}


3。多行编辑框怎么设定最大字节数,或行最大字节数,或最大列数,这样在输入时不需回车就可自动换行。


//.....

4。能给个列表控件编辑和数据库相结合得例子吗?


BOOL LoadDatabase(CListBox* pListbox)
{
char buf;

char* pStrFile = "MyBase.Dbf";
//假设有一个数据库名称为“MyBase.Dbf”,其有三个字段
//其中索引为 2的字段是字符串字段

//打开数据库
CFoxpro mFoxpro;
if (!mFoxpro.Open (pStrFile))
{
::sprintf (buf, "文件开打错误\n---%s", pStrFile);
::AfxMessageBox("错误", buf, MB_OK);
return (FALSE);
}

//读索引为2的字段的属性
FOXPRO_FIELDS mFoxproFields = *(mFoxpro.GetFoxproFields(2));

//判断索引为2的字段是否为字符串字段
if (mFoxproFields.byStyle != 'C' && mFoxproFields.byStyle != 'c')
{
::sprintf (buf, "数据库非法\n---%s", pStrFile);
::AfxMessageBox("错误", buf, MB_OK);
return (FALSE);
}

int nMaxCh = (int)(WORD)mFoxproFields.byLength;

//得到数据库的总纪录数
long lgCount = mFoxpro.GetRecordCount();

//设置列表框每一行的最大字符数
pListBox->SetLineCharacter((nMaxCh == 255) ? 255 : nMaxzCh + 1);

//设置列表框的总项数为lgCount个
pListBox->SetCount (lgCount);

//循环读数据库的索引为2的字符串字段内容
for (long i = 0L; i < lgCount; i++)
{
//定位数据库
mFoxpro.Seek(i, SEEK_SET);

//读索引为2的字符串字段的值
mFoxpro.GetFieldString (2, buf);

//将读出来的值写入列表框
pListBox->SetSel(i, buf);
}


//关闭数据库
mFoxpro.Close();

return (TRUE);
}

[ Last edited by firstsail on 2008-2-27 at 11:27 AM ]
第225楼 liudongfu 发表于 2008-02-27 12:55
新手上路 发帖 2 积分 4
在那儿下呀,
上一页  112 13 14 15 16 17 1820  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023