Ne yapmaya çalışıyorum bir denetim neden olan (aynı süreçte, fakat ben hiçbir kontrole sahip), kendisini yeniden çizmek için ve benim kod kendisine kadar engellemek için için yeniden çizmeyi bitirdi. Yeniden Çiz Pencere Kontrol Eş Zamanlı Olarak
BenUpdateWindow
kullanarak çalıştı ama o yeniden çizme bitirmesini bekleyin görünmüyor.
Yeniden çizmeyi bitirmesini beklemem gerekçesi, daha sonra ekranı kapmak istiyorum.
Denetim bir dotNet denetimi değil, normal bir pencere denetimi.
- kolu doğrudur:
ben teyit ediyoruz.
UpdateWindow
, doğru döndürür.- Pencerenin geçerliliğini yitirmesini sağlamak için
UpdateWindow
numaralı çağrıdan hemen önceInvalidateRect(hWnd, IntPtr.Zero, true)
göndermeyi denedim. - Kontrolün ana penceresinde aynı şeyi denedim. kullanılan
Kodu:
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool InvalidateRect(IntPtr hWnd, IntPtr rect, bool bErase);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool UpdateWindow(IntPtr hWnd);
public bool PaintWindow(IntPtr hWnd)
{
InvalidateRect(hWnd, IntPtr.Zero, true);
return UpdateWindow(hWnd);
}
//returns true
Belki WM_PAINT durumda oluşturmayı devre dışı bırakabilir ve o yeniden etkinleştirin sonra sonra. –
@ S.A.Parkhid Ayrıntılı bilgi verir misiniz lütfen? – Rotem
Hmm .. Neden _UpdateWindow, yeniden çizmenin bitmesini beklemiyor gibi görünmüyor? –