中国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
来自 广东深圳
状态 离线
『第 241 楼』:  

如果godai 兄对“文件打开框”感兴趣的话,可以将您的邮箱告诉我,我会将对应模块源代码发给您,您修改后可以代替“sail.lib”编程库文件里面的“filedlg.obj”模块

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





积分 28
发帖 13
注册 2008-2-18
状态 离线
『第 242 楼』:  

那非常感谢! 我的邮箱是bingxizhao@tom.com
希望能进一步与您探讨sail软件的完备与应用!

关于windows与dos的问题兼容版本的问题, 我也还没想到更好的办法。 明天再到单位机器上试验一下看看。

另: 您写的这么好的dos下实用程序竟然没有诸如软驱类的设备吗? 真的不容易了! 呵呵。  如果需要的话我这里有,可以给您寄个过去做试验。

2008-3-7 01:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





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

邮件已发送到bingxizhao@tom.com

2008-3-7 13:35
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 244 楼』:  找到一个判断“程序是否是在纯DOS下运行”的可行办法

找到一个判断“程序是否是在纯DOS下运行”的可行办法,基本思路如下:

    80386寄存器MSW可在实模式或任何特权级中读取到,而控制寄存器CR0只能在实模式或特权级0下才能读到,而CR0的低16位就是MSW,根据这个原理,如果它门的值相等,则认为在纯DOS下运行,否则是在Window下的DOS虚拟机运行。

BOOL IsWindowVM()
{
        DWORD dwCr0;
        WORD  wMsw;

        //读机器状态字MSW
        asm smsw ax;
        asm mov wMsw, ax

        //读控制寄存器cr0,在VM下可能引起异常
        asm mov eax, cr0
        asm mov dwCr0, eax

        //判断是否相等,相等时表示纯DOS,否则VM
        if (wMsw == (WORD)(dwCr0 & 0xFFFFlu))
        {
                return (FALSE);
        }

        return (TRUE);
}

虽然纯DOS加载了“Emm386.Exe”后,纯DOS将从“实模式”进入到“保护模式”,但此时纯DOS是在“特权级0”的保护模式下运行,代码不受影响!

由于上面的代码用到了32位指令,特修改16位代码为:
BOOL IsWindowVM()
{
        DWORD dwCr0;
        WORD  wMsw;

        //read MSW
        __emit__(0x0F, 0x01, 0xE0);//asm mov smsw ax
        asm mov wMsw, ax

        //Read cr0
        asm mov ax, wMsw
        asm inc ax
        __emit__(0x0F, 0x20, 0xC0); //asm mov eax, cr0

        //eax to dwCr0
        __emit__(0x66, 0x50); //asm push eax
        asm pop  ax
        asm pop  dx
        asm mov word ptr dwCr0 + 0, ax
        asm mov word ptr dwCr0 + 2, dx

        //judge
        return ((wMsw == (WORD)(dwCr0 & 0xFFFFlu)) ? FALSE : TRUE);

}

[ Last edited by firstsail on 2008-3-14 at 08:21 PM ]

2008-3-7 19:47
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
fgckfl
初级用户




积分 46
发帖 22
注册 2006-11-13
状态 离线
『第 245 楼』:  winsail 能支持usb读取吗?

winsail 能支持usb读取吗?

2008-3-7 21:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
godai
初级用户





积分 28
发帖 13
注册 2008-2-18
状态 离线
『第 246 楼』:  

文件已收到。 非常感谢郭兄!

2008-3-8 00:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fgckfl
初级用户




积分 46
发帖 22
注册 2006-11-13
状态 离线
『第 247 楼』:  

顶一下

2008-3-14 12:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 248 楼』:  文件打开框完善了对软驱的访问

文件打开框完善了对软驱的访问,在这里特别感谢“godai”兄寄来的软驱和软盘!

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




积分 46
发帖 22
注册 2006-11-13
状态 离线
『第 249 楼』:  表格控件的问题

请问郭兄,如何处理能设置表格每单元格的背景色或字体颜色。
另加载doslen后,在bc下可以打开,保存长文件名文件,但是您的文件框不支持
长文件名显示,可以解决吗?
希望对完善和加强winsail有点意义。

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





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 250 楼』:  设置表格每单元格的背景色或字体颜色

控件的基类CObject里面有两个函数,一个是设置控件的背景色,一个是设置控件的前景色,
设置控件的背景色:CObject::SetBackColor(int nColor);
设置控件的前景色:CObject::SetForeColor(int nColor);

假设您的表格控件pGrid1,则这样
pGrid1->SetBackColor(YELLOW);//将表格背景设置为“黄色”
pGrid1->SetForeColor(RED);//将表格的文字前景色设置为“红色”

[ Last edited by firstsail on 2008-3-21 at 12:57 PM ]

2008-3-21 12:54
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
fgckfl
初级用户




积分 46
发帖 22
注册 2006-11-13
状态 离线
『第 251 楼』:  设置表格每单元格的背景色或字体颜色

恐怕这样不行吧,您封装的函数无法单独控制每个单元格的显示设置。
提一点建议,在表格控件中,增加设置每个单元格前景色和背景色的属性,在内部显示函数中,每显示表格内容中,单独调用前景色背景色。
这样做是有实际意义的,因为有的时候工程中需要直观显示3维4维数据。颜色可以作为一维数据,我曾经做过这样的表格,不过我不会控制xms内存,所以数据量大不了。
您觉得这样怎么样?
或则能给我点资料,我来帮您完善表格控件?

2008-3-21 13:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





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

每一个单元格单独设置文字颜色和背景颜色占用的内存较大,实用性不大,不过对于每一列的颜色可单独设置我觉得意义较大。

如果需要编写非标准控件,建议从基类继承开发属于自己的新控件,例如电流表、旋钮、指示灯、温度表......




[ Last edited by firstsail on 2008-3-21 at 02:23 PM ]

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




积分 46
发帖 22
注册 2006-11-13
状态 离线
『第 253 楼』:  自己写控件的问题

自己写控件内部消息如何处理呢?能给个控件代码的完整例子吗?

2008-3-23 17:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fgckfl
初级用户




积分 46
发帖 22
注册 2006-11-13
状态 离线
『第 254 楼』:  

封装了新表格和列表控件,如何画一闪一闪的光标呢?

2008-4-4 11:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
stronger
新手上路





积分 10
发帖 5
注册 2008-4-7
状态 离线
『第 255 楼』:  

从那下载呢

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


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



论坛跳转: