请问: 如何用鼠标拖拽改变无边框窗体大小
在以前的贴子里看到:
[DllImport("user32.dll",EntryPoint="SendMessage")]
public static extern int SendMessage(int hWnd,int wMsg,int wParam,int lParam);
public const int WM_SysCommand = 0x0112;
public const int SC_MOVE = 0xF012;
SendMessage(this.Handle.ToInt32(),WM_SysCommand,SC_MOVE,0);
实现拖动无边框窗的方法.
但我想用 SC_SIZE = 0xF000 改变窗体大小的时候, 鼠标总是被固定于 Form的中心; 请问如何才能用鼠标拖拽改变无边框窗体大小
问题点数:0、回复次数:6Top
1 楼devas()回复于 2004-05-03 22:12:53 得分 0
每次改变大小的时候动 重绘速度太慢; 能不能象有边框窗体那样,用一个虚框拖动,最后才确定大小...Top
2 楼nyucv(思索者)回复于 2004-08-18 21:10:54 得分 0
关注!Top
3 楼lxy0423((I Love Cloud))回复于 2004-08-18 21:57:43 得分 0
你在論壇里面search一下,有資料可以查的Top
4 楼BearRui(孤熊 | 带你去看海!)回复于 2004-08-18 22:16:41 得分 0
try:
-----------------------
private void Form1_Load(object sender, System.EventArgs e)
{
this.FormBorderStyle=FormBorderStyle.None;
}
private const int WM_NCLBUTTONDOWN = 0xA1;
private const int HTCAPTION = 2;
[DllImport("user32.dll", EntryPoint="SendMessageA")]
private static extern int SendMessage (int hwnd, int wMsg, int wParam, int lParam);
[DllImport("user32.dll")]
private static extern int ReleaseCapture ();
private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
//为当前的应用程序释放鼠标捕获
ReleaseCapture();
//发送消息,让系统误以为你在标题拦上按下鼠标
SendMessage((int)this.Handle,WM_NCLBUTTONDOWN,HTCAPTION,0);
}Top
5 楼BearRui(孤熊 | 带你去看海!)回复于 2004-08-18 22:52:16 得分 0
不好意思,看错题目了,以为是拖动无标题窗口!!!
http://www.microsoft.com/china/community/Column/60.mspx
Top
6 楼Mycro(⊕☆夜海星空:上过大学的的农民☆⊕)回复于 2004-08-18 23:00:40 得分 0
通过,判断鼠标的位置,mousemove,mousedown
然后改变,这是真理。。
我研究过了。。Top




