我想把对话框设置为透明,但是我一移动它它居然不更新的!!!总是保持着原来的截图,只有把背景(比如是在桌面)刷新一下它才更新,但是一移动它还是不会随着改变郁闷哦请问大虾们怎么办呀?是要在OnMove()里面加东西吗?还是在OnPaint()里面?
谢谢谢谢啦!!!
^_^

解决方案 »

  1.   

    我说的设置为透明是在VS里面的属性面板里直接改的,然后在代码里又加了
    SetBkMode(dc,TRANSPARENT);但是好像没什么用。
    怎么办呀???没有人知道吗???
      

  2.   

    你在WM_MOVE消息的响应函数中用Invalidate(true)函数强制更新,这样你一移动窗口,就会发送WM——MOVE消息,而它的响应函数就会更新它。
    试试吧!
      

  3.   

    你应该使用SetLayeredWindowAttributes这个API.
      

  4.   

    TO rollor_phoe(柔枫) 
       我试了,不行呀。
    void CMyDialogDlg::OnMove(int x, int y)
    {
    CDialog::OnMove(x, y);
    // TODO: 在此处添加消息处理程序代码
    Invalidate(true);
    }
      

  5.   

    SetLayeredWindowAttributes就用这个简单,这个是WIN2000以上才支持的API,如果是VC6,先加载相应的动态库再获得该函数指针,使用之.....
      

  6.   

    我的系统是XP的,但是我用这个函数编译器总是不认识!我在MSDN里面查了,有这个函数的,并且正是我想要的!但是为什么不能用呀....好郁闷....
      

  7.   

    使用LoadLibrary("User32.DLL");然后GetProcAddress吧!
      

  8.   

    SetLayeredWindowAttributes这个函数后来终于试成功了,不过是看别人的代码弄成的但是如果不用这个函数的话,难道就没有办法吗?反正我是没有试成功,效果就像我上面说的,可以作到在一开始的时候透明,但是一移动就破坏掉了。有谁试成功的么?麻烦告诉一下!!!谢谢!!!另外,SetLayeredWindowAttributes这个函数真的很不错,就是我要的效果,谢谢大家!:)