本帖最后由 qurrel 于 2009-10-16 11:04:59 编辑

解决方案 »

  1.   

    1、去除窗口标题栏风格,在客户区上自行绘制标题栏;
    2、客户区上的控件自然能正常工作、响应鼠标等;
    3、通过在客户区上响应WM_NCHITTEST并做相应处理或者在WM_LBUTTONDOWN时PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, 0)即可移动窗口。
      

  2.   

    有正宗的方法,我在codeproject上看过,我现在没找到。
    我们国人写的文章!
      

  3.   

    自己模拟标题栏,也就是说关闭,最大化,最小化也要自己做,感觉也很复杂,我打算在标题栏上画假控件,说是控件其实就是能响应鼠标左键右键就行。
    不知道有没有人有类似的经历,能提个code参考吗?
      

  4.   

    codewarrior,请问有参考code吗?
      

  5.   

    还有一个问题,重载OnNcPaint后,整个非client区都要自己画吗?能在windows的基础上修改吗?该怎么做呢?
      

  6.   

    看了这么多回帖,加上我的学习,我总结一下:
    1.要想在title bar上做文章,必须使用windowdc,而且应该在NC里处理;
    2.我想保留目前的title bar主要是不希望跟windows 缺省的窗口形式有差别;
    3.当然我希望在title bar的里面取出一段区域自己画自己的控件;做了一些实验后发现,只要ncpaint里调用了default(),我画的东西就看不到了,如果不调用default(),我画的东西就能看到,那这里的问题就是我的title bar需要完全的自己画,我不太希望这样;因为即使位置计算正确,我还没有试DrawFrameControl,这种做法肯定与windows不同版本的时的缺省样式不一样,所以我希望的是windows画好之后我在基础上修改,请问有办法吗?总感觉应该是可行的,但不知道该怎么做,可能问题的关键就是要想明白为什么:在ncpaint里调用了default()之后自己画的东西就看不到了。
      

  7.   

    使用DrawFrameControl之后,不知道为啥MDI的边框都是灰色的,应该就是说那个draw edge的颜色变灰了,跟windows缺省窗口不一样
      

  8.   

    处理WM_NCPAINT和WM_NCACTIVATE消息, 在里面先调用系统默认的, 再通过CWindowDC自己画就好了, 可以参考下这个http://d.download.csdn.net/down/1730379/weiym
      

  9.   

    只要我一调用CWindowDC,我的窗口边框就变灰色,是因为vista的原因吗?