.NET中如何操作非客户区

LoveAlien 2005-01-19 10:55:35
如何向VC中的OnNcPaint一样来对窗体的非客户区进行操作。
...全文
165 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
huwei001982 2005-01-19
  • 打赏
  • 举报
回复
做这样的应用, .net 是没有 VC 方便的
FJGoodGood 2005-01-19
  • 打赏
  • 举报
回复
让你的 Form 重载 WndProc 函数,

protected override void WndProc(ref Message m)
{
if (m.Msg == WM_NCPAINT)
{
。。。。
}
base.WndProc (ref m);
}
Jim3 2005-01-19
  • 打赏
  • 举报
回复
没有这样的事件,你要自己加

可以在WndProc中截获WM_NCPAINT消息,然后用api GetWindowDC
取得窗口的hDC,然后构造一个Graphics

LoveAlien 2005-01-19
  • 打赏
  • 举报
回复
标题栏区域和控制按钮(最大、最小、关闭按钮)
nga96 2005-01-19
  • 打赏
  • 举报
回复
不会,你说的非客户区是指什么呀
Fibona 2005-01-19
  • 打赏
  • 举报
回复
up
Jim3 2005-01-19
  • 打赏
  • 举报
回复
非客户区使用GetWindowDC

[DllImport("user32.dll")]
static extern IntPtr GetWindowDC(IntPtr handle);
[DllImport("User32.dll", CharSet=CharSet.Auto)]
public static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);

if (m.Msg == WM_NCPAINT)
{
IntPtr hDC = GetWindowDC(this.Handle );
Graphics g = System.Drawing.Graphics.FromHdc(hDC);
......
g.Dispose();
ReleaseDC(this.Handle,hDC);
}
FJGoodGood 2005-01-19
  • 打赏
  • 举报
回复
using System.Runtime.InteropServices;
......
[DllImport("User32.dll", CharSet=CharSet.Auto)]
public static extern IntPtr GetDC(IntPtr hWnd);

[DllImport("User32.dll", CharSet=CharSet.Auto)]
public static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);
LoveAlien 2005-01-19
  • 打赏
  • 举报
回复
那在.NET中如何得到WindowsDC呢?在VC中可以用GetWindowDC()得到。

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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