Hi guys. Is there any specific condition for the lpstrFile member of OPENFILENAME to not show the PATH? It just shows the filename. Does it assume the current directory as ROOT? Thanks for the help in advance
Sreangelly, the ANSI version of the GetSaveFileName seems to show Path\Filename on both members: lpstrFile and lpstrFileTitle.
So...I got the problem solved. Having some members of OPENFILENAME unset causes errors. In this case was that i didn't set the lpstrFileTitle member and so the lpstrFile member didn't show the path. Always learning. ty
This one works fine for me ...
.data?
g_ofn OPENFILENAME { }
.code
;//////////////////////////////////////////////////////////////////////////////
;//
;// Procedure: ShowOpenFileDlg
;//
;// Purpose: Gets the file name to open.
;//
;//
ShowOpenFileDlg proc FRAME hwnd:HWND, pstrFileName:LPTSTR, pstrTitleName:LPTSTR
local szFilter[MAX_PATH + 4]: TCHAR
local szBuffer[MAX_PATH + 4]: TCHAR
local szInitDir[MAX_PATH + 4]: TCHAR
ZeroMemory (&g_ofn, sizeof(OPENFILENAME))
ZeroMemory (&szBuffer, MAX_PATH + 4)
LoadString (g_hInstance, IDS_OPENDLG_FILTER, &szFilter, MAX_PATH)
mov szFilter[rax*sizeof(TCHAR)+sizeof(TCHAR)], 0
;// Set the initial directory to the last file's path
_tcscpy (&szInitDir, pstrFileName)
_tcsrchr (&szInitDir, '\')
.if (rax)
mov rcx, rax
add rcx, sizeof (TCHAR)
.else
lea rcx, szInitDir
.endif
mov (TCHAR ptr [rcx]), 0000h
mov g_ofn.lStructSize, sizeof(OPENFILENAME)
mov g_ofn.hwndOwner, hwnd
mov g_ofn.hInstance, g_hInstance
mov g_ofn.lpstrFilter, &szFilter
mov g_ofn.lpstrFile, &szBuffer
mov g_ofn.lpstrFileTitle, pstrTitleName
mov g_ofn.lpstrInitialDir, &szInitDir
mov g_ofn.nFilterIndex, 1
mov g_ofn.nMaxFile, _MAX_PATH
mov g_ofn.nMaxFileTitle, _MAX_FNAME + _MAX_EXT
;// flags to control appearance of open-file dialog
mov g_ofn.Flags, OFN_EXPLORER or \
OFN_ENABLESIZING or \
OFN_PATHMUSTEXIST or \
OFN_FILEMUSTEXIST
.if (GetOpenFileName (&g_ofn))
_tcscpy (pstrFileName, g_ofn.lpstrFile)
mov rax, TRUE
.endif
ret
ShowOpenFileDlg endp
;//////////////////////////////////////////////////////////////////////////////
;//
;// Procedure: ShowSaveFileDlg
;//
;// Purpose: Gets the file name to save.
;//
;//OPENFILENAME_SIZE_VERSION_400
ShowSaveFileDlg proc FRAME hwnd:HWND, pstrFileName:LPTSTR, pstrTitleName:LPTSTR
local szFilter[MAX_PATH + 4]: TCHAR
ZeroMemory (&g_ofn, sizeof(g_ofn))
LoadString (g_hInstance, IDS_OPENDLG_FILTER, &szFilter, MAX_PATH)
mov szFilter[rax*sizeof(TCHAR)+sizeof(TCHAR)], 0
mov g_ofn.lStructSize, sizeof(OPENFILENAME)
mov g_ofn.hwndOwner, hwnd
mov g_ofn.hInstance, g_hInstance
mov g_ofn.lpstrFilter, &szFilter
mov g_ofn.lpstrFile, pstrFileName
mov g_ofn.lpstrFileTitle, pstrTitleName
;// mov g_ofn.lpfnHook, &SaveHookProc ;// This doesn't work with Vista/Win7-style dialog! Use IFileDialogCustomize instead!
;// mov g_ofn.lpTemplateName, MAKEINTRESOURCE(IDD_SAVEFILE)
mov g_ofn.nFilterIndex, 1
mov g_ofn.nMaxFile, _MAX_PATH
mov g_ofn.nMaxFileTitle, _MAX_FNAME + _MAX_EXT
;// flags to control appearance of open-file dialog
mov g_ofn.Flags, OFN_EXPLORER or \
OFN_ENABLESIZING or \
OFN_OVERWRITEPROMPT or \
OFN_EXTENSIONDIFFERENT;// or OFN_ENABLETEMPLATE or OFN_ENABLEHOOK
;//mov g_ofn.FlagsEx, OFN_EX_NOPLACESBAR
GetSaveFileName (&g_ofn)
ret
ShowSaveFileDlg endp
Ty Greenhorn for answering and Happy New Year.