SetParent () va GetParent () ning xavfsizligi va barqarorligi

Men dasturda quyidagi funktsiyalardan foydalanaman:

[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr GetParent(IntPtr hWnd);

Mening savolim: bu yondashuv xavfsiz va barqarormi? Mening ishlab chikarishim mashinasi Windows XP va shuning uchun foydalanishda hech qanday muammo topmadim. Turli versiyalarda (masalan, Windows Vista, Windows 7, nima bo'lishidan qat'i nazar) turli xil muammolarga duch kelayapmanmi deb so'rayman. Siz bu haqda bir qator xulosalar bera olasizmi va ba'zi potentsial masalalar mavjud bo'lsa, ularni qanday engishim mumkin?

Oldindan rahmat.

Zubrowka

0
SetParent juda yoqimsiz vazifadir, u turli mavzular yoki jarayonlarga tegishli bo'lgan oynalarni bir-biriga yopishtirish uchun juda ko'p ishlatiladi. Qatlamga tutashgan xabarlarga javob berishni to'xtatganda, katatonik jarayonni yoqish uchun ustalik bor. Ishning xavfsizligi juda murakkablashadi. Bu sizga tegishli bo'lgan savolni bilib bo'lmaydi. Windows versiyalaridan qo'rqishingiz juda qiyin, chunki Winapi barqarorligi Microsoftning non va sariyog'idir.
qo'shib qo'ydi muallif Hans Passant, manba
Yaxshi Hans, rahmat. Men aytib o'tgan narsalar haqida qisqacha kodni tekshirib ko'rmoqchiman!
qo'shib qo'ydi muallif Żubrówka, manba

1 javoblar

Ushbu P/chaqirgan xabarnomalar Windowsning barcha versiyalari uchun to'g'ri. XP/Vista/7 va hech qanday 32/64 bit muammolari mavjud emas. IntPtr Jurnalning bitikligiga qarab 32 va 64 bit orasida o'zgaradi. Buning uchun HWND uchun nima qilish kerak.

5
qo'shib qo'ydi
IntPtr uchun +1 protseduraning bitikligiga qarab 32 va 64 bit orasida o'zgarib turadi :)
qo'shib qo'ydi muallif Surjit Samra, manba
Ajoyib! Dovudga rahmat! :)
qo'shib qo'ydi muallif Żubrówka, manba