请教用bcb实现在标题栏上绘画的方法(内详),众侠客请来讨论.

wangyelon 2002-08-15 07:13:08
以前在某论坛看到一个老外用VC实现的在标题栏画个大图标的方法,
就象REALPLAYER8.0一样,用到API dc 之类的东西,看的是云里雾里

还有我们常用的一些软件的标题是自绘的,
如MSN EXPLOER(应该不是把标题栏隐藏的),我曾经用一些IMAGE控件
隐去标题栏实现类似效果,但是 要用鼠标拖边框调大小就要写许多代码,
好头痛啊!所以在不改BorderStyle为bsNone情况下,用api函数或TCanvas
实现就好了.请赐教!
...全文
89 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyelon 2002-08-17
  • 打赏
  • 举报
回复
谢谢各位的解答,这个问题对我来说有点难度,
我已决定看看API的书,分数不多,大家多包涵。
Thumb168 2002-08-15
  • 打赏
  • 举报
回复
1.用hdc=GetWindowDC获得HDC句柄。
2. TCanvas *m_cnvas=new TCanvas;
3. m_cnvas->Handle=hdc;
4.你可以开始用m_canvas画画了。
5.ReleaseDC(hdc);
如果你想让程序自动刷新你的作图,你还得控制一些Windows的消息。就象 detrox说的哪个消息一样,当然,还有其它的消息也要控制。
wangyelon 2002-08-15
  • 打赏
  • 举报
回复
TO detrox(阿福的哥):
如果可以利用鼠标的事件当然最好了,
来段示例好吗
detrox 2002-08-15
  • 打赏
  • 举报
回复
在BorderStyle改为bsNone情况下,应该让程序相应WM_NCHITEST消息,
在相应过程中,使用PtInRect判断Mouse Cursor的位置,然后返回HTCAPTION等消息,根本不用自己写调整窗口的代码。
wangyelon 2002-08-15
  • 打赏
  • 举报
回复
我就是希望用TCanvas,兄台能说的更详细吗,
Thumb168 2002-08-15
  • 打赏
  • 举报
回复
先用API GetWindowDC()可以得到整个窗口的HDC(当然包括标题栏部分),利用这个HDC与TCanvas关联起来,就可以在窗口的任何一个地方画画了。当然,不用TCanvas也可以,用API也是可以的。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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