Every menu item should have a Boolean property similar to the _init2Check member of the FuncItem interface type. Setting this to true makes the checkmark appear.
Assuming your plugin initializes its menu items in a constructor, the ::setInfo function is where you would assign the restored state to each item’s _init2Check member, or whatever your implementation calls it. One of my own plugins does exactly that by reading values from an *.ini file.
::setInfo is called by N++ before ::getFuncsArray, and long before the toolbar gets drawn. Up to now you’ve been calling a window procedure, but your menu items need to be created and configured even before there is any window to receive messages.