What API is mIRC using to check Ctrl+Break? Is it using GetAsyncKeyState(VK_CANCEL)?
If so, perhaps a better way to do this would be to just check the individual keys directly. I tested the following and it seems to work just fine for me:
short down = 0x8000;
if (GetAsyncKeyState(VK_CONTROL) & down && GetAsyncKeyState(VK_PAUSE) & down) {
/* break out of loop */
}
This would fix any bugs windows has with checking the VK_CANCEL vkey directly (w.r.t. letting go of control after break).
Also, this would allow you to check for an alternate key combination in the process (like Ctrl+Alt+Esc) for users without the Pause/Break key (you could do this regardless, of course).