Спасибо, вы все были правы. Убрал __stdcall и всё заработало как часы. Только причина не очень ясна, т.к. еще не знаком со стеком. Буду читать и посвящаться, также буду признателен за ссылки, где это доступно объяснено.
Всем спасибо, немного обошел стороной проблему, заметил, что галочка снимается, если на выделенном пункте нажать Пробел. Поэтому получил текст всех итемов из списка, в этом помогла следующая статья: http://www.ddsoft.hoha.ru/notes/lvmgetitem/
А после этого просто выделял нужный пункт и эмулировал нажатие пробела, в этом помог следующий код: http://www.delphisources.ru/forum/showthread.php?t=8592