您的位置:程序门 -> vc/mfc -> 界面



标题栏重绘 模拟实现按钮时 如何实现按钮那样在 左键按下后拖动时 不拖动窗口


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


标题栏重绘 模拟实现按钮时 如何实现按钮那样在 左键按下后拖动时 不拖动窗口[已结贴,结贴人:huliquns]
发表于:2007-09-16 15:29:08 楼主
如上
发表于:2007-09-16 16:06:401楼 得分:40
uint   hit   =   cframewnd::onnchittest(point);
        if   (   hit   ==   htcaption   &&   <point在按钮绘制区> )  
        {
                return   htclient;
        }
        else
                return   hit;

参考下文,反其道而行之:
http://www.codeproject.com/dialog/dragwindows.asp
发表于:2007-09-17 09:58:082楼 得分:0
这样一来又回出现新问题   它的onncmousemove   方法   也会忽略该区域   还是不能不能模拟hover效果   以及   down效果  
t_t   试试其他方法   。
发表于:2007-09-17 10:20:313楼 得分:0
http://www.codeproject.com/buttonctrl/custombitmapbuttondemo.asp?df=100&forumid=107186&exp=0&select=2141289
发表于:2007-09-17 11:40:344楼 得分:30
uint   cxxxdlg::onnchittest(
      cpoint   point  
)

{
    uint   nhit   =   cwnd::onnchittest(point);
    crect   btnrect;
    //   在这里获得你的button的rect
    if(nhit   ==   htcaption   &&   btnrect.ptinrect(point))
    {
        return   0;
    }
    return   nhit;
}
发表于:2007-09-17 11:57:485楼 得分:0
http://www.codeproject.com/buttonctrl/custombitmapbuttondemo.asp?df=100&forumid=107186&exp=0&select=2141289

这里的方法是做了一个非模态   窗口来实现   -.-   问题也满多的  
我的想法是实现类似   qq   2007   标题栏   中的那种   按钮   有hover   down   normal   状态
用标题栏重绘的方法   就遇见了   我提得那个问题  
我也试验了   取消标题栏   然后在   client   区域模拟实现   标题栏功能     但是   那样重绘圆角窗口时又有问题  
重绘时   圆角边框  
使用resize效果   就只有   2条变能够用来改变大小   而且   角处也不能改变大小了
虽然可以自己做消息函数来解决  

各位大大   还有没有别的更好方法   可以实现一个漂亮的   标题栏?

发表于:2007-09-17 12:28:316楼 得分:0
http://www.codeproject.com/buttonctrl/ccaptionbutton.asp
发表于:2007-09-17 13:01:107楼 得分:0
顶   楼上的  
那个代码   我之前也看过了  
他只能响应按钮的一个事件     也就是   只能相应lbuttonup   或者   down   所以这么做出来的效果感觉还没有重绘来的效果好  
不强求了   =.=   相似就好了
发表于:2007-09-17 13:04:098楼 得分:0
你可以自己再加一些处理
发表于:2007-09-17 13:15:409楼 得分:30
感觉还是去掉caption,然后自己处理灵活一些,这样以后需求再有变动不用束手无策了!
自己实现也没有那么费劲,鼠标拖拽窗口也自己实现,算个圆角的边框还不很easy!
发表于:2007-09-17 13:20:1710楼 得分:0
恩     还是去掉caption   模拟实现   吧     这样   消息传递也方便点
在标题栏   模拟   实现控件   总觉得   好麻烦
发表于:2007-09-17 13:29:3611楼 得分:0
我给你简单做了个例子
能实现你要的功能
你看一下吧
可能还有一些问题或更好的实现方法
共同讨论一下吧


快速检索

最新资讯
热门点击