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();
* 사용된 프로그램
+ TitleMod
'컴퓨터 > MFC_API' 카테고리의 다른 글
프로그램이 플로피 디스크를 읽는 것 방지 (0) | 2009.12.27 |
---|---|
Scrollbar message handler 처리하기 (0) | 2009.12.27 |
저장하기 대화 상자 열기 (0) | 2009.12.14 |
CListCtrl의 Report 형식에서, 선택된 모든 항목 삭제하기 (0) | 2009.12.09 |
팝업 메뉴 (popup menu) 띄우기 (0) | 2009.12.09 |