如何使窗体的Client部分也能象Caption那样接受用户的拖动?就像flashGet的小窗体一样

superct 2003-05-30 02:53:56
我做了一个窗体,把FormBorderStyle设为FixToolWindow, 然后把Text置空,MinimizeBox, MaximizeBox, ControlBox都设为False,这样窗体就只剩下Client部分了,但是这样的窗体没办法拖动。我需要添加什么样的代码使该窗体可以被拖动?用windows api吗?具体怎么实现?望指教。
...全文
35 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ItsToday 2003-05-30
  • 打赏
  • 举报
回复
mark.
superct 2003-05-30
  • 打赏
  • 举报
回复
谢谢coollzh(良子), tjq_tang(重新开始) 的解答。
coollzh 2003-05-30
  • 打赏
  • 举报
回复
重载消息处理函数
当程序受到(WM_NCHITTEST)的时候,改变消息的处理结果返回给系统
就是欺骗windows让他以为鼠标点到了表题栏上,这行就可以托动了
tjq_tang 2003-05-30
  • 打赏
  • 举报
回复
当拖动的时候,转换消息
if (msg.Msg == 0x0084) // WM_NCHITTEST
msg.Result = (IntPtr) 2; // HTCAPTION
else
..
注释说的很清楚
tjq_tang 2003-05-30
  • 打赏
  • 举报
回复
protected override void WndProc(ref Message msg)
{
if (msg.Msg == 0x0084) // WM_NCHITTEST
msg.Result = (IntPtr) 2; // HTCAPTION
else
base.WndProc(ref msg);
}
来源:
http://groups.google.com/groups?hl=zh-CN&lr=&ie=UTF-8&oe=UTF-8&threadm=_D3p8.73158%24in3.22907252%40typhoon.nyc.rr.com&rnum=1&prev=/groups%3Fq%3D(msg.Msg%2B%253D%253D%2B0x0084%26hl%3Dzh-CN%26lr%3D%26ie%3DUTF-8%26oe%3DUTF-8%26selm%3D_D3p8.73158%2524in3.22907252%2540typhoon.nyc.rr.com%26rnum%3D1
tjq_tang 2003-05-30
  • 打赏
  • 举报
回复
up
sim 2003-05-30
  • 打赏
  • 举报
回复
能不能解释一下你的代码?
superct 2003-05-30
  • 打赏
  • 举报
回复
To coollzh(良子):
可以解释一下你的代码么?看得不太明白
coollzh 2003-05-30
  • 打赏
  • 举报
回复
protected override void WndProc(ref Message msg)
{

base.WndProc(ref msg);
if (msg.Msg == 0x0084)
{
if(msg.Result == new IntPtr(1))
{
msg.Result = new IntPtr(2);
return;
}

}


}

111,125

社区成员

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

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

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