Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Call
- 점점변하는값
- Java
- SQL
- solution
- is_array
- mysql
- 월별 카운트
- halliday
- Join
- array
- C++
- unalias
- Post
- function
- application.mk
- Avr
- 0x
- 강좌
- 단축키
- cocos2d-x
- selectc
- Get
- 현재언어
- mathemetica
- 파일존재
- php
- android studio
- PORTG
- 하이퍼 터미널
Archives
- Today
- Total
코딩도사의 코드정리
파일 다이얼로그 본문
GetOpenFileName GetSaveFileName BOOL GetOpenFileName( LPOPENFILENAME lpofn ); BOOL GetSaveFileName( LPOPENFILENAME lpofn );먼저 GetOpenFileName 을 소개하고자 한다. 다이얼로그박스 초기화 구조체, 이 구조체는 사용자의 파일선택정보를 저장한다. 리턴 값 사용자가 한 파일이나 OK 버튼을 클릭하면 0이 아닌값을 리턴한다. 취소나 실패했을 땐 0을 리턴한다. 음 다음으로 OPENFILENAME 구조체를 설명한다.
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; DWORD lCustData; LPOFNHOOKPROC lpfnHook; LPCTSTR lpTemplateName; } OPENFILENAME;
보시다 시피 멤버가 엄청 많다. 2000이상에서 또 3개의 멤버가 추가되었다 -_-.. lStructSize 이 멤버는 그냥 sizeof(OPENFILENAME); 를 대입해 주면 된다. hwndOwner 대화 상자의 주인을 설정한다. 설정하면 그 대화상자가 끝나기 전까지 주인 윈도우는 사용하지 못한다. NULL 로 설정하면 다른 작업이 가능하다. lpstrFilter 열 파일의 타입을 지정하는 곳이다. exe 파일이나 php 파일이나 txt 파일등을 지정할 수 있다. (알려지지 않은 파일도 지정할 수 있다.) 지정하는 방법은 \0 로 구분해서 쓰는 방법인데, 형식은 이렇다. ="모오든 파일\0*.*\0문서파일\0*.txt;*.doc;*.hwp\0" ="Every File(*.*)\0*.*\0Text File\0*.txt;*.doc\0"; lpstrFile 이 멤버엔 전체경로가 들어간다. nMaxFile 적어도 256 이상은 넣어야 한다. 그냥 256 대입해주자. lpstrFileTitle 파일 이름을 받는다. 필요없으면 NULL nMaxFileTitle 파일 이름의 최대 길이 그러니까 char FileTitle[256]; lpstrFileTitle = FileTitle; 이라고 했으면 여기엔 256 을 넣는게 좋다. 더 작은 배열의 크기로 할당했으면 이 값도 바뀌어야 한다. lpstrInitialDir 파일 열기창이 시작되는 디렉토리, 2000 에서는 이 멤버보다 lpstrFile 멤버가 더 우선순위가 높다. lpstrTitle 열기 박스의 제목 지정. Flags ......MSDN 참고하기 바란다. nFileOffset 파일명이 시작되는 위치를 리턴한다. lpstrFile 에서 이 멤버만큼 더하면 그게 파일 이름이다. nFileExtension 위와 같다. 다른건 한가지, 확장자가 시작되는 위치를 리턴한다. 확장자가 입력되지 않았을 경우엔 NULL 을 가리킨다. lpstrDefExt 확장자를 입력하지 않았을 경우 디폴트 확장자를 지정한다.이 정도면 사용하는데 무리없을 듯 싶다. -_-+ 예제코드
#define MAX_PATH 256; OPENFILENAME ofn; char File[MAX_PATH+1]; ZeroMemory(File, sizeof File); ZeroMemory(&ofn, sizeof ofn); ofn.lStructSize = sizeof ofn; ofn.hwndOwner = hWnd; ofn.lpstrFilter = "실행파일\0*.exe\0\0"; ofn.lpstrFile = File; ofn.nMaxFile = MAX_PATH; GetOpenFileName(&ofn)주의할 점은 문자열을 초기화 시켜주지 않으면 창이 뜨지 않는다.
'컴퓨터 이야기 > C++' 카테고리의 다른 글
API 후킹 (0) | 2010.07.19 |
---|---|
C++ 의 mutable 키워드를 아시나요? (0) | 2010.07.17 |
Self documenting 합시다!! (1) | 2010.07.17 |
TR1 간단하지만 긴 소개 (0) | 2010.05.25 |
헤더 파일은 적당히 나눠야 한다 (0) | 2010.05.25 |