'MFC'에 해당되는 글 24건
- 2011.03.02 Serialize <직렬화>
- 2011.02.11 SHFileOperation
- 2011.02.11 SHFILEOPSTRUCT 구조체
- 2011.02.10 [MFC] 파일 다이얼로그 - 3 <BROWSEINFO사용>
- 2011.02.10 [MFC] 폴더 다이얼로그 - 2 <SHBrowseForFolder>
- 2011.02.10 [MFC] 폴더 다이얼로그 - 1 <BROWSEINFO 구조체>
- 2011.02.08 대표적인 소켓 에러
- 2011.02.07 [MFC] 가변인수 - va_list
- 2011.02.07 [MFC] SENDMESSAGE 로 문자열 보내기
- 2011.01.24 [MFC] TIMER 사용시 여러개의 CALLBACK 함수 만들기
Stream은 하나의 관을 통해 일렬로 데이터를 전달하기 떄문에 비트들의 연속으로 구성된 기본 자료형 데이터를 Stream에 전달하는 것은 어렵지 않다.
하지만 데이터의 집합으로 구성된 객체를 스트림에 출력하려면 객체를 구성하는 데이터를 일렬로 배열시킨뒤 스트림에 기록해야 한다. 객체를 일렬로 배열시키는 작업을 직렬화(Serialize)라 한다.
'MFC > Microsoft Foundation Class' 카테고리의 다른 글
SHFileOperation (0) | 2011.02.11 |
---|---|
SHFILEOPSTRUCT 구조체 (0) | 2011.02.11 |
[MFC] 파일 다이얼로그 - 3 <BROWSEINFO사용> (0) | 2011.02.10 |
[MFC] 폴더 다이얼로그 - 2 <SHBrowseForFolder> (0) | 2011.02.10 |
[MFC] 폴더 다이얼로그 - 1 <BROWSEINFO 구조체> (0) | 2011.02.10 |
WINSHELLAPI int WINAPI SHFileOperation( LPSHFILEOPSTRUCT lpFileOp );
- 복사, 이동, 이름을 변경, 또는 파일 시스템 개체를 삭제합니다.
- 성공시 0을 반환, 그렇지 아니면 0이 아닌수가 반환
[lpFileOP]
SHFILEOPSTRUCT구조체의 주소를 인자로 받는다
'MFC > Microsoft Foundation Class' 카테고리의 다른 글
Serialize <직렬화> (0) | 2011.03.02 |
---|---|
SHFILEOPSTRUCT 구조체 (0) | 2011.02.11 |
[MFC] 파일 다이얼로그 - 3 <BROWSEINFO사용> (0) | 2011.02.10 |
[MFC] 폴더 다이얼로그 - 2 <SHBrowseForFolder> (0) | 2011.02.10 |
[MFC] 폴더 다이얼로그 - 1 <BROWSEINFO 구조체> (0) | 2011.02.10 |
typedef struct _SHFILEOPSTRUCT { HWND hwnd; // 윈도우 핸들 UINT wFunc; // 실행하는 조작 LPCTSTR pFrom; // 대상 파일명 LPCTSTR pTo; // 목적 파일명 FILEOP_FLAGS fFlags; // 플래그 BOOL fAnyOperationsAborted; // 결과 LPVOID hNameMappings; // 파일명 매핑 오브젝트 LPCTSTR lpszProgressTitle; // 다이얼로그의 타이틀 } SHFILEOPSTRUCT, FAR *LPSHFILEOPSTRUCT;
SHFileOperation 함수가 행하는 파일 조작에 관한 정보가 격납됩니다.
멤버
hwnd
파일 조작의 상황을 표시하는 다이알로그 박스의 오너 윈도우의 핸들을 지정합니다.
wFunc
실행하는 파일 조작을 나타내는 값을 지정합니다.이하의 값중 한쪽이 격납됩니다.
치 |
의미 |
0x0001 (FO_MOVE) |
pFrom 멤버로 지정된 파일을 pTo 멤버로 지정된 위치로 이동합니다. |
0x0002 (FO_COPY) |
pFrom 멤버로 지정된 파일을 pTo 멤버로 지정된 위치에 카피합니다. |
0x0003 (FO_DELETE) |
pFrom 멤버로 지정된 파일을 삭제합니다. |
0x0004 (FO_RENAME) |
pFrom 멤버로 지정된 파일의 이름을 pTo 멤버로 지정된 파일명으로 변경합니다.이 플래그를 사용하고, 한 번의 함수 호출로 복수의 파일의 이름을 변경할 수 없습니다.복수의 파일의 이름을 변경하려면 FO_MOVE 플래그를 사용합니다. |
pFrom
조작의 대상이 된다1개이상의 파일명이 격납된 버퍼의 주소를 지정합니다.이러한 파일명은 풀 패스 지정되어 있지 않으면 안됩니다.파일명에 “*” 등의, 표준MS-DOS와일드 카드를 지정할 수 있습니다.
각각의 파일명은1개의 눌 문자로 단락지어지지 않으면 안됩니다.또, 마지막 파일명의 뒤에는2개의 눌 몬지를 들어갈 수 있지 않으면 안됩니다.
pTo
카피·이동처 디렉토리명 또는 변경 후의 파일명이 격납된 버퍼의 주소를 지정합니다.이 멤버를 사용하지 않는 경우에는 0 (NULL) (을)를 지정하지 않으면 안됩니다.
카피 또는 이동의 조작에 대하고, pFrom 멤버와 같은 방법으로 복수의 파일을 지정할 수 있습니다.이 경우, 각각의 파일명은1개의 눌 문자로 단락지어, 마지막 파일명의 뒤에는2개의 눌 몬지를 들어갈 수 있지 않으면 안됩니다.복수의 파일명을 지정하려면 , fFlags 멤버에 FOF_MULTIDESTFILES 플래그를 지정합니다.
카피 또는 이동의 조작에 대하고, 존재하지 않는 디렉토리를 지정할 수 있습니다.이 때, 시스템은 디렉토리의 작성을 시도합니다만, 통상은, 다이알로그 박스를 표시해 새로운 디렉토리를 작성할지를 유저에게 확인합니다.파일 조작중에 다이알로그 박스를 표시하지 않게 하려면 , fFlags 멤버에 FOF_NOCONFIRMMKDIR 플래그를 지정합니다.
파일명에 와일드 카드 문자를 사용할 수 없습니다.또, 파일명은 풀 패스 지정되어 있지 않으면 안됩니다.상대 패스를 사용하면, 예기치 않은 결과를 일으킬 가능성이 있습니다.
fFlags
파일 조작을 제어하는 옵션 플래그를 지정합니다. 0 또는 이하의 값을 조합해 지정합니다.
치 |
의미 |
0x0001 (FOF_MULTIDESTFILES) |
pTo 멤버가 복수의 파일명을 지정해 있는 것을 나타냅니다. |
0x0002 (FOF_CONFIRMMOUSE) |
현재는 사용되지 않습니다. |
0x0004 (FOF_SILENT) |
경과를 나타내는 다이알로그 박스를 표시하지 않습니다. |
0x0008 (FOF_RENAMEONCOLLISION) |
이동, 카피, 이름의 변경의 조작에 대하고, 지정한 파일명이 벌써 존재하고 있었을 경우에는, 조작 대상의 파일에 새로운 이름을 붙입니다. |
0x0010 (FOF_NOCONFIRMATION) |
표시되는 다이알로그 박스로 「네」또는 「모두」를 선택하도록(듯이) 합니다. |
0x0020 (FOF_WANTMAPPINGHANDLE) |
FOF_RENAMEONCOLLISION 하지만 지정되어 있고, 같은 파일명이 존재했기 때문에 새로운 파일명이 붙여졌을 경우에, 낡은 이름과 새로운 이름을 포함한 매핑 오브젝트의 핸들을 hNameMappings 멤버에 격납합니다. |
0x0040 (FOF_ALLOWUNDO) |
가능한 한 un-do 정보를 보관 유지하도록(듯이) 합니다. pFrom 그리고 지정된 파일명이 풀 패스로 지정되어 있을 필요가 있습니다.삭제시로 지정하면, 파일을 쓰레기통에 넣을 수 있습니다. |
0x0080 (FOF_FILESONLY) |
와일드 카드 파일명(*.*)(이)가 지정되었을 경우에게만 조작을 실행합니다. |
0x0100 (FOF_SIMPLEPROGRESS) |
경과를 나타내는 다이알로그 박스에 파일명을 표시하지 않습니다. |
0x0200 (FOF_NOCONFIRMMKDIR) |
새로운 디렉토리를 작성할 필요가 있는 경우에, 작성할지의 확인을 하지 않습니다. |
0x0400 (FOF_NOERRORUI) |
에러가 발생했을 경우에, 유저 인터페이스를 표시하지 않습니다. |
0x0800 (FOF_NOCOPYSECURITYATTRIBS) |
Version 4.71 이후: 파일의 시큐러티 속성이 카피되지 않게 합니다. |
0x1000 (FOF_NORECURSION) |
로컬 디렉토리에만 조작을 행합니다.서브 디렉토리에 대해서 재귀적으로 조작을 행하지 않습니다. |
0x2000 (FOF_NO_CONNECTED_ELEMENTS) |
Windows Me/2000 이후: 그룹으로서 접속되고 있는 파일을 이동하지 않습니다.지정된 파일만을 이동합니다. |
0x4000 (FOF_WANTNUKEWARNING) |
Windows Me/2000 이후: 쓰레기통에 넣는 것은 아닌 삭제 조작 시에 파일이 삭제될 때 경고를 합니다. |
0x8000 (FOF_NORECURSEREPARSE) |
Windows XP 이후: 리파스포인트를 컨테이너는 아니고 오브젝트로서 취급합니다. |
fAnyOperationsAborted
지정한 파일 조작이 완료하기 전에 유저에 의해서 중지되었을 경우에는 1 (TRUE) 하지만 격납됩니다.그 이외의 경우에는 0 (FALSE) 하지만 격납됩니다.
hNameMappings
이동·카피·이름 변경된 파일의 낡은 파일명과 새로운 파일명을 포함한 파일명 매핑 오브젝트의 핸들이 격납됩니다.이 멤버는 fFlags 멤버에 FOF_WANTMAPPINGHANDLE 플래그가 지정되었을 경우에게만 사용됩니다.이 핸들이 불필요하게 되면 SHFreeNameMappings 함수로 해방하지 않으면 안됩니다.이 핸들에 관해서는, 아래의 해설을 참조해 주세요.
lpszProgressTitle
경과를 표시하는 다이알로그 박스의 타이틀 바에 사용하는 문자열의 주소를 지정합니다. fFlags 멤버로 FOF_SIMPLEPROGRESS 하지만 지정되어 있는 경우에게만 유효합니다.
해설
pFrom 멤버 및 pFrom 멤버가 풀 패스가 아닌 파일명의 경우는, 커런트 디렉토리에 있다고 보입니다.
파일 삭제시에 pFrom 멤버에 풀 패스가 아닌 파일명이 지정되었을 경우는, FOF_ALLOWUNDO 플래그를 지정했을 경우에서도 파일은 쓰레기통에 넣어지지 않습니다.
fFlags 멤버에 FOF_WANTMAPPINGHANDLE 플래그를 지정하면, hNameMappings 멤버에는 파일명 매핑 오브젝트의 핸들이 격납됩니다.이 핸들은, 멤버가 UINT 형태 및 SHNAMEMAPPING 구조체의 배열에의 포인터인 구조체의 포인터로서 취급됩니다.즉,
struct HANDLETOMAPPINGS {
UINT uNumberOfMappings; // 배열의 요소수
SHNAMEMAPPING *lpSHNameMapping; // 배열에의 포인터
};
그렇다고 하는 구조체에의 포인터이다고 합니다(이 HANDLETOMAPPINGS 구조체는 명시적으로 정의되고는 있지 않습니다).이 때의 UINT 형태의 값으로서 SHNAMEMAPPING 구조체의 배열의 요소수가 세트 됩니다.각각의 SHNAMEMAPPING 구조체에는, 변경되었다1개의 파일이 낡은 패스명 및 새로운 패스명이 격납되고 있습니다.
hNameMappings 멤버의 값으로 해서 취득한 핸들은 SHFreeNameMappings 함수를 사용해 해방하지 않으면 안됩니다.
hNameMappings 멤버에 돌려주어지는 파일명 매핑 오브젝트를 참조하는 경우, Windows 95/98/Me 그럼, SHFileOperation 함수는 ANSI 세트의 SHNAMEMAPPING 구조체를 돌려줍니다만,Windows NT/2000/XP 그럼, SHFileOperation 함수는 ANSI 판의 함수 및 Unicode 판의 함수 모두 Unicode 세트의 SHNAMEMAPPING 구조체를 돌려줍니다.따라서, 모든 버젼의 Windows 그리고 조작시키기 위해서는, Windows 의 버젼을 조사해 조건 나누어 하는 코드를 작성할 필요가 있습니다.
'MFC > Microsoft Foundation Class' 카테고리의 다른 글
Serialize <직렬화> (0) | 2011.03.02 |
---|---|
SHFileOperation (0) | 2011.02.11 |
[MFC] 파일 다이얼로그 - 3 <BROWSEINFO사용> (0) | 2011.02.10 |
[MFC] 폴더 다이얼로그 - 2 <SHBrowseForFolder> (0) | 2011.02.10 |
[MFC] 폴더 다이얼로그 - 1 <BROWSEINFO 구조체> (0) | 2011.02.10 |
void CNetwork_FileDlg::OnBtnOPEN() { TCHAR m_szFolderDisplayName[MAX_PATH] = {0}; TCHAR m_szFolderPath[MAX_PATH] = {0}; LPITEMIDLIST m_pidlSelected =NULL; BROWSEINFOA m_bi; memset(&m_bi,0,sizeof(m_bi)); m_bi.hwndOwner =m_hWnd; m_bi.pszDisplayName = m_szFolderDisplayName; m_bi.lpszTitle = _T("Title"); m_bi.ulFlags = BIF_BROWSEINCLUDEFILES ; m_pidlSelected = ::SHBrowseForFolder(&m_bi); if(m_pidlSelected != NULL) { ::SHGetPathFromIDList(m_pidlSelected,m_szFolderPath); } m_edt = m_szFolderPath; UpdateData(FALSE); }
'MFC > Microsoft Foundation Class' 카테고리의 다른 글
SHFileOperation (0) | 2011.02.11 |
---|---|
SHFILEOPSTRUCT 구조체 (0) | 2011.02.11 |
[MFC] 폴더 다이얼로그 - 2 <SHBrowseForFolder> (0) | 2011.02.10 |
[MFC] 폴더 다이얼로그 - 1 <BROWSEINFO 구조체> (0) | 2011.02.10 |
대표적인 소켓 에러 (0) | 2011.02.08 |
사용자가 Shell폴더를 선택할 수 있는 다이얼로그 박스를 보여준다.
WINSHELLAPI LPITEMIDLIST WINAPI SHBrowseForFolder( LPBROWSEINFO lpbi );
- 네임스페이스의 루트의 상대적으로 선택한 폴더의 위치를 지정하고 아이템 식별자 목록을 반환한다.
- 사용자가 대화상자에서 취소 단추를 선택한 경우 반환 값은 NULL이다.
lpbi : 다이얼로그를 표시하는 데 사용 정보가 들어있는 BROWSEINFO의 주소
'MFC > Microsoft Foundation Class' 카테고리의 다른 글
SHFILEOPSTRUCT 구조체 (0) | 2011.02.11 |
---|---|
[MFC] 파일 다이얼로그 - 3 <BROWSEINFO사용> (0) | 2011.02.10 |
[MFC] 폴더 다이얼로그 - 1 <BROWSEINFO 구조체> (0) | 2011.02.10 |
대표적인 소켓 에러 (0) | 2011.02.08 |
[MFC] 가변인수 - va_list (0) | 2011.02.07 |
MFC에서는 FolderBrowserDialog가 지원되지 않아서 직접 만들어야 한다.
[BROWSEINFO 구조체]
typedef struct _browseinfo {
HWND hwndOwner;
LPCITEMIDLIST pidlRoot;
LPSTR pszDisplayName;
LPCSTR lpszTitle;
UINT ulFlags;
BFFCALLBACK lpfn;
LPARAM lParam;
int iImage;
} BROWSEINFO, *PBROWSEINFO, *LPBROWSEINFO;
hwndOwner : 다이얼로그 박스의 부모 윈도우의 핸들
pidlRoot : 브라우저에서부터 루트 폴더의 위치를 지정하는 ITEMIDLIST 구조의 주소 찾아볼 수 있습니다.
오직 지정된 폴더와 그 하위 폴더 대화 상자에 나타납니다.
이 멤버는 NULL이 될 수 있습니다. 이 경우, 네임 스페이스 루트 (바탕 화면 폴더) 사용됩니다
pszDisplayName : 버퍼의 주소는 사용자가 선택한 폴더의 표시 이름을 보여줍니다.
이 버퍼의 크기는 MAX_PATH 바이트로 간주됩니다.
lpszTitle : 다이얼로그의 트리뷰 컨트롤에서 Null종료 문자열의 주소를 보여줍니다
이 문자열은 사용자에게 일일이 가르쳐주는데 사용할 수 있습니다.
ulFlags : 대화 상자에 대한 옵션을 지정하는 플래그.
이 멤버는 제로값이거나 다음 값의 조합을 포함할 수 있습니다
BIF_BROWSEFORCOMPUTER | 컴퓨터만 리턴합니다. 다른것을 선택하면 OK버튼이 비활성화 |
BIF_BROWSEFORPRINTER | 프린터만 리턴합니다. 다른것을 선택하면 OK버튼이 비활성화 |
BIF_BROWSEINCLUDEFILES | 이browse dialog는 폴더 뿐만이 아니라 파일도 보여줍니다 |
BIF_DONTGOBELOWDOMAIN | 트리 컨트롤 뷰에서 도메인 레벨 아래의 네트워크 폴더를 포함하지 않습니다 |
BIF_EDITBOX | Version 4.71. The browse dialog includes an edit control in which the user can type the name of an item. |
BIF_RETURNFSANCESTORS | Only return file system ancestors. If the user selects anything other than a file system ancestor, the OK button is grayed. |
BIF_RETURNONLYFSDIRS | 시스템 디렉토리만 리턴합니다. 다른것을 선택하면 OK버튼이 비활성화 |
BIF_STATUSTEXT | Include a status area in the dialog box. The callback function can set the status text by sending messages to the dialog box. |
BIF_VALIDATE | Version 4.71. If the user types an invalid name into the edit box, the browse dialog will call the application's BrowseCallbackProc with the BFFM_VALIDATEFAILED message. This flag is ignored if BIF_EDITBOX is not specified. |
lParam : 하나를 지정하면 응용프로갬 정의 값이 대화상자의 콜백함수로 전달합니다.
iImage : 변수에 선택한 폴더에 관련된 이미지를 받을 수 있습니다.
'MFC > Microsoft Foundation Class' 카테고리의 다른 글
[MFC] 파일 다이얼로그 - 3 <BROWSEINFO사용> (0) | 2011.02.10 |
---|---|
[MFC] 폴더 다이얼로그 - 2 <SHBrowseForFolder> (0) | 2011.02.10 |
대표적인 소켓 에러 (0) | 2011.02.08 |
[MFC] 가변인수 - va_list (0) | 2011.02.07 |
[MFC] SENDMESSAGE 로 문자열 보내기 (0) | 2011.02.07 |
에러 변수 |
에러코드 |
설 명 |
WSAEINTR |
10004 |
Blocking 윈속이 WSACancelBolcklocd에 함수취소 되었음 |
WSAEBADF |
10009 |
잘못된 기술자(소켓핸들) |
WSAEACCES |
10013 |
브로드캐스트 어드레스를 위한 데이터그램 소켓의 접속시도가 setsockopt함수로 SO_BROADCAST가 설정되지 않은 상태에서 실패했음 |
WSAEFAULT |
10014 |
Name 또는 namelen 매개변수가 올바른 형태가 아님 |
WSAEINVAL |
10022 |
Accept 하기 전에 listen 함수가 불러지지 않았음 |
WSAEMFILE |
10024 |
새로운 소켓에 할당하기 위한 소켓 기술자가 더 이상 남아있지 않음 |
WSAEWOULDBLOCK |
10035 |
소켓 함수가 비블럭킹 모드로 동장죽 |
WSAEINPROGRESS |
10036 |
블록화 함수가 호출되는 동안 부적절한 소켓 함수가 호출됨 |
WSAEALREADY |
10037 |
이미 완료된 비동기 명형에 대한 취소가 시도됨 |
WSAENOTSOCK |
10038 |
지정한 기술자가 소켓 기술자가 아님 |
WSAEDESTADDRREQ |
10039 |
해당 함수에 목적지 어드레스가 필요하지만 제공되지 않았음 |
WSAEMSGSIZE |
10040 |
수신된 메시지가 지정된 버퍼에 저장하기에 너무 커서 손실 되었음 |
WSAEPROTOTYPE |
10041 |
지정된 프로토콜이 잘못 되었거나 이 소켓에 대해서 잘못된 형식 |
WSAENOPROTOOPT |
10042 |
알 수 없는 옵션이거나, 지원되지 않는 옵션을 사용함 |
WSAEPROTONOSUPPORT |
10043 |
지정된 프로토콜이 지원되지 않는 형식 |
WSAESOCKTNOSUPPORT |
10044 |
지정된 소켓 타입이 지정한 어드레스 체계에서 지원되지 않는 형식 |
WSAEOPNOTSUPP |
10045 |
Socket이 연결지향형 서비스(SOCK_STREAM)형태가 아님 <예:listen이 UDP socket호출< |
WSAEPFNOSUPPORT |
10046 |
지정된 프로토콜 체계가(PF_*)지원되지 않음 |
WSAEAFNOSUPPORT |
10047 |
지정된 어드레스 체계가(AF_*)지원되지 않음 |
WSAEADDRINUSE |
10048 |
지정한 어드레스(IP)가 이미 사용중 |
WSAEADDRNOTAVAIL |
10049 |
지정된 어드레스는 로컬 머신에서 사용할 수 없음 |
WSAENETDOWN |
10050 |
네트웍 서브 시스템에 에러가 발생 |
WSAENETUNREACH |
10051 |
원격 시스템까지 네트웍이 도달할 수 없음 |
WSAENETRESET |
10052 |
연산이 진행되고 있는 도중 접속이 끊겨버림 |
WSAECONNABORTED |
10053 |
연결이 out-of-band나 다른 실패 떄문에 끊어져 버렸음 |
WSAECONNRESET |
10054 |
원격 연결지에서 “hard”나 “abortive” 종료를 수행해서 리셋되었음 |
WSAENOBUFS |
10055 |
윈도우 소켓 시스템의 버퍼 공간이 모자라거나, 애플리케이션에 의해 API에게 제돈되 공간이 너무 작아서 요청된 정보를 저장할 수 없음 |
WSAEISCONN |
10056 |
지정된 소켓이 이미 연결되어 있음 |
WSAENOTCONN |
10057 |
지정된 소켓이 이미 연결되어 있지 않음 |
WSAESHUTDOWN |
10058 |
소켓이 셧다운(shutdown()) 되었음 |
WSAETOOMANYREFS |
10059 |
지정한 함수에 대한 인자가 너무 많음 |
WSAETIMEOUT |
10060 |
접속 시도가 시간초과 되었음 |
WSAECONNREFUSED |
10061 |
접속 시도가 강제로 종료되었음 |
WSAELOOP |
10062 |
|
WSAENAMETOOLONG |
10063 |
|
WSAEHOSTDOWN |
10064 |
원격 호스트가 다운 되었음 |
WSAEHOSTUNREACH |
10065 |
네트워크 시스템 장애 들에 의해서 원격호스트까지 도달 할 수 없음 |
WSASYSNOREADY |
10091 |
네트워크 서브 시스템이 아직 통신할 준비가 되어 있지 않음(WSAStartup()이 반환) |
WSAVERNOTSUPPORTED |
10092 |
요청한 윈도우 소켓 버전이 현재 윈도우 시스템에서 지원하지 않음 |
WSANOTINITIALISED |
10093 |
이 함수를 사용하기 전에 성공적인 WSAStartup 함수의 호출이 없었음 |
WSAHOST_NOT_FOUND |
11001 |
호스트를 찾아낼 수 없음 |
WSATRY_AGAIN |
11002 |
요청된 정보가 발견되지 않음 |
WSANO_RECOVERY |
11003 |
회복할 수 없는 에러 발생 |
WSANO_DATA |
11004 |
잘못된 이름으로 아무런 데이터가 기록되지 않았음 |
'MFC > Microsoft Foundation Class' 카테고리의 다른 글
[MFC] 폴더 다이얼로그 - 2 <SHBrowseForFolder> (0) | 2011.02.10 |
---|---|
[MFC] 폴더 다이얼로그 - 1 <BROWSEINFO 구조체> (0) | 2011.02.10 |
[MFC] 가변인수 - va_list (0) | 2011.02.07 |
[MFC] SENDMESSAGE 로 문자열 보내기 (0) | 2011.02.07 |
[MFC] TIMER 사용시 여러개의 CALLBACK 함수 만들기 (0) | 2011.01.24 |
'MFC > Microsoft Foundation Class' 카테고리의 다른 글
[MFC] 폴더 다이얼로그 - 1 <BROWSEINFO 구조체> (0) | 2011.02.10 |
---|---|
대표적인 소켓 에러 (0) | 2011.02.08 |
[MFC] SENDMESSAGE 로 문자열 보내기 (0) | 2011.02.07 |
[MFC] TIMER 사용시 여러개의 CALLBACK 함수 만들기 (0) | 2011.01.24 |
Formview전환시 사용되는 함수들 (0) | 2011.01.19 |
void SendString() { CString msg= "msg"; SendMessage(m_hWnd,WM_MYMESSAGE,(WPARAM)&msg,0); } void RevMessage(WPARAM w,LPARAM l) { CString* temp = (CString*)w; CString msg; msg.Format("%s",*temp); ...... }쉽게말해서 주소값을 보내서 포인터로 받은 후 계속 포인터로 사용하는기 보다는다른 CString을 선언해서 일반 CString으로 사용
'MFC > Microsoft Foundation Class' 카테고리의 다른 글
대표적인 소켓 에러 (0) | 2011.02.08 |
---|---|
[MFC] 가변인수 - va_list (0) | 2011.02.07 |
[MFC] TIMER 사용시 여러개의 CALLBACK 함수 만들기 (0) | 2011.01.24 |
Formview전환시 사용되는 함수들 (0) | 2011.01.19 |
#include의 <>와 ""의 비교 (0) | 2011.01.19 |
void CALLBACK 함수명(HWND hWnd, UINT nID, UINT nEl, DWORD time) { //구현부분 }
Callback 함수의 원형으로 해당 형태의 함수명를 Settime의 3번째 인자로 넣어주면
지정한 시간마다 해당 함수가 호출된다
void CALLBACK time2(HWND hWnd, UINT nID, UINT nEl, DWORD time) { CWnd* m_pWnd = AfxGetMainWnd(); CTimer_CheckDlg* m_pParent = (CTimer_CheckDlg*)m_pWnd; m_pParent->m_pro1.StepIt(); m_pParent->m_pro2.StepIt(); m_pParent->m_pro3.StepIt(); } void CALLBACK time1(HWND hWnd, UINT nID, UINT nEl, DWORD time) { CWnd* m_pWnd = AfxGetMainWnd(); CTimer_CheckDlg* m_pParent = (CTimer_CheckDlg*)m_pWnd; CString time_edit; time_edit.Format("1번 TIME COUNT : %d",m_pParent->cnt++); m_pParent->m_edt = time_edit; m_pParent->UpdateData(FALSE); } BOOL CTimer_CheckDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon cnt = 0; SetTimer(1,1000,time1); SetTimer(2,1000,time2); m_pro1.SetRange(0,1000); m_pro2.SetRange(0,2000); m_pro3.SetRange(0,3000); return TRUE; // return TRUE unless you set the focus to a control }
'MFC > Microsoft Foundation Class' 카테고리의 다른 글
[MFC] 가변인수 - va_list (0) | 2011.02.07 |
---|---|
[MFC] SENDMESSAGE 로 문자열 보내기 (0) | 2011.02.07 |
Formview전환시 사용되는 함수들 (0) | 2011.01.19 |
#include의 <>와 ""의 비교 (0) | 2011.01.19 |
SDI(Single Document Interface)에서 DialogBar와 FormView를 사용한 컨트롤 (1) | 2011.01.17 |