Oltre alle informazioni nelle altre risposte:
in Windows per ogni controllo come (per ogni finestra di dialogo, la finestra, testo e casella di controllo, ecc) verrà assegnato un ID di controllo
Questo in realtà non è del tutto vero: le finestre di livello superiore, come le finestre delle app e le finestre di dialogo, non hanno affatto un ID di controllo. Solo le finestre figlio possono avere ID di controllo.
(finestre di livello superiore utilizzare il parametro di CreateWindow per indicare la HMENU per la finestra, invece - in modo che Windows solo di primo livello possono avere barre di menu.)
E 'davvero fino allo sviluppatore di app per decidere come assegnare e usare gli ID. Di solito sono usati con GetDlgItem(), che cerca un HWND con un dato ID con un HWND genitore, quindi in quel caso gli ID devono essere unici all'interno di quel genitore. Se uno sviluppatore non ha bisogno di cercare un controllo in fase di esecuzione, può dargli qualsiasi ID, tradizionalmente -1 viene utilizzato lì.
Alcuni framework non utilizzano affatto gli ID di controllo e tengono traccia degli HWND non appena vengono creati.
È vero? Penso che i controlli possano scegliere di utilizzare ID o meno. Una maniglia di finestra è sufficiente per identificare un controllo. –
Non lo è. Normalmente è impostato solo per le finestre di dialogo create da un modello di dialogo. Può essere modificato in seguito con SetWindowLongPtr, GWLP_ID. –
Esistono più tipi di ID di controllo. Automation ID è ciò che desideri impostare. Stai usando WinForms, WPF o Win32 per la tua app? La risposta a "esiste un modo per impostare manualmente gli ID di controllo di Windows" sarà diversa per ogni framework.E gli ID di automazione non devono essere globalmente unici - devono essere unici in un dato ambito per essere utili, dal momento che è sufficiente un percorso unico lungo l'albero per identificare un particolare controllo. Vedi questo per le app della GUI .Net: http://msdn.microsoft.com/en-us/library/aa349646.aspx –