![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-14 23:23 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行 |
| DOS开发编程 & 发展交流 (开发室) » DOS的界面开发终结者 |
| 可打印版本 98,388 / 290 |
| 第241楼 firstsail | 发表于 2008-03-06 20:48 |
| 高级用户 发帖 295 积分 668 来自 广东深圳 | |
|
如果godai 兄对“文件打开框”感兴趣的话,可以将您的邮箱告诉我,我会将对应模块源代码发给您,您修改后可以代替“sail.lib”编程库文件里面的“filedlg.obj”模块
|
|
| 第242楼 godai | 发表于 2008-03-07 01:45 |
| 初级用户 发帖 13 积分 28 | |
|
那非常感谢! 我的邮箱是bingxizhao@tom.com
希望能进一步与您探讨sail软件的完备与应用! 关于windows与dos的问题兼容版本的问题, 我也还没想到更好的办法。 明天再到单位机器上试验一下看看。 另: 您写的这么好的dos下实用程序竟然没有诸如软驱类的设备吗? 真的不容易了! 呵呵。 如果需要的话我这里有,可以给您寄个过去做试验。 |
|
| 第243楼 firstsail | 发表于 2008-03-07 13:35 |
| 高级用户 发帖 295 积分 668 来自 广东深圳 | |
|
邮件已发送到bingxizhao@tom.com
|
|
| 第244楼 firstsail | 发表于 2008-03-07 19:47 |
| 高级用户 发帖 295 积分 668 来自 广东深圳 | |
|
找到一个判断“程序是否是在纯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 ] |
|
| 第245楼 fgckfl | 发表于 2008-03-07 21:07 |
| 初级用户 发帖 22 积分 46 | |
|
winsail 能支持usb读取吗? winsail 能支持usb读取吗?
|
|
| 第246楼 godai | 发表于 2008-03-08 00:55 |
| 初级用户 发帖 13 积分 28 | |
|
文件已收到。 非常感谢郭兄!
|
|
| 第247楼 fgckfl | 发表于 2008-03-14 12:38 |
| 初级用户 发帖 22 积分 46 | |
|
顶一下
|
|
| 第248楼 firstsail | 发表于 2008-03-14 20:17 |
| 高级用户 发帖 295 积分 668 来自 广东深圳 | |
|
文件打开框完善了对软驱的访问 文件打开框完善了对软驱的访问,在这里特别感谢“godai”兄寄来的软驱和软盘!
|
|
| 第249楼 fgckfl | 发表于 2008-03-21 10:25 |
| 初级用户 发帖 22 积分 46 | |
|
表格控件的问题 请问郭兄,如何处理能设置表格每单元格的背景色或字体颜色。
另加载doslen后,在bc下可以打开,保存长文件名文件,但是您的文件框不支持 长文件名显示,可以解决吗? 希望对完善和加强winsail有点意义。 |
|
| 第250楼 firstsail | 发表于 2008-03-21 12:54 |
| 高级用户 发帖 295 积分 668 来自 广东深圳 | |
|
设置表格每单元格的背景色或字体颜色 控件的基类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 ] |
|
| 第251楼 fgckfl | 发表于 2008-03-21 13:14 |
| 初级用户 发帖 22 积分 46 | |
|
设置表格每单元格的背景色或字体颜色 恐怕这样不行吧,您封装的函数无法单独控制每个单元格的显示设置。
提一点建议,在表格控件中,增加设置每个单元格前景色和背景色的属性,在内部显示函数中,每显示表格内容中,单独调用前景色背景色。 这样做是有实际意义的,因为有的时候工程中需要直观显示3维4维数据。颜色可以作为一维数据,我曾经做过这样的表格,不过我不会控制xms内存,所以数据量大不了。 您觉得这样怎么样? 或则能给我点资料,我来帮您完善表格控件? |
|
| 第252楼 firstsail | 发表于 2008-03-21 14:20 |
| 高级用户 发帖 295 积分 668 来自 广东深圳 | |
|
每一个单元格单独设置文字颜色和背景颜色占用的内存较大,实用性不大,不过对于每一列的颜色可单独设置我觉得意义较大。
如果需要编写非标准控件,建议从基类继承开发属于自己的新控件,例如电流表、旋钮、指示灯、温度表...... ![]() [ Last edited by firstsail on 2008-3-21 at 02:23 PM ] |
|
| 第253楼 fgckfl | 发表于 2008-03-23 17:16 |
| 初级用户 发帖 22 积分 46 | |
|
自己写控件的问题 自己写控件内部消息如何处理呢?能给个控件代码的完整例子吗?
|
|
| 第254楼 fgckfl | 发表于 2008-04-04 11:26 |
| 初级用户 发帖 22 积分 46 | |
|
封装了新表格和列表控件,如何画一闪一闪的光标呢?
|
|
| 第255楼 stronger | 发表于 2008-04-07 14:42 |
| 新手上路 发帖 5 积分 10 | |
|
从那下载呢
|
|
| 上一页 1 … 14 15 16 17 18 19 20 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |