Çözüldü C#-ta ReleaseCapture() ve SendMessage(Handle, 0x112, 0xf012, 0) kodlarının mantığı nedir?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

rauf.k

Femtopat
Katılım
16 Ocak 2022
Mesajlar
77
Arkadaşlar merhaba. Panel ile formu hareket ettirme konusunda araştırmalarım sonucunda aşağıdaki kodları buldum. Ancak kodun mantığı anlatılmamış. Kodlar şöyle:

İlk önce şu 4 satır kodlar genel olarak tanımlanıyor.

[DllImport("user32.DLL", EntryPoint = "ReleaseCapture")]
private extern static void ReleaseCapture();
[DllImport("user32.DLL", EntryPoint = "SendMessage")]
private extern static void SendMessage(System.IntPtr hWnd, int wMsg, int wParam, int lParam);

Daha sonra panelin MouseDown olayına aşağıdaki kodlar yazılıyor:
ReleaseCapture();
SendMessage(Handle, 0x112, 0xf012, 0);

Şimdi bu yazdığım kodların mantığını anlamak istiyorum. Yardım edersiniz çok sevinirim.
 
Çözüm
Bunlar Windows API'si, direk Win32 belgelerindeki açıklamaları okuyabilirsin.
ReleaseCapture, mouse ile yakalanmış bir pencereyi serbest bırakır.
SendMessage, bununla handle'sini girdiğin pencereye mesaj yollarsın, ikinci parametre mesaj türüdür bu kod için 0x112 WM_SYSCOMMAND'a denk geliyor, üçüncü parametre ise ikinci parametrenin sağladığı komutlardır 0xf012 burada iki komut için birleştirme yapılmış 0xF010 (SC_MOVE) + 0x2 (HTCAPTION) = 0xF012 (SC_DRAGMOVE).

Dynamics

Centipat
Katılım
23 Kasım 2021
Mesajlar
401
Çözümler
34
Yer
İzmir
Bunlar Windows API'si, direk Win32 belgelerindeki açıklamaları okuyabilirsin.
ReleaseCapture, mouse ile yakalanmış bir pencereyi serbest bırakır.
SendMessage, bununla handle'sini girdiğin pencereye mesaj yollarsın, ikinci parametre mesaj türüdür bu kod için 0x112 WM_SYSCOMMAND'a denk geliyor, üçüncü parametre ise ikinci parametrenin sağladığı komutlardır 0xf012 burada iki komut için birleştirme yapılmış 0xF010 (SC_MOVE) + 0x2 (HTCAPTION) = 0xF012 (SC_DRAGMOVE).

 
Çözüm
Yukarı