在wince下(解决马上给分):如何自画对话框上的标题栏?如何让话框上有标题栏而没有边框?

tyf8888   2009-4-20 13:38 楼主
响应wm_NcPaint会产生编译错误?

回复评论 (19)

自己重写一个标题栏控件,我的就是这么做的
点赞  2009-4-20 13:51
引用: 引用 1 楼 liangxd09 的回复:
自己重写一个标题栏控件,我的就是这么做的

标题栏不是独立的控件?
重写一个标题栏控件,又怎么替换话框的标题栏?
提供你的代码参考
点赞  2009-4-20 13:59
自己没有标题栏的就行了,然后自己画
点赞  2009-4-20 14:00
引用: 引用 3 楼 ultrapro 的回复:
自己没有标题栏的就行了,然后自己画

这我知道,我就是针对标题栏,而不是自己画个
点赞  2009-4-20 15:20
引用: 引用 3 楼 ultrapro 的回复:
自己没有标题栏的就行了,然后自己画

这个我知道,但不是我要的
点赞  2009-4-20 15:21
WinCE与windows编程还是有点区别的,在winCE里好像没有WM_NCPAINT这个消息.建议你把对话框设置成无标题栏,然后自再画一个标题栏.这样你可以在标题栏的WM_PAINT消息里自画了.
点赞  2009-4-20 17:16
引用: 引用 6 楼 ceFighter 的回复:
WinCE与windows编程还是有点区别的,在winCE里好像没有WM_NCPAINT这个消息.建议你把对话框设置成无标题栏,然后自再画一个标题栏.这样你可以在标题栏的WM_PAINT消息里自画了.

那样就要自己处理标题的拖动了,有什么另外的方式自画标题栏吗
点赞  2009-4-20 19:43
处理窗口的拖动也不是很复杂的。
点赞  2009-4-20 20:16
对话框隐藏标题栏,自己画标题栏,并且处理拖动。虽然麻烦,但不复杂,只要解决了一次,以后就随时照搬了。
点赞  2009-4-20 20:25
引用: 引用 9 楼 shuiyan 的回复:
对话框隐藏标题栏,自己画标题栏,并且处理拖动。虽然麻烦,但不复杂,只要解决了一次,以后就随时照搬了。


只能这样处理
点赞  2009-4-20 21:01
SetWindowRgn把边框裁剪掉。
点赞  2009-4-20 22:55
问题是我的对话框是disable的,如何使之move?我在代码中发送消息给对话框却无效,不知道怎么办
点赞  2009-4-21 09:31
在enable时可以如下移动对话框:
1、CDialog::OnNcHitTest中: return HTCAPTION;

2、PostMessage(WM_NCLBUTTONDOWN,   HTCAPTION,   MAKELPARAM(point.x,   point.y));
3、SendMessage( WM_SYSCOMMAND,0xF012,0)

disable时如何做?
点赞  2009-4-21 09:37
首先窗口不要标题:
然后给窗口贴背景图:

给自绘标题栏贴 背景就是下面的 CRect()指定的地方。

在onpaint函数里加入下       
m_MemDC.DrawText(m_strCaption,CRect(0,0,长,高),DT_CENTER|DT_VCENTER);

然后bitbilt的就可以了。
点赞  2009-4-21 10:05
其中 CRect() 中指定你标题栏的起始位置(x,y,w,h)就是0,0,长,高, 然后strCaption 就是你的自绘标题内容。

自己实现下,就几行代码。
点赞  2009-4-21 10:08
引用: 引用 14 楼 papapa123123 的回复:
首先窗口不要标题:
然后给窗口贴背景图:

给自绘标题栏贴 背景就是下面的 CRect()指定的地方。

在onpaint函数里加入下
m_MemDC.DrawText(m_strCaption,CRect(0,0,长,高),DT_CENTER|DT_VCENTER);

然后bitbilt的就可以了。


问题不是自绘标题栏了,是disable的,如何使之move?
点赞  2009-4-21 10:17
自画,然后处理需要move到的地方,在move到的地方重新paint 不可以了?
点赞  2009-4-21 13:35
引用: 引用 13 楼 mydeardingxiaoli 的回复:
在enable时可以如下移动对话框:
1、CDialog::OnNcHitTest中: return HTCAPTION;

2、PostMessage(WM_NCLBUTTONDOWN,  HTCAPTION,  MAKELPARAM(point.x,  point.y));
3、SendMessage( WM_SYSCOMMAND,0xF012,0)

disable时如何做?


我本来是不想用moveWindow而达到move的效果,
这么就都没有答案,就只能处理moveWindow了唉

disable的对话框,如何使之像上面那三种方式简单一句代码就可以实现移动了?
5:00结贴
点赞  2009-4-21 13:45
用鼠标(触摸)去移吗
在DIALOG的OnLButtonDown事件里
PostMessage (WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x,point.y));
点赞  2009-4-21 17:28
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复