社区
界面
帖子详情
重画标题栏的问题
CloudWater
2003-09-13 04:29:27
我重载了WM_NC****消息,重画了标题栏,但当有WM_HITTEST消息时标题栏上的那WINDOW画的最小化,最大化按钮,关闭按钮又给出来将我画的三按钮给覆盖回去了,可是又不知如何重载WM_HITTEST或WM_NCMOUSEMOVE消息使这种现象不发生又不影响窗体正常工作,比喻说改变大小,移动等。或有什么好的办法可以解决这个问题,请大虾们指点,谢谢!
...全文
123
17
打赏
收藏
重画标题栏的问题
我重载了WM_NC****消息,重画了标题栏,但当有WM_HITTEST消息时标题栏上的那WINDOW画的最小化,最大化按钮,关闭按钮又给出来将我画的三按钮给覆盖回去了,可是又不知如何重载WM_HITTEST或WM_NCMOUSEMOVE消息使这种现象不发生又不影响窗体正常工作,比喻说改变大小,移动等。或有什么好的办法可以解决这个问题,请大虾们指点,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bcpl
2003-09-13
打赏
举报
回复
不用屏蔽原来的标题按钮,在WM_NCLBUTTONDOWN时先LockWindowUpdate禁止窗口更新,再调用默认窗口过程,再UnlockWindowUpdate()
可参考代码
http://my.6to23.com/cigarette/cd3.zip
代码是用MFC写的,上述均针对MFC而言,不过道理是相同的,希望对你有用
SlayerCarrier
2003-09-13
打赏
举报
回复
OnSize()中重画客户区。
客户区的拖动如下:
void CMXXXXDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x, point.y));
CDialog::OnLButtonDown(nFlags, point);
}
CloudWater
2003-09-13
打赏
举报
回复
long lStyle = GetWindowLong(pcs->hwnd, GWL_STYLE);
lStyle &= ~WS_CAPTION;
lStyle |= WS_MINIMIZEBOX;
SetWindowLong(pcs->hwnd, GWL_STYLE, lStyle);
SendMessage(pcs->hwnd, WM_SETICON, ICON_BIG, (LPARAM)CFormEx::m_hicon);
SendMessage(pcs->hwnd, WM_SETICON, ICON_SMALL, (LPARAM)CFormEx::m_hicon);
这样做之后,窗体的标题栏的事件都不响应了而且当将窗体变大时,增大的那部分就没标题栏了
SlayerCarrier
2003-09-13
打赏
举报
回复
sorry,我错了,还是SetWindowLong吧。
CloudWater
2003-09-13
打赏
举报
回复
to SlayerCarrier(狂暴杀手):
就没有ModifyStyle,老大。
SlayerCarrier
2003-09-13
打赏
举报
回复
::ModifyStyle(hWnd ,.....)//后面是一样的
CloudWater
2003-09-13
打赏
举报
回复
to kingzai(kingzai)兄:
用SDK如何做到第一行,SetWindowLong?
SlayerCarrier
2003-09-13
打赏
举报
回复
不要去掉WS_SYSMENU||WS_TITLEBAR而是WS_CAPTION,切记切记!
kingzai
2003-09-13
打赏
举报
回复
ModifyStyle( WS_CAPTION, WS_MINIMIZEBOX, SWP_DRAWFRAME );//设置图标
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CloudWater
2003-09-13
打赏
举报
回复
去掉的是WS_SYSMENU风格
SlayerCarrier
2003-09-13
打赏
举报
回复
任务栏没有程序图标?去掉的是WS_CAPTION属性,应该有的,我试过的!.用MoidfyStyle去掉啊!(好象拼错了)
SlayerCarrier
2003-09-13
打赏
举报
回复
在画标题栏的时候先使所有的区域无效试一试。
CloudWater
2003-09-13
打赏
举报
回复
如果去掉系统菜单可以解决,但在任务栏没有程序图标了,如何解决?
flyever
2003-09-13
打赏
举报
回复
up
kingzai
2003-09-13
打赏
举报
回复
将标题栏去掉,自己模拟标题栏。重载OnNcLButtonDblClk,OnNcMouseMove,OnPaint函数。
CloudWater
2003-09-13
打赏
举报
回复
我们的程序是已经做好的,没办法调整控件位置,而且有的是MDI窗体
SlayerCarrier
2003-09-13
打赏
举报
回复
这个问题我以前遇到过的,重话标题栏确实不是一种好办法。
我是这样的:把窗口的WS_CAPTION属性去掉.这样窗口就没有标题栏了。
再在客户区画一个标题栏,做几个button模仿系统菜单按钮。在实现
客户区的鼠标拖动。
[精仿]QQ2013局域网通讯(10.30更新版-带最新版界面库)
10.GDI+界面重绘,处理消息机制,3种移动模式和拉伸是否启用只需要设置一个属性的事就可以解决。 11.界面渐变闪现和闪退:不再像平凡的突然出现,采用API渐变机制,渐渐出现和消失,win7系统下还有动态缩小至任务的...
关于C#重绘
标题栏
处理
接触C#一段时间,自己写的一个窗口,想重绘窗体的
标题栏
,遇到一些
问题
和解决方法总结: 一、重绘
标题栏
的几种实现: Winform创建一个窗口,隐藏窗口的
标题栏
,自己通过拖控件实现。 引用第三方库进行实现。(这...
教你30分钟将网站封装成原生态APP
WEB网站封装APP教程 视频目录 ...优化APP 去掉
标题栏
和返回
问题
处理 7.制作安卓证书,生成APK文件 8.发布APP到各大厂商的应用商店 9.生成苹果IOS安装包的介绍和苹果应用商店上架流程 10.特殊封装 – 横屏APP
Qt
重画
标题栏
//鼠标点击
标题栏
,重新实现拖动操作 void mouseMoveEvent(QMouseEvent*event); void mousePressEvent(QMouseEvent*event); void mouseReleaseEvent(QMouseEvent*event); 2. 在头文件中添加下列三个槽函数
重绘
标题栏
在重绘
标题栏
时,一般只要重载WN_NCPAINT消息即可,但是这并不完美,因为在程序第一次启动时微软的系统按钮还是会闪一下,基本是重绘
标题栏
的软肋,通过spyXX查看发现有这么一个消息: 0004097E S message:0x00AE ...
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章