I'll try make it logical as I can...

I create an INC file (Blue) and place all my variables here.
I create an ASM module (Yellow) and from here I :-
- Get the Group handle and all it's internal control handles, and save these handles to the INC file.
In the Window module (Red) I :-
- Try to use the handles set in the INC file (Blue), to turn the groups on/off
- This doesn't work as I noticed that handles being used in this proc are Zero (0h).
- but I've already set the handle values in my INC file
So I move the procedure from the Window module(Red) to the Asm Module(Yellow) and :-
- All works as it should.... the handles used are correct.
Conclusion:
- The ASM module is using the INC file variables
- The Window module is using some other variables of the same name.. maybe a duplicate copy of my INC file
as all the values retrieved here are Zero (0h)
- I assume variables of the same name, and duplication, as the Assembler/Linker does not pick up a problem.
- The only time I write to the handle structures is during Initialisation and with the GetWindowItem procs