|
cxjnet
新手上路
积分 7
发帖 4
注册 2006-3-8
状态 离线
|
『第
211 楼』:
谢谢提供了
用这东西开发DOS程序就简单多了
|
|
2007-11-30 00:43 |
|
|
wuxianglin2000
初级用户
积分 34
发帖 17
注册 2007-12-29
状态 离线
|
|
2007-12-29 15:33 |
|
|
wuxianglin2000
初级用户
积分 34
发帖 17
注册 2007-12-29
状态 离线
|
『第
213 楼』:
幸好到前面翻了一下帖子,已经下载了,谢谢!
|
|
2007-12-29 15:37 |
|
|
kit100
新手上路
积分 4
发帖 2
注册 2008-1-3
状态 离线
|
|
2008-1-3 23:35 |
|
|
kit100
新手上路
积分 4
发帖 2
注册 2008-1-3
状态 离线
|
|
2008-1-3 23:44 |
|
|
firstsail
高级用户
积分 668
发帖 295
注册 2005-7-26 来自 广东深圳
状态 离线
|
|
2008-1-5 17:37 |
|
|
firstsail
高级用户
积分 668
发帖 295
注册 2005-7-26 来自 广东深圳
状态 离线
|
『第
217 楼』:
如何加载第三方的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);
}
|
|
2008-2-19 19:31 |
|
|
godai
初级用户
积分 28
发帖 13
注册 2008-2-18
状态 离线
|
『第
218 楼』:
firstsail大大请进:关于winsail的问题
请问firstsail大大, 新下载了winwail的程序,发现了两个问题:
1。在有CMenu菜单的窗口里再加任一控件(例如加个工具条 CToolsBar)后, CMenu就不能用鼠标开启, 只能用键盘Alt+F开启后才能再用鼠标操作; 以前试用过大大的winsail早期版本反而没有问题?
2。 打开和存储文件夹好像不能支持软驱A盘?
|
|
2008-2-20 18:59 |
|
|
firstsail
高级用户
积分 668
发帖 295
注册 2005-7-26 来自 广东深圳
状态 离线
|
『第
219 楼』:
Quote: | 在有CMenu菜单的窗口里再加任一控件(例如加个工具条 CToolsBar)后, CMenu就不能用鼠标开启, 只能用键盘Alt+F开启后才能再用鼠标操作; 以前试用过大大的winsail早期版本反而没有问题? |
|
答:已经发现确实有这一问题,因网站服务器正在刷新,需在下午5:30以后方能上传更改后的WinSail,届时请重新下载后,编译时用Bc31重新“Build All”.
答:由于软盘很少使用,在新版本上将它取消了。我一般用“CF卡”+“CF转IDE转换器”代替软盘。
|
|
2008-2-22 16:28 |
|
|
kmlxk
初级用户
积分 45
发帖 17
注册 2006-9-23
状态 离线
|
|
2008-2-24 01:51 |
|
|
godai
初级用户
积分 28
发帖 13
注册 2008-2-18
状态 离线
|
『第
221 楼』:
郭大大: 有否更新?
郭大大, 是在您的主页 http://www.firstsail.com.cn/Software.html 上更新了吗? 我刚刚下了好像还没有变, 还是[2008-01-15 20:48] 版本, 里面的sail.lib也还是07年12月25日的?
另: 打开和存储对话框函数的一个小问题: 比如我的D盘是USB-disk, 启动程序的时候有检测到U盘, 但打开对话框的时候如果没有插U盘就会造成系统死机。
还有据我了解,在不少传统工业,由于更新缓慢,不少老的工业环境仍然在使用软盘。 如果从提高兼容性考虑,建议大大还是加入软盘读写功能,应该不用多加程序,因为读写与硬盘相同,都是DOS标准函数。
如果要解决上面两个问题, 建议在打开此对话框前先用absread或_bios_disk函数检测是否有此盘存在, 就可解决软盘或U盘没插入的问题。
|
|
2008-2-26 11:56 |
|
|
firstsail
高级用户
积分 668
发帖 295
注册 2005-7-26 来自 广东深圳
状态 离线
|
『第
222 楼』:
因为网络刚刚修复,直至今日才更新WinSail [2008-02-26 14:05],已修正菜单的鼠标问题!
Quote: | 如果要解决上面两个问题, 建议在打开此对话框前先用absread或_bios_disk函数检测是否有此盘存在, 就可解决软盘或U盘没插入的问题。 |
|
过几天按您所提示加入absread或_bios_disk函数检测磁盘的存在,请关注更新!
[ Last edited by firstsail on 2008-2-26 at 03:27 PM ]
|
|
2008-2-26 15:23 |
|
|
fgckfl
初级用户
积分 46
发帖 22
注册 2006-11-13
状态 离线
|
『第
223 楼』:
试用得几点意见
1。多exe程序合成时,主程序调用子程序时,屏幕上会显示“sail200 触”,如何屏蔽呢?
2。settimefc()函数可否设定定时时间,dos下“嘟”得时间太短。有时不希望定时器工作太快。
3。多行编辑框怎么设定最大字节数,或行最大字节数,或最大列数,这样在输入时不需回车就可自动换行。
4。能给个列表控件编辑和数据库相结合得例子吗?
|
|
2008-2-26 21:14 |
|
|
firstsail
高级用户
积分 668
发帖 295
注册 2005-7-26 来自 广东深圳
状态 离线
|
『第
224 楼』:
Quote: | 多exe程序合成时,主程序调用子程序时,屏幕上会显示“sail200 触”,如何屏蔽呢? |
|
......
Quote: | settimefc()函数可否设定定时时间,dos下“嘟”得时间太短。有时不希望定时器工作太快。 |
|
默认情况下是55mS,现将它设置为110mS
void far OnTime_MyDialog(CObject* pObj)
{
CDialog* pDialog = (CDialog *)pObj;
//引入静态变量作为计时次数
static int nLoops = 0;
if ((++nLoops) < 2)
{
return;
}
nLoops = 0;
//这里加入您的代码
}
Quote: | 3。多行编辑框怎么设定最大字节数,或行最大字节数,或最大列数,这样在输入时不需回车就可自动换行。 |
|
//.....
BOOL LoadDatabase(CListBox* pListbox)
{
char buf[256];
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 ]
|
|
2008-2-27 10:51 |
|
|
liudongfu
新手上路
积分 4
发帖 2
注册 2008-1-18
状态 离线
|
|
2008-2-27 12:55 |
|