中国DOS联盟论坛

中国DOS联盟

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

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

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




积分 478
发帖 132
注册 2003-7-2
状态 离线
『第 121 楼』:  

确实,现在显示的BMP图片好看多不了,不会变色了

1、增加设置默认项,也就是按回车时执行的默认项
2、修改现在的单选框/复选框 项-按热键为选中
3、显示BMP文件可改变大小,可有两种方式,剪辑或缩放

2006-9-28 21:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





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

WinSail V2.0 已重新上传 --- 2006-09-28 15:30

增加了按钮控件的“默认”属性,函数为
   CButton::SetDefaultFlags(BOOL bFlags);

2006-9-29 03:15
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
profree
中级用户




积分 478
发帖 132
注册 2003-7-2
状态 离线
『第 123 楼』:  

老大,太感谢你了

以前我都是把要默认的项放在最前面,现在方便多了

1、能否讲讲滚动条控件怎样使用,比如用在列表框控件或多行编辑框控件
2、滑动条控件、增值控件、和编辑控件三者“绑定”后,怎样才能保证三者的一致,
3、滑动条控件的默认值和“步长”怎么设置
4、进度条怎样设置等时间
5、进度条的表现上能否增加平滑一项,现在的是块状

[ Last edited by profree on 2006-9-29 at 04:15 ]

2006-9-29 04:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





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

问:(1)滑动条控件的默认值和“步长”怎么设置
答:
     //设置滑块的范围,相当于“步长”
     CSliderCtrl::SetRange(DWORD dwMin ,DOWRD dwMax)

     //获得滑块的范围
     CSliderCtrl::GetRange(DWORD* pdwMin ,DOWRD* pdwMax)

     //设置滑块的位置
     CSliderCtrl::SetPos(int nPos)

     //获得滑块的位置
     CSliderCtrl::GetPos()

问:(2)进度条怎样设置等时间
答:
     “进度条”没有所谓的时间间隔属性。

     //设置进度条的范围,相当于“步长”
     CSliderCtrl::SetRange(DWORD dwMin ,DOWRD dwMax)

     //获得进度条滑块的范围
     CSliderCtrl::GetRange(DWORD* pdwMin ,DOWRD* pdwMax)

     //设置进度条的位置
     CSliderCtrl::SetPos(int nPos)

     //获得进度条的位置
     CSliderCtrl::GetPos()

     进度条单词应是“CProgressCtrl”,这里有误,以后改正!

2006-9-29 06:37
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





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

上面贴子应该如下所示:

问:(1)滑动条控件的默认值和“步长”怎么设置
答:
     //设置滑块的范围,相当于“步长”
     CSliderCtrl::SetRange(DWORD dwMin ,DOWRD dwMax)

     //获得滑块的范围
     CSliderCtrl::GetRange(DWORD* pdwMin ,DOWRD* pdwMax)

     //设置滑块的位置
     CSliderCtrl::SetPos(int nPos)

     //获得滑块的位置
     CSliderCtrl::GetPos()

问:(2)进度条怎样设置等时间
答:
     “进度条”没有所谓的时间间隔属性。

     //设置进度条的范围,相当于“步长”
     CProcessCtrl::SetRange(DWORD dwMin ,DOWRD dwMax)

     //获得进度条滑块的范围
     CProcessCtrl::GetRange(DWORD* pdwMin ,DOWRD* pdwMax)

     //设置进度条的位置
     CProcessCtrl::SetPos(int nPos)

     //获得进度条的位置
     CProcessCtrl::GetPos()

     进度条单词应是“CProgressCtrl”,这里有误,以后改正!

2006-9-29 06:39
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 126 楼』:  关于滚动条的使用

(1) 横向滚动条CHScrollBar的使用(),一般是
    <1>分配实例               
    <2>建立滚动条
    <3>设置滚动条的范围
    <4>设置滚动条的默认值
    <5>注册单击“滚动条左边按钮”事件
    <6>注册单击“滚动条拖动中间按钮”事件
    <7>注册拖动“滚动条左边按钮”事件
    <7>给滚动条分配一个不与其它控件冲突的ID号


    void far ClickScroll_Left(CHScrollBar* pScroll)
    {
        CDialog* pDialog = (CDialog *)pScroll->GetParent();
        //....
    }

    void far ClickScroll_Pos(CHScrollBar* pScroll)
    {
        CDialog* pDialog = (CDialog *)pScroll->GetParent();
        //....
    }

    void far ClickScroll_Right(CHScrollBar* pScroll)
    {
        CDialog* pDialog = (CDialog *)pScroll->GetParent();
        //....
    }

    //...


    CHScrollBar *pScrollBarH1 = new  CHScrollBar(pDialog); //分配实例
    pScrollBarH1->CreateScrollBar(100, 100, //建立滚动条
        180, SCROLL_BAR_WIDTH, NULL);
    pScrollBarH1->SetRange(0, 10); //设置范围
    pScrollBarH1->SetPos(5);  //设置默认值
    pScrollBarH1->SetScrollLeftRc(); //注册“单击左边按钮”事件
    pScrollBarH1->SetScrollPosRc();//注册“拖动中间按钮”事件
    pScrollBarH1->SetScrollRightRc();//注册“单击右边按钮”事件
    pScrollBarH1->SetID(HSCROLLBASE + 1 - 1); //设置ID号

2006-9-29 06:57
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





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

CHScrollBar *pScrollBarH1 = new  CHScrollBar(pDialog); //分配实例
    pScrollBarH1->CreateScrollBar(100, 100, //建立滚动条
        180, SCROLL_BAR_WIDTH, NULL);
    pScrollBarH1->SetRange(0, 10); //设置范围
    pScrollBarH1->SetPos(5);  //设置默认值
    pScrollBarH1->SetScrollLeftRc(::ClickScroll_Left); //注册“单击左边按钮”事件
    pScrollBarH1->SetScrollPosRc(::ClickScroll_Pos);//注册“拖动中间按钮”事件
    pScrollBarH1->SetScrollRightRc(::ClickScroll_Right);//注册“单击右边按钮”事件
    pScrollBarH1->SetID(HSCROLLBASE + 1 - 1); //设置ID号

2006-9-29 06:58
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





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

单击了横向滚动条“左按钮”时 , 滚动条会向上层控件返回“VK_SCROLL_LEFT”消息宏
拖动了横向滚动条“中间按钮”时,滚动条会向上层控件返回“VK_SCROLL_HORZ_POS”消息宏
单击了横向滚动条“左按钮”时,  滚动条会向上层控件返回“VK_SCROLL_RIGHT”消息宏

单击了竖向向滚动条“上按钮”时 , 滚动条会向上层控件返回“VK_SCROLL_UP”消息宏
拖动了竖向滚动条“中间按钮”时,滚动条会向上层控件返回“VK_SCROLL_VERT_POS”消息宏
单击了竖向滚动条“下按钮”时,  滚动条会向上层控件返回“VK_SCROLL_DOWN”消息宏

2006-9-29 07:11
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





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

(1)int CObject::SWapping()虚函数是所有控件的消息循环泵。
(2)窗口消息循环,就是不断地调用焦点控件的Swapping()函数。

2006-9-29 07:15
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





积分 668
发帖 295
注册 2005-7-26
来自 广东深圳
状态 离线
『第 130 楼』:  关于“控件基类的消息泵”

控件基类CObject的消息泵Swapping()函数源代码如下

int CObject::DefaultSwapping()
{
        int nKey = 0;
        int nX , nY;

        if (AfxKbhit())
        {
        nKey = ::bioskey(0);
        }

        if (nKey != 0)
        {
            return (nKey);
        }

        ::IsMouseDown(MOUSE_LEFT);
        nX = ::GetMouseX();
        nY = ::GetMouseY();

        if ((SystemMouse.statue & MOUSE_LEFT) == MOUSE_LEFT)
        {
            if (this->IsClientRect(nX, nY))
            {
                nKey = VK_MOUSE_DOWN_LEFT;
            }
            else if (this->IsScreenRect(nX, nY))
            {
                nKey = VK_MOUSE_CLIENT_OUT;
                if ((m_dwSort & WINDOW_SORT) != WINDOW_SORT)
                {
                    nKey = 0;
                }
            }
           else
          {
                nKey = VK_MOUSE_SCREEN_OUT;
          }
        }
        else if ((SystemMouse.statue & MOUSE_RIGHT) == MOUSE_RIGHT)
        {
            if (this->IsClientRect(nX, nY))
            {
                nKey = VK_MOUSE_DOWN_RIGHT;
            }
            else if (this->IsScreenRect(nX, nY))
            {
                nKey = VK_MOUSE_CLIENT_OUT;
                if ((m_dwSort & WINDOW_SORT) != WINDOW_SORT)
                {
                    nKey = 0;
                }
            }
            else
            {
                nKey = VK_MOUSE_SCREEN_OUT;
            }

        }

        if (nKey != 0)
        {
            return (nKey);
        }

        nKey = this->VirtualKeyboard();

        return(nKey);

}

int CObject::Swapping()
{
        return(this->DefaultSwapping());

}

2006-9-29 07:24
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
profree
中级用户




积分 478
发帖 132
注册 2003-7-2
状态 离线
『第 131 楼』:  

一、SetDefaultFlags函数有问题,当把某一项设为默认后,按Tab键把焦点移到另外一项,再按回车,执行的并不是焦点所在项,而是设置的默认项,在跟我们现在使用的Windows对话框的操作是不一致的

二、关于鼠标动作的响应问题,应该是鼠标按下直到释放才执行(应该是release吧,现在的是press),比如说在一个按钮上,应该是在按钮内按下鼠标左键,直到左键释放,当然范围也应是在按钮范围内,如果在按钮范围外释放,则操作无效

2006-9-29 22:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





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

WinSail 已经重新上传 2006-09-29 13:00

(1)SetDefaultFlags()已经重新“修正”

(2)“进度条”类的名称,已由“CProcessCtrl”更名为正确的“CProgressCtrl”

2006-9-30 01:20
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
profree
中级用户




积分 478
发帖 132
注册 2003-7-2
状态 离线
『第 133 楼』:  

随时和“官方”保持同步更新。

使用哪种字体在哪里设置?在config.sys文件里设置的显示属性起效,但设置的字体不起作用,我只能把字体改为默认的display.fon

2006-9-30 04:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
firstsail
高级用户





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

To Profree:

由于历史原因,Config.Sys文件的[Display]段的Font键是“布尔值”,需要升级为“字符串”类型才行,计划明天早上前更前WinSail
   比如说:
      
[Display]
Font = "Font\DisplayX.Fon"  ; 使用宋体



请告诉我
hzk16C、Hzk16F、HZK16H、HZK16K、HZK16L、HZK16S
HZK16V、HZK16X、HZK16Y的字库中文名称是什么

2006-9-30 04:49
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
profree
中级用户




积分 478
发帖 132
注册 2003-7-2
状态 离线
『第 135 楼』:  

我的理解是这样的:
Hzk16F--仿宋
HZK16H--黑体
HZK16K--楷体
HZK16L--隶书
HZK16S--宋体
HZK16X--细圆
HZK16Y--幼圆

字体是在这里下载的,也有说明:
http://www.cn-dos.net/forum/viewthread.php?tid=18934

2006-9-30 05:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] ... [20] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: