我想用MFC的tab contorl实现类似于excel 的sheet的拖动和双击重命名功能,页面的话就像你在桌面点击右键打开属性后的界面一样,我刚接触MFC,很多都不懂,希望大神们回答的尽可能的有步骤和代码,谢谢

解决方案 »

  1.   

    可以自绘窗口 
    看看这个http://www.codeproject.com/Articles/1786/Ownerdraw-Tab-Controls-Borders-and-All
      

  2.   

    控件自绘本来就不容易,没简单的,关键是思路别乱。
    双击重命名思路:双击时捕获坐标和Tab项的宽高,动态创建CEdit控件完全盖住Tab项,在CEdit控件内输入名字;当出入会车时,用CEdit控件值修改对应的Tab项,销毁CEdit控件,OK了。
    拖动也是一样的:获取坐标等值,动态创建控件,移动时MoveWindow调整位置,判断落点(CRect::PtInRect(Cpoint ponit))、复制等操作,销毁控件。
    写完发现,好像不关自绘的事,用控件的动态创建。
      

  3.   

    codeproject 上有个CustomTabCtrl 默认风格就是EXCEL.
      

  4.   


    思路很清楚,但是时间比较紧,要是完全自己写的话时间不够,有没有类似的demo?,谢谢
      

  5.   

    你从CWnd类继承一个窗口来弄自己的Tab控件,要怎么样都行
      

  6.   

    新建一个类,选择父类为generic CWnd然后画你要的tab每个tab是一个六个点的区域定义一个数据结构就可以管理了typedef NNN
    {
       point p[6];
       char  name[50];
       COLORREF bkColor;
    }XTAB;如果你有10个项,就定义XTAB mt[10];
    在派生的类里定义函数来实现就可以了
    检查鼠标按下消息,用个点创建的区域来判断
    把对以项的序号以消息方式发给父窗口就可以了