我希望,当单击对话框,修改对话框边框样式为凹下去的。
      我在单击事件中加入如下代码:     void CTestDlg::OnLButtonDown(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default //long re = SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE, WS_EX_CLIENTEDGE);
this->ModifyStyleEx(1,WS_EX_CLIENTEDGE); CDialog::OnLButtonDown(nFlags, point);
}
       我分别使用了SetWindowLong和ModifyStyleEx函数,都不起作用,反而在双击后产生效果(双击事件产生全屏效果,已经实现)

解决方案 »

  1.   

    invalidate()
    你要刷新窗口后,效果才显示
      

  2.   

    可能是对话框不允许动态修改WS_EX_CLIENTEDGE风格样式,只能静态编辑
      

  3.   

    我的处理方法是设置之后MoveWindow一下
      

  4.   

    试了一下,在改变对话框的大小以后,再调用MoveWindow确实是可以设置凹下风格,但是如果没有改变对话框的大小,直接调用MoveWindow仍然不起作用,强制刷新Invalidate/InvalideRect也不起作用,但是最小化再还原就可以,如果没有调用MoveWindow,最小化再还原也没有效果不知道是MS的bugvoid CXXXDlg::OnLButtonDown(UINT nFlags, CPoint point) 
    {
    // TODO: Add your message handler code here and/or call default

    CDialog::OnLButtonDown(nFlags, point);
    //MoveWindow(CRect(20, 20, 400 ,300));
    ModifyStyleEx(0,WS_EX_CLIENTEDGE);
    CRect rc;
    GetWindowRect(rc);
    rc.InflateRect(1, 0);
    MoveWindow(rc);
    }
      

  5.   

    rc.InflateRect(1, 0);
    这一句重新设置了对话框的大小
    你再设置回来再MoveWindow一下就好了
    不过对话框应该会闪一下
      

  6.   

    其实,我想实现的功能就是“对话框动态添加边框”,每单击一下对话框边框改变,或者边框颜色改变也行
         不使用ModifyStyleEx也可以,不限制方法