郁闷怎么上传图片,这是第一个连接
http://my.csdn.net/my/album/detail/1266450这是第二个连接
http://my.csdn.net/my/album/detail/1266450#1266449我用的环境是win7 vs2010

解决方案 »

  1.   

    对话框默认是不重绘的,最简单的就是用timer你可以在initdlg后面加个settimer(1,50,NULL);然后添加个消息WM_TIMER 在这个消息里面调用Onpaint();就会每50毫秒刷新一次你绘制的东西,你只需要在你的Draw函数里操作该画哪个哪个了
      

  2.   

    要这么麻烦?那如果我要的dialog的风格比较炫一点,那只能在timer里面不断的重画?那不太影响性能了吗
      

  3.   

    不要border,不要标题栏,只剩下一块布了。
    看看QQ登录界面,根本不是重绘标题栏。
      

  4.   

    我前阵子刚实现了BCG的效果的Dialog,楼主有兴趣可以讨论下,私信我。
    我就是把标题栏重绘的。当然像QQ那种把标题栏隐藏,在View中重绘一部分标题栏的也大有人在,原因就是好控制。
      

  5.   

    我前阵子刚实现了BCG的效果的Dialog,楼主有兴趣可以讨论下,私信我。
    我就是把标题栏重绘的。当然像QQ那种把标题栏隐藏,在View中重绘一部分标题栏的也大有人在,原因就是好控制。
      

  6.   

    大多数人觉得标题栏不好绘制的原因在于拖动caption时控制比较麻烦。因为我们的这个caption是虚拟的。其实可以这么做,响应NCHITTEST消息,返回HTCAPTION,这样整个窗口都可以拖动了。
      

  7.   

    要覆盖标题栏(非隐藏),得把标题栏上面分成三个部分的图,左边圆角部分,中间部分(用于变换对话大小),右边按钮部分
    重载WINDOWPROC(HWND hWnd ,UINT Msg ,WPARAM wParam ,LPARAM lParam)
    {
      switch(Msg)
    {
    case WM_PAINT://绘制客户区
    case WM_NCACTIVAVE://处理窗口激活 OR !激活消息
    case WM_MOUSEMOVE://客户区鼠标移动消息
    case WM_NCMOUSEMOVE://非户区(标题栏、菜单栏)鼠标移动消息
    case WM_NCLBUTTONDOWN://同上,单击消息
    case WM_NCPAINT://非客户区
    case WM_SIZE://窗口变话大小消息
    default:
    }}
    最大化窗口后重绘时,得重新计算出标题栏图片中间部分的宽度,也就是GetWindowRect出来的宽,再减去左部分和右部分,改变中间部的宽度再画。
      

  8.   

    在在win7更高版本下,窗口的绘制的逻辑和xp有差别,所以在xp下可以重绘标题栏,到win7下就会加一层win7的半透明边框。具体解决方法不知道。所以改方法,去掉标题栏,自己用控件模拟一个。