델파이 시작한지 얼마 안돼서 하루에두 몇번씩
질문을 올리는데..항상 답변해 주셔서 감사해요..^^
제가 여기서 클립보드 복사하는 예제를 보구 사용하려고 하는데요..
궁금증이 생겨서요...
procedure TViewForm.CopyTextToClip(CopyStr: String);
var
P: PChar;
hMem: THandle;
begin
if CopyStr = '' then
System.Exit;
{클립보드를 열어 응용 프로그램이 내용을 읽거나 세트할 수 있게 한다}
OpenClipboard(handle);
{클립보드를 비우고 그것에 관계하는 데이타를 자유롭게 한다}
EmptyClipboard();
{전역 힙(heap)에 메모리 블록을 할당한다}
hMem := GlobalAlloc(GMEM_MOVEABLE, 255);
{전역 힙의 할당된 메모리 블록을 고정(lock)시킨다}
P := GlobalLock(hMem);
{힙에 문자열을 복사}
StrPCopy(P, CopyStr);
{전역 메모리 핸들을 클립보드에 전달, 메모리 블록은 클립보드 데이타가 된다}
SetClipboardData(CF_TEXT, hMem);
{전역 힙에서 메모리 블록의 잠금 해제}
GlobalUnlock(hMem);
{클립보드를 닫는다}
CloseClipboard();
end;
이런 예제를 봤거든요...윈도우 API 함수 사용하는 예제인데...전 초보라 API
함수 사용하기가 너무 버거워서요...
TRichEdit 컴포넌트 메서드 중에
CopyToClipBoard, CutToClipboard, ..등의 메서드가 있던데..
이 메서드들의 기능이 좀 떨어지는 건가요...?
API 함수를 사용하는 거랑, 컴포넌트의 메서드로만 하는 거랑
어떤 기능 상의 차이가 있는지 알고 싶습니다..단지 구현 상의
차이밖에 없는지도 궁금하구요...
너무 초보적인 질문이라도..가르쳐주세요...^^;;
리치에디트 콤포넌트는 RidhEd32.dll을 사용하는데 이놈이 내부적으로 클립보드로 복사해 넣는 API를 사용합니다. 그러니깐 그게 그겁니다.
그럼
평안하시길~