관리 메뉴

ㄴrㅎnㅂrㄹrㄱi

OPENFILENAME (다이알로그 박스를 초기화하기 위해서 사용하는 정보가 격납) 본문

API 관련/Win32 API 함수

OPENFILENAME (다이알로그 박스를 초기화하기 위해서 사용하는 정보가 격납)

님투 2007. 11. 9. 01:41
반응형

OPENFILENAME

GetOpenFileName함수 및 GetSaveFileName함수가 「연다」 및 「이름을 붙여 보존」다이알로그 박스를 초기화하기 위해서 사용하는 정보가 격납됩니다.유저가 다이알로그 박스를 닫으면, 유저가 선택한 파일에 관한 정보가 격납됩니다.

typedef struct tagOFN { 
  DWORD         lStructSize;
  HWND          hwndOwner; 
  HINSTANCE     hInstance; 
  LPCTSTR       lpstrFilter; 
  LPTSTR        lpstrCustomFilter; 
  DWORD         nMaxCustFilter; 
  DWORD         nFilterIndex; 
  LPTSTR        lpstrFile; 
  DWORD         nMaxFile; 
  LPTSTR        lpstrFileTitle; 
  DWORD         nMaxFileTitle; 
  LPCTSTR       lpstrInitialDir; 
  LPCTSTR       lpstrTitle; 
  DWORD         Flags; 
  WORD          nFileOffset; 
  WORD          nFileExtension; 
  LPCTSTR       lpstrDefExt; 
  LPARAM        lCustData; 
  LPOFNHOOKPROC lpfnHook; 
  LPCTSTR       lpTemplateName; 
#if (_WIN32_WINNT >= 0x0500)
  void *        pvReserved;
  DWORD         dwReserved;
  DWORD         FlagsEx;
#endif // (_WIN32_WINNT >= 0x0500)
} OPENFILENAME, *LPOPENFILENAME;

(_WIN32_WINNT >= 0x0500) 하 Windows 2000/XP 이후에 유효

멤버

lStructSize

OPENFILENAME구조체의 사이즈를 아르바이트 단위로 지정합니다.76(을)를 지정합니다.

Windows 2000/XP: 88(을)를 지정하는 것으로, 확장된 멤버를 사용할 수 있습니다.

hwndOwner

다이알로그 박스의 오너 윈도우의 핸들을 지정합니다.0 (NULL) (을)를 지정하면, 다이알로그 박스는 오너 윈도우를 가지지 않습니다.

hInstance

Flags멤버로OFN_ENABLETEMPLATEHANDLE플래그가 설정되어 있는 경우에는, 다이알로그 박스 템플릿이 격납되고 있는 메모리오브제크트의 핸들을 지정합니다.OFN_ENABLETEMPLATE플래그가 설정되어 있는 경우에는,lpTemplateName멤버로 지정된 이름의 다이알로그 박스 템플릿을 포함한 모듈의 핸들을 지정합니다.어느 쪽의 플래그도 설정되어 있지 않은 경우에는, 이 멤버는 무시됩니다.

Flags멤버로OFN_EXPLORER플래그가 설정되어 있는 경우에는, 시스템은 지정된 템플릿을 사용하고, 디폴트의 익스플로러 스타일 다이알로그 박스의 아이가 되는 다이알로그 박스를 작성합니다.OFN_EXPLORER플래그가 설정되어 있지 않은 경우에는, 지정된 템플릿이 사용하고, 디폴트 다이알로그 박스와 교환이 되는 올드스타일 다이알로그 박스를 작성합니다.

lpstrFilter

2개로1조의 필터 문자열이 격납된 정적인 버퍼의 주소를 지정합니다.복수의 조를 지정할 수 있습니다.각각의 문자열은1개의 눌 문자로 단락지어, 마지막 문자열의 뒤에는2개의 눌 문자를 두지 않으면 안됩니다.

각각의 조 가운데,1번째의 문자열은 필터에 대해 설명한 표시 문자열(예:“텍스트 파일”)을, 이제(벌써)1개의 문자열은 필터 패턴(예:“*.txt”)를 지정합니다.1개의 표시 문자열에 대해 복수의 필터 패턴을 지정하려면 , 패턴을 세미콜론으로 단락짓습니다(예:“*.txt;*.doc;*.bak”).패턴 문자열에는, 유효한 파일명이나 asterisk(*) 와일드 카드 문자를 조합해 사용할 수 있습니다.패턴 문자열에 공백(반각 스페이스)을 포함해서는 안됩니다.

필터의 순서는 변경되지 않습니다.이 멤버로 지정된 순서로 「파일의 종류」combobox에 표시됩니다.

이 멤버에0 (NULL) (을)를 지정하면, 다이알로그 박스에는 필터가 표시되지 않습니다.

lpstrCustomFilter

유저가 선택했다1조의 필터 패턴 문자열을 보존하기 위한 버퍼의 주소를 지정합니다.2개의 문자열은1개의 눌 문자로 단락지어져2번째의 문자열의 뒤에는2개의 눌 문자가 놓여집니다.1번째의 문자열은 커스텀 필터에 대해 설명한 표시 문자열, 이제(벌써)1개의 문자열은 유저가 선택한 필터 패턴을 나타냅니다.어플리케이션이 최초로 다이알로그 박스를 작성할 때 , 공문자열이 아닌 임의의 문자열을 지정할 수 있습니다.유저가 파일을 선택하면, 현재의 필터 패턴이2번째의 문자열까지 카피됩니다.보존되는 필터 패턴은,lpstrFilter멤버로 지정된 패턴 중1개, 또는 유저에 의해 입력된 필터 패턴입니다.다음 번의 다이알로그 박스 작성시에, 이 문자열을 사용해 유저 정의의 파일 필터를 초기화합니다.nFilterIndex멤버가0때, 다이알로그 박스는 커스텀 필터를 사용합니다.

이 멤버가0 (NULL) 일 때, 유저 정의의 필터 패턴은 보존되지 않습니다.

이 멤버가0 (NULL) 이외의 경우,nMaxCustFilter멤버에는lpstrCustomFilter멤버로 지정되는 버퍼의 사이즈를 아르바이트 단위(Unicode판의 경우는 문자수)로 지정하지 않으면 안됩니다.

nMaxCustFilter

lpstrCustomFilter멤버로 지정되는 버퍼의 사이즈를 아르바이트 단위(Unicode판의 경우는 문자수)로 지정합니다.이 버퍼는 적어도40문자 이상일 필요가 있습니다.lpstrCustomFilter멤버에 공문자열을 가리키는 포인터 혹은0 (NULL) 인 경우에는, 이 멤버는 무시됩니다.

nFilterIndex

「파일의 종류」컨트롤로 현재 선택되고 있는 필터의 인덱스를 지정합니다.lpstrFilter멤버가 가리키는 버퍼에, 필터를 정의하는 문자열의 조가 격납되고 있습니다.이러한 문자열의 최초의 조가 인덱스1(을)를,2번째의 조가 인덱스2(을)를 가집니다.인덱스0lpstrCustomFilter멤버로 지정되는 커스텀 필터를 나타내고 있습니다.입력시에 인덱스를 지정하고, 다이알로그 박스의 초기 필터를 지정할 수 있습니다.유저가 파일을 선택하면, 그 시점에서 표시되고 있는 필터의 인덱스가 이 멤버에 격납됩니다.nFilterIndex멤버가0그리고, 한편lpstrCustomFilter멤버가0 (NULL) 인 경우에는,lpstrFilter멤버가 가리키는 버퍼에 있는 최초의 필터가 사용됩니다.이것들3개의 멤버가 모두0 (NULL) 인 경우에는, 필터는 사용되지 않고, 다이알로그 박스의 파일 리스트 컨트롤에는 어느 파일도 표시되지 않습니다.

lpstrFile

「파일명」에디트 컨트롤을 초기화하는데 사용되는 파일명을 격납한 버퍼의 주소를 지정합니다.초기화가 필요없는 경우에는, 버퍼의 선두에 눌 문자를 격납해 둡니다. GetOpenFileName함수 또는 GetSaveFileName함수의 호출이 성공하면, 이 버퍼에는 선택된 파일명이 풀 패스로 격납됩니다.

Flags멤버로ALLOWMULTISELECT플래그가 설정되어 있어 유저가 복수의 파일을 선택했을 경우에는, 버퍼에는 커런트 디렉토리명으로 선택된 파일의 이름이 격납됩니다.익스플로러 스타일 다이알로그 박스에서는, 디렉토리명 및 파일명 문자열은 각각1개의 눌 문자로 단락지어지고 있어 마지막 파일명의 뒤에는2개가 연속한 눌 문자가 놓여집니다.올드스타일 다이알로그 박스에서는, 디렉토리명 및 파일명은 각각 공백(반각 스페이스)에서 단락지어지고 있어 공백 문자를 포함한 파일명에 대해서는 짧은 형식의 파일명이 사용됩니다. FindFirstFile함수를 사용하고, 짧은 파일명을 긴 파일명으로 변환할 수 있습니다.유저가 선택한 파일이1개뿐이면, 패스와 파일명과의 사이에 단락지어 문자는 삽입되지 않습니다.

버퍼가 너무 작은 경우에는, 함수는 반환값0 (FALSE) (을)를 돌려주어,CommDlgExtendedError함수는0x3003 (FNERR_BUFFERTOOSMALL) (을)를 돌려줍니다.이 경우,lpstrFile멤버가 가리키는 버퍼의 최초의2아르바이트에 필요한 사이즈가 아르바이트 단위(Unicode판의 경우는 문자수)로 격납됩니다.

nMaxFile

lpstrFile멤버로 지정되는 버퍼의 사이즈를 아르바이트 단위(Unicode판의 경우는 문자수)로 지정합니다.버퍼의 사이즈는, 패스, 파일명 및 종단 눌 문자를 격납할 수 있도록 충분히 크지 않으면 안됩니다.버퍼가 너무 작아서 파일 정보를 격납할 수 없는 경우에는, 함수는 실패합니다.버퍼는 적어도256문자 이상의 크기여야 합니다.

lpstrFileTitle

(패스 정보를 제외하다) 파일명 및 확장자(extension)를 격납하기 위한 버퍼의 주소를 지정합니다.이 정보가 필요없는 경우에는, 이 멤버에0 (NULL) (을)를 지정할 수 있습니다.

nMaxFileTitle

lpstrFileTitle 멤버로 나타나는 버퍼의 사이즈를 아르바이트 단위(Unicode판의 경우는 문자수)로 지정합니다.lpstrFileTitle 멤버에0 (NULL) (을)를 지정했을 경우는, 이 멤버는 무시됩니다.

lpstrInitialDir

초기 디렉토리를 지정하는 문자열의 주소를 지정합니다.초기 디렉토리를 선택하는 알고리즘은 플랫폼에 따라서 다릅니다.

Windows 2000/XP:

  1. lpstrFile멤버가 가리키는 버퍼에 패스가 격납되고 있는 경우, 그 패스가 초기 디렉토리가 됩니다.

  2. lpstrInitialDir멤버로 지정된 디렉토리가 초기 디렉토리가 됩니다.

  3. 이전에 「연다」또는 「이름을 붙여 보존」다이알로그 박스를 사용하고 있는 경우에는, 마지막에 사용한 패스가 초기 디렉토리로서 선택됩니다.다만, 어플리케이션이 오랫동안 실행되어 있지 않은 경우에는, 보존되고 있는 선택 패스의 정보는 파기됩니다.

  4. lpstrInitialDir 멤버가0 (NULL) (이어)여, 한편, 경향 디 렉토로 지정된 필터 타입의 파일이 존재하는 경우에는, 커런트 디렉토리가 초기 디렉토리가 됩니다.

  5. 현재의 유저의 퍼스널 파일 디렉토리가 초기 디렉토리가 됩니다.

  6. 데스크탑 폴더가 초기 디렉토리가 됩니다.

Windows 98/Me:

  1. lpstrInitialDir멤버로 지정된 디렉토리가 초기 디렉토리가 됩니다.

  2. lpstrInitialDir멤버가0 (NULL) (이어)여, 한편,lpstrFile멤버가 가리키는 버퍼에 패스가 격납되고 있는 경우, 그 패스가 초기 디렉토리가 됩니다.

  3. 경향 디 렉토로 지정된 필터 타입의 파일이 존재하는 경우에는, 커런트 디렉토리가 초기 디렉토리가 됩니다.

  4. 현재의 유저의 퍼스널 파일 디렉토리가 초기 디렉토리가 됩니다.

Windows 95/NT:

  1. lpstrInitialDir멤버로 지정된 디렉토리가 초기 디렉토리가 됩니다.

  2. lpstrInitialDir멤버가0 (NULL) (이어)여, 한편,lpstrFile멤버가 가리키는 버퍼에 패스가 격납되고 있는 경우, 그 패스가 초기 디렉토리가 됩니다.

  3. 경향 디 렉토가 초기 디렉토리가 됩니다.

lpstrTitle

다이알로그 박스의 타이틀 바에 표시되는 문자열의 주소를 지정합니다.이 멤버에0 (NULL) (을)를 지정하면, 디폴트의 타이틀( 「연다」 및 「이름을 붙여 보존」)이 사용됩니다.

Flags

다이알로그 박스의 초기화에 사용되는 비트 플래그를 설정합니다.함수의 호출이 성공하면, 유저가 입력한 정보를 나타내는 비트 플래그가 설정됩니다.이 멤버의 값은 이하의 값의 편성이 됩니다.

0x00000001 (OFN_READONLY)

다이알로그 박스가 작성되었을 때에, 초부터 「기재 금지」체크 박스가 선택된 상태로 합니다.다이알로그 박스가 닫혀지면, 이 플래그는 「기재 금지」체크 박스 상태를 나타냅니다.

0x00000002 (OFN_OVERWRITEPROMPT)

「이름을 붙여 보존」다이알로그 박스로, 선택된 파일이 벌써 존재하는 경우에는 메시지 박스를 표시합니다.유저는, 파일을 덧쓰기할지를 선택하지 않으면 안됩니다.

0x00000004 (OFN_HIDEREADONLY)

「기재 금지」체크 박스를 무효로 합니다.

0x00000008 (OFN_NOCHANGEDIR)

파일 검색중에 유저가 디렉토리를 변경해도, 커런트 디렉토리가 변경되지 않게 합니다.

Windows NT4.0/2000/XP: 이 플래그는 GetOpenFileName함수에 대해서는 유효하지는 않습니다.

0x00000010 (OFN_SHOWHELP)

「헬프」버튼을 표시합니다.「헬프」버튼이 밀리면, 다이알로그 박스는hwndOwner멤버로 지정된 오너 윈도우에HELPMSGSTRING ("commdlg_help") 등록 메세지를 송신합니다.익스플로러 스타일 다이알로그 박스의 경우는, 「헬프」버튼이 밀리면 훅 프로시저에CDN_HELP통지 메세지가 송신됩니다.

0x00000020 (OFN_ENABLEHOOK)

lpfnHook멤버로 지정된 훅 프로시저를 유효하게 합니다.

0x00000040 (OFN_ENABLETEMPLATE)

lpTemplateName멤버가 가리키는 문자열이hInstance멤버로 지정된 모듈이 가지는 다이얼로그 템플릿 자원의 이름인 것을 나타냅니다.OFN_EXPLORER플래그가 설정되어 있는 경우에는, 지정된 템플릿을 사용해 디폴트 익스플로러 스타일 다이알로그 박스의 아이 다이알로그 박스를 작성합니다.OFN_EXPLORER플래그가 설정되어 있지 않은 경우에는, 지정된 템플릿을 사용하고, 디폴트 다이알로그 박스와 갈아넣어 표시되는 올드스타일 다이알로그 박스를 작성합니다.

0x00000080 (OFN_ENABLETEMPLATEHANDLE)

hInstance멤버가 다이알로그 박스 템플릿을 포함한 메모리오브제크트의 핸들인 것을 나타냅니다.이 플래그가 지정되었을 경우에는lpTemplateName멤버의 값이 무시됩니다.OFN_EXPLORER플래그가 설정되어 있는 경우에는, 지정된 템플릿을 사용해 디폴트 익스플로러 스타일 다이알로그 박스의 아이 다이알로그 박스를 작성합니다.OFN_EXPLORER플래그가 설정되어 있지 않은 경우에는, 지정된 템플릿을 사용하고, 디폴트 다이알로그 박스와 갈아넣어 표시되는 올드스타일 다이알로그 박스를 작성합니다.

0x00000100 (OFN_NOVALIDATE)

돌려주어지는 파일명안에 무효인 문자가 포함되는 것을 허용 합니다.통상, 어플리케이션은FILEOKSTRING ("commdlg_FileNameOK") 등록 메세지로 파일명을 체크하는 훅 프로시저를 사용합니다.에디트 컨트롤의 텍스트가 하늘일까 공백 문자(반각 스페이스) 뿐이는 경우에는, 파일과 디렉토리의 리스트가 갱신됩니다.그 이외의 경우는,nFileOffset멤버 및nFileExtension멤버에 값이 세트 됩니다.디폴트의 확장자(extension)를 부가하거나lpstrFileTitle멤버가 가리키는 버퍼에 텍스트를 카피하거나 할 것은 없습니다.nFileOffset멤버로 지정된 값이 부의 값인 경우는, 파일명이 무효라는 점을 나타냅니다.그 이외의 경우는 파일명은 유효하고,nFileOffset멤버 및nFileExtension멤버는 이 플래그를 지정하지 않았던 경우와 같게 사용할 수 있습니다.

0x00000200 (OFN_ALLOWMULTISELECT)

「파일명」리스트 박스로 복수의 선택을 할 수 있도록(듯이) 지정합니다.OFN_EXPLORER플래그와 함께 지정했을 경우는, 익스플로러 스타일의 유저 인터페이스가 사용됩니다.그 이외에서는 올드스타일의 유저 인터페이스가 사용됩니다.

유저가 복수의 파일을 지정했을 경우에는,lpstrFile멤버로 지정되는 버퍼에는, 커런트 디렉토리의 패스명으로 선택된 파일의 이름이 격납됩니다.nFileOffset멤버는 최초의 파일명에의 오프셋이 아르바이트수(Unicode판에서는 문자수)로 격납됩니다.또,nFileExtension멤버는 사용되지 않습니다.

익스플로러 스타일 다이알로그 박스의 경우, 디렉토리명 및 파일명은, 각각1개의 눌 문자로 단락지어지고 있어 마지막 파일명의 뒤에는2개가 연속한 눌 문자가 놓여집니다.이 때문에, 익스플로러 스타일 다이알로그 박스는 공백 문자를 포함한 긴 파일명을 돌려줄 수 있습니다.

올드스타일 다이알로그 박스에서는, 각각의 디렉토리명 및 파일명은 공백 문자로 단락지어지고 있어 공백 문자를 포함한 파일명에 대해서는 짧은 형식의 파일명이 사용됩니다. FindFirstFile함수를 사용하고, 짧은 파일명을 긴 파일명으로 변환할 수 있습니다.

올드스타일 다이알로그 박스로 커스텀 템플릿을 지정하는 경우, 「파일명」리스트 박스의 정의에LBS_EXTENDEDSEL스타일을 포함하지 않으면 안됩니다.

0x00000400 (OFN_EXTENSIONDIFFERENT)

유저가lpstrDefExt멤버로 지정된 확장자(extension)와 다른 확장자(extension)를 가지는 파일명을 입력한 것을 나타내 보입니다.lpstrDefExt멤버가0 (NULL) 의 경우, 이 플래그는 사용되지 않습니다.

0x00000800 (OFN_PATHMUSTEXIST)

유저가 유효한 패스 및 파일명만을 입력할 수 있도록 지정합니다.이 플래그가 지정되었을 때에 유저가 무효인 패스 및 파일명을 입력했을 경우에는, 메시지 박스에 경고가 표시됩니다.

0x00001000 (OFN_FILEMUSTEXIST)

유저가 「파일명」엔트리 필드에 존재하는 파일명만을 입력할 수 있도록 지정합니다.이 플래그가 지정되었을 때에 유저가 무효인 파일명을 입력했을 경우에는, 메시지 박스로 경고가 표시됩니다.이 플래그가 지정되면,OFN_PATHMUSTEXIST플래그가 동시에 사용됩니다.

0x00002000 (OFN_CREATEPROMPT)

존재하지 않는 파일을 유저가 지정했을 경우, 파일을 작성할지를 유저에게 문의합니다.파일을 작성하는 것을 유저가 선택하면, 다이알로그 박스가 닫고, 지정된 파일명이 돌려주어집니다.그 이외의 경우는, 다이알로그 박스가 열린 채로 있습니다.이 플래그를OFN_ALLOWMULTISELECT플래그와 함께 지정했을 경우는, 유저는 존재하지 않는 파일을1개만 지정할 수 있습니다.

0x00004000 (OFN_SHAREAWARE)

네트워크 공유 위반에 의해서GetOpenFileName함수가 실패했을 경우에, 에러를 무시해 선택된 파일명을 돌려주도록(듯이) 지정합니다.이 플래그가 설정되어 있지 않은 경우, 유저가 지정한 파일명에 대해서 발생한 네트워크 공유 위반은 훅 프로시저에 통지됩니다.OFN_EXPLORER플래그가 지정되어 있는 경우에는, 훅 프로시저에CDN_SHAREVIOLATION통지 메세지가 송신됩니다.OFN_EXPLORER플래그가 지정되어 있지 않은 경우에는, 훅 프로시저에SHAREVISTRING ("commdlg_ShareViolation") 등록 메세지가 송신됩니다.

0x00008000 (OFN_NOREADONLYRETURN)

돌려주어진 파일은, 「기재 금지」체크 박스가 선택되지 않고, 기입 제한이 없는 디렉토리내의 것임을 나타냅니다.

0x00010000 (OFN_NOTESTFILECREATE)

다이알로그 박스가 닫혀지기 전에 파일이 작성되지 않게 지정합니다.작성 가능·변경 불가의 네트워크 공유상에 파일을 보존하는 경우에는, 이 플래그를 지정해야 합니다.이 플래그를 지정하면, 기입 제한, 디스크 용량, 오픈된 드라이브 도어, 네트워크 보호에 관해서는 체크되지 않습니다.작성 가능·변경 불가의 파일을 작성하는 경우, 한 번 파일을 닫으면 다시 열 수 없게 되기 위해, 어플리케이션은 주의해 파일 조작을 실시하지 않으면 안됩니다.

0x00020000 (OFN_NONETWORKBUTTON)

「네트워크」버튼을 표시하지 않습니다.

0x00040000 (OFN_NOLONGNAMES)

올드스타일 다이알로그 박스에서는,8.3형식의 짧은 파일명이 돌아갑니다.익스플로러 스타일 다이알로그 박스에서는 이 플래그는 무시되어 항상 긴 파일명이 돌아갑니다.

0x00080000 (OFN_EXPLORER)

「연다」 「이름을 붙여 보존」다이알로그 박스의 커스터마이즈에, 새로운 익스플로러 스타일의 커스터마이즈 메소드를 사용하도록(듯이) 지정합니다.

디폴트에서는, 「연다」 및 「이름을 붙여 보존」다이알로그 박스는, 이 플래그가 지정되어 있는지 어떤지에 관계없이, 익스플로러 스타일의 유저 인터페이스를 사용합니다.훅 프로시저나 커스텀 템플릿을 사용하는 경우, 또는OFN_ALLOWMULTISELECT플래그를 지정하는 경우에는, 이 플래그를 사용할지를 결정할 필요가 있습니다.

올드스타일의 유저 인터페이스를 사용하는 경우에는, 이 플래그를 지정하지 않고 , 치환용의 올드스타일 템플릿 또는 훅 프로시저를 지정합니다.올드스타일 인터페이스를 사용하지만 커스텀 템플릿이나 훅 프로시저가 필요없는 경우에는, 항상0 (FALSE) (을)를 돌려주는 단순한 훅 프로시저를 사용할 필요가 있습니다.

0x00100000 (OFN_NODEREFERENCELINKS)

쇼트 컷 파일이 선택되었을 경우에, 쇼트 컷 파일(.lnk)의 패스 및 파일명을 돌려주도록(듯이) 지시합니다.이 플래그를 지정하지 않는 경우는, 쇼트 컷이 참조하는 파일의 패스 및 파일명이 돌려주어집니다.

0x00200000 (OFN_LONGNAMES)

올드스타일 다이알로그 박스에 대하고, 긴 파일명을 사용합니다.이 플래그가 지정되어 있지 않은 경우, 혹은OFN_ALLOWMULTISELECT플래그가 지정되어 있는 경우에는, 올드스타일 다이알로그 박스는 공백 문자를 포함한 파일명에 대해서 짧은 형식의 파일명을 사용합니다.익스플로러 스타일 다이알로그 박스에서는 이 플래그는 무시되어 항상 긴 파일명이 돌아갑니다.

0x00400000 (OFN_ENABLEINCLUDENOTIFY)

Windows 2000/XP 이후: 유저가 폴더를 열었을 때에,OFNHookProc훅 프로시저에CDN_INCLUDEITEM통지 메세지가 송신되도록(듯이) 합니다.새롭게 열린 폴더에 포함되는 각각의 아이템에 대해서 통지가 보내집니다.이러한 통지 메세지에 의해, 어느 아이템을 폴더의 아이템 리스트에 표시하는지를 제어할 수 있습니다.

0x00800000 (OFN_ENABLESIZING)

Windows 98/Me/2000/XP 이후: 마우스 혹은 키보드의 조작으로 익스플로러 스타일 다이알로그 박스의 사이즈를 변경할 수 있도록 합니다.디폴트에서는, 이 플래그가 지정되어 있는지 어떤지에 관계없이, 익스플로러 스타일 다이알로그 박스의 사이즈를 변경할 수 있습니다.이 플래그는, 훅 프로시저 또는 커스텀 템플릿을 사용하는 경우에게만 필요합니다.올드스타일 다이알로그 박스에서는 사이즈를 변경할 수 없습니다.

0x02000000 (OFN_DONTADDTORECENT)

Windows 2000/XP 이후: 유저의 「최근 사용한 파일」의 링크를 포함한 디렉토리에, 선택된 파일의 링크가 추가되지 않게 합니다.이 디렉토리의 위치를 취득하려면 ,CSIDL_RECENT플래그를 지정해 SHGetSpecialFolderLocation함수를 호출합니다.

0x10000000 (OFN_FORCESHOWHIDDEN)

Windows 2000/XP 이후: 시스템 파일 또는 숨겨 속성 파일을 강제적으로 표시시키도록(듯이) 지정합니다.다만, 시스템 속성·은폐 속성의 양쪽 모두의 속성을 가지는 파일은 표시되지 않습니다.

nFileOffset

lpstrFile멤버가 가리키는 문자열 중(안)에서, 패스의 선두로부터 파일명까지의, 아르바이트수(Unicode판의 경우는 문자수)로 나타내진 제로 베이스의 오프셋이 격납됩니다.유저가 복수의 파일을 선택했을 경우는, 최초의 파일명에의 오프셋이 됩니다.

nFileExtension

lpstrFile멤버가 가리키는 문자열 중(안)에서, 패스의 선두로부터 파일명의 확장자(extension)(피리오드“.”의 다음의 문자)까지의, 아르바이트수(Unicode판의 경우는 문자수)로 나타내진 제로 베이스의 오프셋이 격납됩니다.유저가 확장자(extension)를 입력하지 않고, 한편lpstrDefExt멤버에0 (NULL) 하지만 지정되어 있는 경우에는, 종단 눌 문자에의 오프셋이 됩니다.유저가, 파일명의 마지막 문자로서 피리오드“.”(을)를 입력했을 경우에는, 이 멤버는0(이)가 됩니다.

lpstrDefExt

디폴트의 확장자(extension)를 격납한 버퍼의 주소를 지정합니다.유저가 확장자(extension)를 입력하지 않았던 경우에는, 이 확장자(extension)가 추가됩니다.이 문자열은 어떠한 길이로 할 수도 있습니다만, 그 중 최초의3문자만이 확장자(extension)로서 추가됩니다.이 문자열에 피리오드“.”(을)를 포함해야 하는 것이 아닙니다.이 멤버가0 (NULL) (이어)여, 한편 유저가 확장자(extension)를 입력하지 않았던 경우에는, 확장자(extension)는 추가되지 않습니다.

lCustData

lpfnHook멤버로 지정되는 훅 프로시저에게 건네지는 어플리케이션 정의의 데이터를 지정합니다.훅 프로시저가WM_INITDIALOG메세지를 받아들일 때, 메세지의lParam파라미터는, 다이알로그 박스 작성시로 지정되었다OPENFILENAME구조체의 주소가 됩니다.훅 프로시저는, 이 구조체로부터lCustData멤버의 값을 취득할 수 있습니다.

lpfnHook

훅 프로시저의 주소를 지정합니다.Flags멤버에OFN_ENABLEHOOK플래그가 지정되어 있지 않은 경우는, 이 멤버는 무시됩니다.

Flags멤버에OFN_EXPLORER플래그가 지정되어 있지 않은 경우는,lpfnHook멤버에는, 다이알로그 박스에 이용되는 메세지를 받아들인다OFNHookProcOldStyle훅 프로시저의 주소를 지정합니다.훅 프로시저는, 메세지를 디폴트 다이알로그 박스 프로시저에 건네주려면 반환값으로서0 (FALSE) (을)를 돌려줍니다.또, 메세지를 버리려면1 (TRUE) (을)를 돌려줍니다.

OFN_EXPLORER플래그가 지정되어 있는 경우는,lpfnHook멤버에는OFNHookProc훅 프로시저의 주소를 지정합니다.훅 프로시저는, 다이알로그 박스로부터 보내지는 통지 메세지와 아이 다이얼로그 템플릿을 지정하는 것으로 정의되는 추가의 컨트롤에 관한 메세지를 받아들입니다.다만, 디폴트 다이알로그 박스의 표준 컨트롤에 의한 메세지는 받아들이지 않습니다.

lpTemplateName

hInstance멤버로 지정되는 모듈에 포함되는 다이얼로그 템플릿 자원의 이름을 나타내는 눌 종단 문자열의 주소를 지정합니다.번호 붙일 수 있었던 다이얼로그 자원의 경우는, 자원 번호를 지정할 수 있습니다.Flags멤버에OFN_ENABLETEMPLATE플래그가 지정되어 있지 않은 경우는, 이 멤버는 무시됩니다.OFN_EXPLORER플래그가 설정되어 있는 경우에는, 지정된 템플릿을 사용해 디폴트 익스플로러 스타일 다이알로그 박스의 아이 다이알로그 박스를 작성합니다.OFN_EXPLORER플래그가 설정되어 있지 않은 경우에는, 지정된 템플릿을 사용하고, 디폴트 다이알로그 박스와 갈아넣어 표시되는 올드스타일 다이알로그 박스를 작성합니다.

pvReserved

예약되고 있습니다.0 (NULL) (을)를 지정하지 않으면 안됩니다.

dwReserved

예약되고 있습니다.0(을)를 지정하지 않으면 안됩니다.

FlagsEx

Windows 2000/XP: 다이알로그 박스의 초기화에 사용되는 비트 플래그를 지정합니다.0또는 이하의 플래그를 지정할 수 있습니다.

0x00000001 (OFN_EX_NOPLACESBAR)

장소 바가 표시되지 않습니다.이 플래그가 지정되어 있지 않은 경우는, 익스플로러 스타일 다이알로그 박스는, 「마음에 드는 것」폴더나 「데스크탑」폴더등이 같은 일반적으로 사용되는 폴더를 나타내는 아이콘을 포함한 장소 바를 표시합니다.

해설

호환성을 유지하기 위해,Flags멤버에OFN_ENABLEHOOK하지만 지정되어 있고, 한편lStructSize하지만76 (OPENFILENAME_SIZE_VERSION_400) 인 경우에는, 장소 바가 표시되지 않습니다.

대응 정보

Windows 95 이후 / Windows NT 3.1 이후

변수와의 대응

HSP 변수 멤버
멤버명 오프셋 사이즈
ofn.0 lStructSize ( = 76 or 88 ) 0 4
ofn.1 hwndOwner 4 4
ofn.2 hInstance 8 4
ofn.3 lpstrFilter 12 4
ofn.4 lpstrCustomFilter 16 4
ofn.5 nMaxCustFilter 20 4
ofn.6 nFilterIndex 24 4
ofn.7 lpstrFile 28 4
ofn.8 nMaxFile 32 4
ofn.9 lpstrFileTitle 36 4
ofn.10 nMaxFileTitle 40 4
ofn.11 lpstrInitialDir 44 4
ofn.12 lpstrTitle 48 4
ofn.13 Flags 52 4
ofn.14 하위 워드 nFileOffset 56 2
상위 워드 nFileExtension 58 2
ofn.15 lpstrDefExt 60 4
ofn.16 lCustData 64 4
ofn.17 lpfnHook 68 4
ofn.18 lpTemplateName 72 4
ofn.19 pvReserved 76 4
ofn.20 dwReserved 80 4
ofn.21 FlagsEx 84 4
반응형
Comments