Vlc.Dotnet Ve Mouseevent'ları Sorunu
-
bir up daha
-
sorunun anladığım kadarıyla hiyerarşi ile ilgili (parent-child)
eklediğin butonu dinamik olarak ekle ve eventini dinamik şekilde ver eklemeden önce. muhtelemen eklediğin şey media elementinin önünü kapatıyor, o yüzden mouse hover v.s. çalışmıyor. yani bunlar aynı katmanda değiller sanırım. Bunu öğrenmek için o katmanın parentindeki contolleri listele ve media elementinin ve o butonun aynı yerde olduğunu teyit et. Değillerse hem medya elementini hem de butonu dinamik olarak ekle
-
unbalanced bunu yazdı
sorunun anladığım kadarıyla hiyerarşi ile ilgili (parent-child)
eklediğin butonu dinamik olarak ekle ve eventini dinamik şekilde ver eklemeden önce. muhtelemen eklediğin şey media elementinin önünü kapatıyor, o yüzden mouse hover v.s. çalışmıyor. yani bunlar aynı katmanda değiller sanırım. Bunu öğrenmek için o katmanın parentindeki contolleri listele ve media elementinin ve o butonun aynı yerde olduğunu teyit et. Değillerse hem medya elementini hem de butonu dinamik olarak ekle
ctor üstünden dinamik olarak eklediğimde player'ın başlamasına gerek kalmadan gözükmüyor butonlar daha
-
constructor da ekleyemezsin hocam, InitializeComponent ın çalışıp bitmesi lazım. sana göstermiştim windows loaded olayını hatırlarsan, oradan ekleyebilirsin
-
unbalanced bunu yazdı
constructor da ekleyemezsin hocam, InitializeComponent ın çalışıp bitmesi lazım. sana göstermiştim windows loaded olayını hatırlarsan, oradan ekleyebilirsin
bir şey değiştirmedi hocam
-
nasıl yaptığını bilmiyorum hocam ama şöyle yap adım adım ilerle.. yeni bir proje aç ve denemelerini orda yap.
mesela önce butonu dinamik olarak ekle sonra media elementini ondan sonra tam tersini yap..
ayrıca eklediğin yer neresi bilmiyorum ama bir panel koyup içine ekleteyebilirsin.. bu şekilde parent-child ilişkisi oluşturabilirsen (ikisi de aynı parente bağlı) o zaman sorun olmaz gibi. wpf biraz sıkıntılı, özellikle senin yaptığın tarzda :) eskiden çok uğraştım wpf ile ama bıraktım artık.. böyle forumlarda çözüm zor bulursun. çünkü çözecek adamın uğraşması gerekiyor öyle tahmin yürütülerek çözülebilecek şey değil. O yüzden senin deneme yanılma yönetmiyle sorunları çözmeyi öğrenmek gerek. Başka türlü çok yardım bekleme :) Zamanım olsa bağlanırım bilgisayarına uğraşırım çözerim ama bunun için her şeyi anlamak gerekiyor sonra da sorunu bulmak lazım, adım adım gitmek gerek v.s. İşte o yüzden bunları senin yapman lazım. Yeni bir proje aç orada denemelerini yap her zaman iyidir. Eğer saatlerdir uğraşıyorsan bir kaç saat ara ver, sonra dön. Çoğu zaman işe yarar
kolay gelsin
-
unbalanced bunu yazdı
nasıl yaptığını bilmiyorum hocam ama şöyle yap adım adım ilerle.. yeni bir proje aç ve denemelerini orda yap.
mesela önce butonu dinamik olarak ekle sonra media elementini ondan sonra tam tersini yap..
ayrıca eklediğin yer neresi bilmiyorum ama bir panel koyup içine ekleteyebilirsin.. bu şekilde parent-child ilişkisi oluşturabilirsen (ikisi de aynı parente bağlı) o zaman sorun olmaz gibi. wpf biraz sıkıntılı, özellikle senin yaptığın tarzda :) eskiden çok uğraştım wpf ile ama bıraktım artık.. böyle forumlarda çözüm zor bulursun. çünkü çözecek adamın uğraşması gerekiyor öyle tahmin yürütülerek çözülebilecek şey değil. O yüzden senin deneme yanılma yönetmiyle sorunları çözmeyi öğrenmek gerek. Başka türlü çok yardım bekleme :) Zamanım olsa bağlanırım bilgisayarına uğraşırım çözerim ama bunun için her şeyi anlamak gerekiyor sonra da sorunu bulmak lazım, adım adım gitmek gerek v.s. İşte o yüzden bunları senin yapman lazım. Yeni bir proje aç orada denemelerini yap her zaman iyidir. Eğer saatlerdir uğraşıyorsan bir kaç saat ara ver, sonra dön. Çoğu zaman işe yarar
kolay gelsin
şöyle ki kontrol ettiğimde zaten hepsinin parenti grid, muhtemelen daha önce linkini verdiğim Win32Interops'un SetParent methoduyla alakalı ama tam işlevini de çözebilmiş değilim.
Genel olarak bu kütüphanede hep wpf de sıkıntı çıkarmış başkalarına da. Elbet bir şekilde çözeceğiz de bakalım :) Teşekkürler hocam
-
setparent düşük seviye bir işlemdir, HwndHost buradaki sınıfı bulabilirsen user32.dll nin import edildiğini görebilirsin.
Win32Interops.SetParent(MediaPlayer.Handle, hwndParent.Handle);
yukarıdaki kodun mantığı basit, şimdi her şeyi bir hiyerarşik yapı içinde düşün. Bir sürü nesne olabilir ve her nesnenin parenti ve childleri olabilir. Bu üstteki metod ise verilen handle numalarına göre parente yeni bir child set ediyor. yani hwndparent ne ise (muhtemelen formun ya da grid in handle numarası), ona mediaplayer i child olarak set ediyor.
Böylelikle findwindow ve findwindowex ile görebileceğin child-parent ilişkisini kuruyor. Bunun için visual studio ile gelen spy++ ile bakabilirsin. Öncelikle parent denilen (muhtemelen form) kontrolün handle numarasını gör, ve sonra child (mediaplayer) ın handle numarasını al bak..
Eğer
Win32Interops.SetParent(MediaPlayer.Handle, hwndParent.Handle); burada verilen değerler ile tutuyorsa child-parent olayını doğru şekilde yapmışsın demektir.
Ama şu var, hemen onun altında
return new HandleRef(this, MediaPlayer.Handle);
bu satır mevcut. Tam olarak bilmiyorum ama anladığım kadarıyla chlid olarak set edilmiş öğe olan mediaplayer in handle adresi değişmiş bunu sisteme bildiriyor. Onu anlamak için de bu noktaya break point koyup dönen değere bak, gerçekten mediaplayer.handle ın numarası ile farklı mı değil mi diye..
daha yazılacak çok şey var ama bunla ilintili değiller. Sadece test etmen için söyledim. Parent-child ilişkisi kurup kuramadığını kontrol et ve dediğim gibi ayrı bir proje oluştur yap hocam. Sadece lazım olanları koy fazlasını koyma. bu şekilde net olarak ne olup ne bittiğini görürsün
kolay gelsin