Ok , your method is an answer to the memory problem with openfilename.
There is no problem after changing the stack size with the right clic.
:t
I find just an error,the stack is full when you exit,modify it like below:
bytes_required = 0A000h
mov keepesp,esp ;keep the actual esp in data
ASSUME FS:Nothing
mov eax,esp
sub eax,bytes_required
and al,-16 ;let's use 16-align for demo purposes
@@: push eax
;call ShowStackBottom ;for demo purposes only
mov esp,fs:[8]
cmp eax,esp
jb @B
mov esp,keepesp ;old position
ASSUME FS:ERROR