VC 修改边框样式

wayne888 2010-06-08 11:18:29
我希望,当单击对话框,修改对话框边框样式为凹下去的。
我在单击事件中加入如下代码:

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函数,都不起作用,反而在双击后产生效果(双击事件产生全屏效果,已经实现)
...全文
308 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2010-06-08
  • 打赏
  • 举报
回复
我的处理方法是设置之后MoveWindow一下
Eleven 2010-06-08
  • 打赏
  • 举报
回复
可能是对话框不允许动态修改WS_EX_CLIENTEDGE风格样式,只能静态编辑
小楫轻舟 2010-06-08
  • 打赏
  • 举报
回复
invalidate()
你要刷新窗口后,效果才显示
wayne888 2010-06-08
  • 打赏
  • 举报
回复
其实,我想实现的功能就是“对话框动态添加边框”,每单击一下对话框边框改变,或者边框颜色改变也行。。。
不使用ModifyStyleEx也可以,不限制方法
向立天 2010-06-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wayne888 的回复:]
4# 的高手,你的方法试过了。。。。可以显示了,为什么每次单击,对话框就要变宽一些。。。。

如果一直单击下去。。。。。。。
[/Quote]
rc.InflateRect(1, 0);
这一句重新设置了对话框的大小
你再设置回来再MoveWindow一下就好了
不过对话框应该会闪一下
wayne888 2010-06-08
  • 打赏
  • 举报
回复
4# 的高手,你的方法试过了。。。。可以显示了,为什么每次单击,对话框就要变宽一些。。。。

如果一直单击下去。。。。。。。
Eleven 2010-06-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xianglitian 的回复:]
我的处理方法是设置之后MoveWindow一下
[/Quote]
试了一下,在改变对话框的大小以后,再调用MoveWindow确实是可以设置凹下风格,但是如果没有改变对话框的大小,直接调用MoveWindow仍然不起作用,强制刷新Invalidate/InvalideRect也不起作用,但是最小化再还原就可以,如果没有调用MoveWindow,最小化再还原也没有效果。。。不知道是MS的bug

void 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);
}

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧