Today I finally figured out the Array problems I was having and can successfully switch from "dupe" mode to "no dupe" mode, with the appropriate items getting added or deleted at the right time, and the little mini preview toolbars loading/unloading properly in the preview boxes. That's a good step. It turns out I made two stupid mistakes, but thanks to Google I found others who'd done the same thing and posted their fixes*. Hooray Internets!
Next up, assigning functions to the preview toolbars, and then making the slot/set selection objects. As far as I can see those are the last major challenges in the back-end development. Once I get those working, I can bring it all into the actual HM3 application. After that I need to firm up the dynamic on-demand loading of the item files and then, believe it or not, I think I am ready to start drawing, hopefully by the end of the week.
As far as choosing a slot and a set of items for it goes**, it looks like that's going to present in the same fashion it does in HM2.x, with two drop-down boxes. One has the list of slots. Choosing one changes the choices in the second drop-down box, which contains all the possible sets for the current slot. One additional wrinkle will be that when you choose a set, its entry in the list will change to a different color or something to let you know it's loaded. It should stay loaded, so you can have all 10 sets of items for the Headgear slot accessible at the same time, which will be nice. Currently with 2.x, you have to choose just one set of items, so if you choose to load "Standard" headgear, for instance, you can't also have the "Modern" set loaded up.
In essence this would allow you to have every possible item drawn for the application accessible at the same time for full customization. In practice, I bet that's going to slow the application down to a crawl, but it ought to work in theory.
* If you're curious, the two mistakes were a) using a UINT type for the counting variable instead of INT, and b) I needed to be counting from the end of the array backwards, and instead was counting from the beginning going forwards. I'd delete an element from the array and try to move on to the next one, but because I was going the wrong way, the next element got assigned to the counter I'd just used. Frustrating. Counting backwards alleviates that problem. Apparently this is common knowledge for good programmers, which clearly I am not. But if you're going to do that you have to use INT as the variable type to allow the counter to go to -1. Which again is something good programmers know but I don't. Sometimes being a self-taught hack sucks!
** "Slot" refers to the part of the body in question -- "Head", "Torso", "Belt", "Pants", etc.; "set" replaces the former term "genre", and refers to a file containing similarly-themed items for the slot -- "Headgear: Modern Military" or "Gloves: Armored", etc.