:
her biri için pencerelerinde ve benzeri her kontrolün bir kontrol kimliği verilecektir (her iletişim, pencere, metin ve onay kutusunu vb)
Bu aslında tam olarak doğru değil: Uygulama pencereleri ve iletişim kutuları gibi üst düzey pencereler aslında hiçbir kontrol kimliğine sahip değil. Sadece çocuk pencereleri kontrol kimliğine sahip olabilir.
(Üst düzey pencereleri CreateWindow parametre yerine pencere için hMenu belirtmek için kullanabilirsiniz - bu yüzden yalnızca üst düzey pencere menubars olabilir.) Gerçekten uygulama geliştiricisi kadar atamak nasıl yapılacağına karar vermek oluyor
ve kimlikleri kullanın. Genellikle, bir HWND ile bir HWND'ye sahip olan GetDlgItem() ile kullanılırlar, bu nedenle bu kimliklerin yalnızca bu ebeveynin içinde benzersiz olması gerekir. Bir geliştiricinin çalışma zamanında bir denetim araması yapması gerekmiyorsa, ona herhangi bir kimlik verebilir, geleneksel olarak -1 burada kullanılabilir.
Bazı çerçeveler, kontrol kimliklerini hiç kullanmaz ve HWND'leri oluşturuldukları şekilde takip etmelidir.
Bu doğru mu? Kontrollerin kimlikleri kullanmayı seçip seçemeyeceğini düşünüyorum. Bir denetimi tanımlamak için bir pencere kolu yeterlidir. –
Değil. Normalde sadece bir diyalog şablonundan oluşturulan diyaloglar için ayarlanır. SetWindowLongPtr, GWLP_ID ile daha sonra değiştirilebilir. –
Birden çok kontrol kimliği tipi vardır. Otomasyon kimliği ayarlamak istediğiniz şeydir. Uygulamanız için WinForms, WPF veya Win32 kullanıyor musunuz? Her çerçeve için farklı olacak "windows kontrol kimlikleri elle ayarlamak için herhangi bir yolu var" cevabı.Ve otomasyon kimlikleri global olarak benzersiz olmak zorunda değildir - sadece belirli bir kapsamda benzersiz olmak zorundadırlar, çünkü belirli bir kontrolü tanımlamak için ağaçtan aşağı doğru benzersiz bir yola ihtiyacınız vardır. Net GUI uygulamaları için bunu bakın: http://msdn.microsoft.com/en-us/library/aa349646.aspx –