花差花差

像写情书一样写代码

用户操作
[即时聊天] [发私信] [加为好友]
花差花差ID:fzd999
168682次访问,排名476(1),好友4人,关注者37人。
物格而后知致,知致而后身修~
fzd999的文章
原创 46 篇
翻译 0 篇
转载 0 篇
评论 771 篇
花差花差的公告

这里全部是我的原创,一点一滴积累下来的文字。
闲时,总喜欢把玩自己写的小玩艺,细细读网友的评论,然后再看一遍。
如果你是我的朋友,很开心你能来这里做客,如果你是匆匆过客,也希望小坐一会儿,留下几字评论。

最近评论
wangtianyou1981:与客户的沟通是必须的。如何去引导客户将其需求引导出来才是关键。对于团队的管理的确是要进行责任与权力的分配,当让最好的办法就是定制相应的奖惩与考核办法。
chxksh:管理岗位也有很多种.层级不同,对技术的要求也不同,混而论之,就很难一概而论了. 文中所说的管理者应该是比项目经理更高的层级.我赞同.
sap99:www.sap99.com/,SAP99资料多多

SAP免费资料下载
http://www.sap99.com

有很多的学习资料,推荐一下,
zhaowanru19:你来上海了。。。
我都不知道。。。
呵呵。。。
最近工作怎样?
忙不。。。

lyai007:要跟你做個朋友不知道可不可以
文章分类
收藏
    相册
    值得纪念的一切
    我的朋友们
    ee——左边风景
    团团的饭团
    大东——东大传说
    大雨仔
    我们的婉如同学
    我心如水
    流风轩主——颜鹏
    默默——心绪缥缈
    友情链接
    Dicky'Blog
    sugi的暗黑木屋
    南京程序员之家
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 探讨CtreeCtrl::SortChildrenCB收藏

    新一篇: 透视日本人的企业观念 | 旧一篇: 高级程序员考试英语试题详解(2000~2002)

    探讨CtreeCtrl::SortChildrenCB

      在实际开发中,我们往往需要对树控件(CTreeCtrl)的节点进行排序。事实上,大部分的排序工作可以用CTreeCtrl::SortChildren来实现,不过CTreeCtrl::SortChildren是简单的通过树项目名称排序,假如要实现个性化排序,则需要借助SortChildrenCB

      CTreeCtrl::SortChildrenCB这个函数用来实现对树控件的个性化排序,但是,由于这个函数本身的缺陷,初学者很难自如的使用这个函数来对树进行排序,往往失败了还不知道是什么原因。在这里,我将详细介绍一下SortChildrenCB的用法。

      首先看看SortChildrenCB的定义:

    BOOL SortChildrenCB( LPTVSORTCB pSort );

    typedef struct tagTVSORTCB

    {

            HTREEITEM       hParent;

            PFNTVCOMPARE  lpfnCompare;

            LPARAM          lParam;

    } TVSORTCB, *LPTVSORTCB;

    解释一下各个参数的含义:

    LPTVSORTCB psort 这是一个结构体,包含了执行本函数必须的数据。

    hParent 这个参数标志的是一个树的某一项,我们要排序的,就是这个项的子项。

    lpfnCompare 这个参数标志的是一个很重要的回调函数,下面会单独介绍。

    lParam 这个参数是指向要排序的树控件的指针

      我刚才说到,lpfnCompare是一个很重要的参数,这是因为它所标志的回调函数,将直接影响到排序的结果:

    typedef int (CALLBACK *PFNTVCOMPARE)(

    LPARAM lParam1,

    LPARAM lParam2,

    LPARAM lParamSort);

      这就是排序回调函数的定义。

      假如你用过STL,就一定知道qsort(),这个快速排序函数也要引用一个回调函数来判别两个数据项的大小,TreeCtrl的这个回调函数,恰好类似于qsort的回调函数。当我们认为第一个项应该靠前时,返回一个负数;当我们需要颠倒两个项时,返回一个整数;当我们认为两个项等价时,我们返回0。这样的定义,恰好和strcmp的返回值相同,因此我们可以很容易的写出与SortChildren等价的回调函数:

    int CALLBACK CTestIconDlg::MyCompareProc(LPARAM lParam1,

                                       LPARAM lParam2,

                                       LPARAM lParamSort)

    {

         CTreeCtrl*   pTree = (CTreeCtrl *) lParamSort;

         CString    strItem1 = pmyTreeCtrl->GetItemText((HTREEITEM) lParam1);

         CString    strItem2 = pmyTreeCtrl->GetItemText((HTREEITEM) lParam2);

        

         return strcmp(strItem2, strItem1);

    }

    在这里,我要着重说明两点:

    第一,看到lParamSort了吗?它就是你刚才为TVSORTCB::lParam所赋的值。

    第二,lParam1lParam2是什么?树的两个项的data,你可以用SetItemData来指定。在刚才的例子里面,我们可以断定它是曾经执行了类似于

    HTREEITEM hLeaf = m_Tree.InsertItem(&tciItem);

    m_Tree.SetItemData(hLeaf, (DWORD)hLeaf);

    的代码。在这段代码里面,该项的HTREEITEM被设置成了自身的Data。这很关键,因为这个值就是排序的依据。

    好了,对于就介绍CTreeCtrl::SortChildren就介绍到这里

    发表于 @ 2004年08月20日 17:09:00|评论(loading...)|编辑

    新一篇: 透视日本人的企业观念 | 旧一篇: 高级程序员考试英语试题详解(2000~2002)

    评论

    #Joadan 发表于2005-06-17 17:01:00  IP: 61.186.252.*
    你这个文档不是照搬MSDN吗,能不能给各例子阿
    #Pangxihu 发表于2005-07-15 15:33:00  IP: 61.186.252.*
    感谢花差花差,正迷惘中搜到这个网页,解决了问题!

    MyCompareProc(LPARAM lParam1, LPARAM lParam2,LPARAM lParamSort)函数中的lParam1,lParam2是通过SetItemData()设置给Item的Data,不一定是item本身HTREEITEM,
    如果不仔细看,MSDN上的例子足以形成误导


    #asssasharp 发表于2005-07-18 15:32:00  IP: 61.186.252.*
    帮了大忙了.希望以后多向您学习
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 花差花差