return false; // 클립보드를 열지 못했다. 더이상 작업을 진행할 수 없다.
}
/// 클립 보드 내용을 얻어 가는 부분..
// 클립보드의 메모리 공간을 텍스트로 접근 설정.
HGLOBAL hglobal = GetClipboardData(CF_TEXT);
// 메모리를 잠가 놓고,
LPTSTR lptstr = (LPTSTR)GlobalLock(hglobal);
// CString 형 변수를 메모리로부터 만들고,
CString str(lptstr);
// begin of program specific jobs
// --- 적당한 작업을 해준다. (여기선 텍스트에 약간의 변형을 줌.
str.Replace(":","..");
str.Replace("\n"," ");
str.Replace("\r"," ");
str.Replace(" "," ");
str.Replace("/","_");
str += "\0";
// end of program specific jobs.
// 변형된 내용을 다시 클립보드로 복사해 넣는 부분의 시작.
int length = str.GetLength()+1;// 메모리 주소를 얻어서,
HGLOBAL hNewTitle = GlobalAlloc(GMEM_MOVEABLE, length );
// string 으로 casting 해서 잡아 놓고,
LPTSTR lptstrNewTitle = (LPTSTR)GlobalLock(hNewTitle);
// 위에서 수정한 것을 복사해 놓고,
CopyMemory(lptstrNewTitle, str.operator LPCTSTR(), length );
// 잡았던 메모리를 풀어 준다.
GlobalUnlock(hNewTitle);
// 클립보드의 기존 데이터를 없애고,
EmptyClipboard();
// 새로 설정해 놓은 메모리를 클립보들에 밀어 넣는다.
SetClipboardData(CF_TEXT, hNewTitle);
// 변형된 내용을 다시 클립보드로 복사해 넣는 부분의 끝.
// 잡아 놓았던 메모리를 풀어 놓고,
GlobalUnlock(hglobal);
// 클립보드를 닫는다.CloseClipboard();
'C & C++ > C & C++' 카테고리의 다른 글
[Tip] 에러 메시지 얻기 (0) | 2011.03.29 |
---|---|
파일 저장하기 (0) | 2011.03.29 |
CWnd 이해하기 (0) | 2011.03.29 |
SetSize 대용량 데이터 추가속도 향상 (0) | 2011.03.27 |
CString 문자열 검색 (0) | 2011.03.27 |
댓글