LRESULT CALLBACK WndProc(HWND 省略){
 char *moji = "あ\n";
 strcat(moji, "い\n");

 switch (msg){
  case WM_KEYDOWN:
   if(wParam==VK_SPACE){
    strcat(moji, "う\n");
    hDC = GetDC(hWnd);
    GetClientRect(hWnd, &rt);
    DrawText(hDC, moji, strlen(moji), &rt, DT_WORDBREAK);
    ReleaseDC(hWnd, hDC);
 }

これなら、あ\nい\nう になるけど、再びスペースを押しても
  あ\nい\nう\nう\n
でなく、
  あ\nい\nう\n
なのだ。
不思議。
case の中では strcat( ) が1回しか実行されない?