Имеется форма без рамок с одним элементом axWindowsMediaPlayer. По сути, что то типа окна плеера. Хотелось бы передвигать форму за любое место + закрывать форму по клику. Использую следующий код, но не знаю, что добавить в него, чтобы закрывать форму по клику.
public partial class Form2 : Form, IMessageFilter
{
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
public const int WM_LBUTTONDOWN = 0x0201;
public const int WM_LBUTTONUP = 0x0202;
[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();
private HashSet<Control> controlsToMove = new HashSet<Control>();
public Form2()
{
InitializeComponent();
Application.AddMessageFilter(this);
controlsToMove.Add(this);
controlsToMove.Add(this.axWindowsMediaPlayer1);
}
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == WM_LBUTTONDOWN && controlsToMove.Contains(Control.FromHandle(m.HWnd)))
{
ReleaseCapture();
SendMessage(this.Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
return true;
}
return false;
}
}
Спасибо rdorn за предложение. Решил таким образом.
public partial class Form2 : Form
{
private Point MouseDownLocation;
int x = 0;
int y = 0;
public Form2()
{
InitializeComponent();
}
private void AxWindowsMediaPlayer1_MouseDownEvent(object sender, AxWMPLib._WMPOCXEvents_MouseDownEvent e)
{
if (e.nButton == 1)
{
MouseDownLocation.X = e.fX;
MouseDownLocation.Y = e.fY;
x = this.Left;
y = this.Top;
}
}
private void AxWindowsMediaPlayer1_MouseMoveEvent(object sender, AxWMPLib._WMPOCXEvents_MouseMoveEvent e)
{
if (e.nButton == 1)
{
this.Left = e.fX + this.Left - MouseDownLocation.X;
this.Top = e.fY + this.Top - MouseDownLocation.Y;
}
}
private void AxWindowsMediaPlayer1_MouseUpEvent(object sender, AxWMPLib._WMPOCXEvents_MouseUpEvent e)
{
if (x <= this.Left + 10 && x >= this.Left - 10 && y <= this.Top + 10 && y >= this.Top - 10)
Close();
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Триггер не видит название кнопки которая вложена в popupbox но если кнопку вынести за пределы popupbox то все работаетКак сделать чтобы триггер увидел...
Есть авторитарный сервер и клиент на юнитиХотелось бы сделать в клиенте терминал (на "~", к примеру), в котором можно вводить чит коды, такие...
По формату интернет сообщений в строке должно быть не более 78 символов не считая CRLFВ строке есть замена символов на 16-й формат со знаком равно...