こういうことでしょう。多分。

UINT ACK(void *pParam)
{
 ...
 do {
  Sleep(10);
  DioInputWord( InOut, FBIDIO_IN1_16, &InData);
 } while(InData == 1 && !stop_flg)

 if(stop_flg) {
  stop_flg = TRUE;
  return 0;
 }
 return 1;
}

作ったスレッドの終了を検知したかったら、WM_USER_XXXを定義して、
それを returnの前にでも PostMessageする。GUIの関数(ダイアログ?)に。
GUI関数側の WindowProcでそのメッセージを捕まえるんだ!