da du den checked-status über die windows-message togglest, kannst du auch die abfrage über
winapi-funktionen machen...
mithilfe von
CheckBox1.Perform(BM_GETCHECK,0,0)
bekommst du (bei einer normalen delphi-checkbox) entweder BST_CHECKED oder BST_UNCHECKED als ergebnis zurück, bedeutung dürfte klar sein, dann machst du halt statt
if CheckBox1.Checked then
ein
if CheckBox1.Perform(BM_GETCHECK,0,0) = BST_CHECKED then
und schon is das problem gelöst