MinGW環境です。

標準入力から文字列を読み取るプログラムfoo↓

int main(){
TCHAR buffer[1024]={0};
while(_fgetts(buffer,1024,stdin)!=NULL){
if(TCHAR* p=_tcschr(buffer,'\n'))*p='\0';
MessageBox(NULL,buffer,NULL,MB_OK);
}
return 0;
}

に対し、名前に環境依存文字を含むファイルを持つディレクトリ内でdir /b | fooとすると、
環境依存文字が?として表示されてしまいます。
正しく表示するにはどうすればよいでしょうか。