Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
콜백함수...
음 콜백함수에 대해 설명좀해주세요...
아직 내공이 부족해서인지 책을 보고 또 봐도 왜 콜백함수를 써야하는지
이해가 되지않는군요...
읽어주셔서 감사합니다^^
2
COMMENTS
치버
•
2001.11.28 08:38
콜백함수란 사용자가 사용하는 함수에서 기능을 수행할 때
특정루틴을 사용자가 직접 지정할 수 있게 되어있는 경우에 그 직접 지정된
함수를 말하죠.
그러니까 AProc; 라는 함수의 코딩을 예로 들어보면..
TCallBackProcType = procedure (AParam, BParam: Longint); stdcall;
procedure AProc(CallBackProc: TCallBackProcType);
begin
어쩌구..
저쩌구..
if CallBackProc<>nil then CallBackProc(AParam, BParam);
저쩌구..
어쩌구..
end;
위의 AProc 란 것이 함수로 정의돼어 있다고 할 때 사용자가 저 함수가
필요해서 호출을 합니다. 그런데 CallBackProc 파라미터로 사용자는
함수의 포인터를 건네줍니다. 물론 그 건네준 함수는 사용자가 직접 만든
함수라야 될것이고 TCallBackProcType 를 만족시키는 파라미터를 가진
함수이어야 할겁니다.
그 포인터를 건네준 함수가 콜백함수죠.
사용자가 따로 정의한 함수를 봅시다.
procedure myProc(AParam, BParam: longint); stdcall;
begin
if AParam=0 then
showmessage('AParam is 0');
end;
결국 함수를 다 적고 말았는데 사용자가 따로 정의한 함수가 myProc 라고 할 때
사용자는 AProc 함수를 호출할 때 다음과 같이 호출 할 수 있습니다.
AProc(@MyProc);
위의 글에서 MyProc 가 AProc 라는 함수의 콜백함수가 되죠.
그러니까 콜백함수를 넣어서 사용할 수 있게 하는 이유는 사용자가 특정함수의
처리중에 사용자마음대로 처리할 수 있도록 하는 기능을 넣어주기 위함이죠.
만약 AProc 가 콜백함수를 받아들이지 않는다면 AParam=0 일 때 위의 것처럼
ShowMessage 가 되는 상황은 없겠지만 사용자가 마음대로 함수를 만들어서
콜백에 넣어
0
0
삭제
수정
댓글
ClickTest
•
2001.11.28 09:32
콜백함수에 관심을 가지게 된게 여기 Q&A 와 팁모아를 뒤져서 EnumWindows 요놈을
찾아내서 실행된 윈도우 목록을 구했는데 왜 EnumWindows를 콜백함수로 구현을 해야하는지
이해가 되지않았습니다...
님의 답변이 많은 도움이 됐습니다...
이제 조금 Feel~~~이 오는군요... 감사합니다...
님의 답변을 팁모아에 올려주시면 저같은 초보들에게는 많은 도움이 될 것 같습니다!
^^
치버 wrote:
> 콜백함수란 사용자가 사용하는 함수에서 기능을 수행할 때
> 특정루틴을 사용자가 직접 지정할 수 있게 되어있는 경우에 그 직접 지정된
> 함수를 말하죠.
>
> 그러니까 AProc; 라는 함수의 코딩을 예로 들어보면..
>
> TCallBackProcType = procedure (AParam, BParam: Longint); stdcall;
>
> procedure AProc(CallBackProc: TCallBackProcType);
> begin
> 어쩌구..
> 저쩌구..
>
> if CallBackProc<>nil then CallBackProc(AParam, BParam);
>
> 저쩌구..
> 어쩌구..
> end;
>
> 위의 AProc 란 것이 함수로 정의돼어 있다고 할 때 사용자가 저 함수가
> 필요해서 호출을 합니다. 그런데 CallBackProc 파라미터로 사용자는
> 함수의 포인터를 건네줍니다. 물론 그 건네준 함수는 사용자가 직접 만든
> 함수라야 될것이고 TCallBackProcType 를 만족시키는 파라미터를 가진
> 함수이어야 할겁니다.
>
> 그 포인터를 건네준 함수가 콜백함수죠.
>
> 사용자가 따로 정의한 함수를 봅시다.
> procedure myProc(AParam, BParam: longint); stdcall;
> begin
> if AParam=0 then
> showmessage('AParam is 0');
> end;
>
> 결국 함수를 다 적고 말았는데 사용자가 따로 정의한 함수가 myProc 라고 할 때
> 사용자는 AProc 함수를 호출할 때 다음과 같이 호출 할 수 있습니다.
> AProc(@MyProc);
> 위의 글에서 MyProc 가 AProc 라는 함수의 콜백함수가 되죠.
>
> 그러니까 콜백함수를 넣어서 사용할 수 있게 하는 이유는 사용자가 특정함수의
> 처리중에 사용자마음대로 처리할 수 있도록 하는 기능을 넣어주기 위함이죠.
> 만약 AProc 가 콜백함수를 받아들이지 않는다면 AParam=0 일 때 위의 것처럼
> ShowMessage 가 되는 상황은 없겠지만 사용자가 마음대로 함수를 만들어서
> 콜백에 넣어
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
이수연
2001.11.28 19:22
0
COMMENTS
/
0
LIKES
DCC32 사용법 정말 모르겠어요(DLL UNLOAD때문에 delphi 6에서)
왕초보
•
2001.11.28 19:20
1
COMMENTS
/
0
LIKES
vc++로 만든 dll을 델파이에서 불렀는데 에러가 나네요...
왕초보
•
2001.11.29 20:54
메모리 부족으로 해석되는데요 실제로 BDE Administrator에서 Configuration-> System-> INIT부분에 보면 ...
깨비처럼
2001.11.28 18:30
0
COMMENTS
/
0
LIKES
oracle session에 관한 질문...
최은규
•
2001.11.28 17:53
1
COMMENTS
/
0
LIKES
Winzeos 셋업이 안됩니다.... ㅠ.ㅠ
^-_-^
•
2001.11.28 19:00
http://www.delmadang.com/technote/read.cgi?board=board012&x_number=1002518633&r_search=DMZ&nnew=1 ...
kivalan
•
2001.11.28 11:59
1
COMMENTS
/
0
LIKES
[TrayIcon] 트레이아이콘 정상화.
최용일
•
2001.11.28 19:31
안녕하세요. 최용일입니다. 이건 윈도우의 버그입니다. 공식적으로 버그라고 발표하지는 않았지만... ...
영프리오
•
2001.11.28 07:30
4
COMMENTS
/
0
LIKES
답변좀 해주세요.
1cm
•
2001.11.28 07:52
DrawItem이벤트에서 IF (OdSelected in State) then Font.Color:=원하는 색깔..; 포커스를 잃더라도...
영프리오
•
2001.11.28 10:04
procedure Tfmbasic.TreeView1CustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCust...
1cm
•
2001.11.28 18:47
이궁..지송!! 어젯밤에 졸린상태라소 Treeview를 왠 Listbox로 착각했네욤!! 님의 말은 트리뷰에서 ...
영프리오
•
2001.11.28 20:22
이 버그까지 잡아 달라고 하면 무리겠죠. 무슨 버그냐 하면 프로그램 상에는 에러는 없고요. 노드부분...
바보감자
2001.11.28 06:05
0
COMMENTS
/
0
LIKES
인디소켓사용(indy) 클라이언트에서 서버에 스트림형식의 데이타를 보내고 싶은데ㅠ
김도성
2001.11.28 06:03
0
COMMENTS
/
0
LIKES
ActiveX 개발시 궁금증 발생~!
~00~
2001.11.28 06:10
0
COMMENTS
/
0
LIKES
(긴급)질문임돠....(테이블)
bingyou
2001.11.28 05:25
0
COMMENTS
/
0
LIKES
Error 6 핸들이 잘못되었습니다. ???
이태근
2001.11.28 04:30
0
COMMENTS
/
0
LIKES
edit나 label이외에..
고상준
2001.11.28 04:20
0
COMMENTS
/
0
LIKES
소켓을 사용하여 텍스트값을 바이너리로 전송하는 방법좀..
ClickTest
•
2001.11.28 02:58
2
COMMENTS
/
0
LIKES
콜백함수...
음 콜백함수에 대해 설명좀해주세요... 아직 내공이 부족해서인지 책을 보고 또 봐도 왜 콜백함수를 써야하는지 이해가 되지않는군요... 읽어주셔서 감사합니다^^
치버
•
2001.11.28 08:38
콜백함수란 사용자가 사용하는 함수에서 기능을 수행할 때 특정루틴을 사용자가 직접 지정할 수 있게 되...
ClickTest
•
2001.11.28 09:32
콜백함수에 관심을 가지게 된게 여기 Q&A 와 팁모아를 뒤져서 EnumWindows 요놈을 찾아내서 실행된 윈...
델초보
•
2001.11.28 02:27
3
COMMENTS
/
0
LIKES
FindComponent 로 찾는데.. 에러가나거든요...제발 알려주세요..
하얀까마귀
•
2001.11.28 04:19
안녕하세요 하얀까마귀 입니다. 코딩 자체는 별 이상이 없는것 같네요. 설마 with 절 빼먹으신건 아...
델초보
•
2001.11.28 05:11
소스를 올립니다... 보시고 알려주세요... procedure TNS_NS010F_3P.QuickRep1BeforePrint(Sender: T...
아폴론
•
2001.11.28 22:08
델초보 wrote: > 소스를 올립니다... > 보시고 알려주세요... > > > procedure TNS_NS010F_3P.Quick...
권대웅
•
2001.11.28 02:06
2
COMMENTS
/
0
LIKES
Access에서 쿼리를 이용해서 테이블 목록을 얻고 싶어요?
하얀까마귀
•
2001.11.28 03:27
안녕하세요 하얀까마귀 입니다. 제가 MDB는 한번도 안써봐서 DB상에서 구하는 방법은 잘 모르겟고요.. ...
권대웅
•
2001.11.28 03:35
하얀까마귀 wrote: > 안녕하세요 하얀까마귀 입니다. > > 제가 MDB는 한번도 안써봐서 DB상에서 구하는...
초보
•
2001.11.28 00:07
2
COMMENTS
/
0
LIKES
MDI 내의 Frame에 EditBox 생성 가능한가요 ?
하얀까마귀
•
2001.11.28 04:03
안녕하세요 하얀까마귀 입니다. 3번째 프레임든 폼이든 상관없습니다. 프로그래밍은 아마두 프레임 ...
권대웅
•
2001.11.28 02:13
초보 wrote: > MDI 폼으로 3개의 Frame를 사용하여 폼을 만들었습니다. > 그런데 ListBox를 Click 하면 3...
초보에서 중수로 가는
•
2001.11.28 00:04
1
COMMENTS
/
0
LIKES
챠트의 진정한 고수만....
하얀까마귀
•
2001.11.28 04:06
안녕하세요 하얀까마귀 입니다. ㅠㅠ 이제 입문과정 마칠려고 하는 허연까마구 입니다. 제가 알기로...
궁금
•
2001.11.27 23:54
1
COMMENTS
/
0
LIKES
interbase 가 설치되어 있는지..
허접
•
2001.11.28 01:16
궁금 wrote: > interbase 가 설치되어 있으면 gdb만 , interbase 가 설치되어 있지 않으면 interbase 와 g...
왕초보
•
2001.11.27 23:40
3
COMMENTS
/
0
LIKES
c++로 만든 dll을 델파이에서 불러서 쓰려면....
하얀까마귀
•
2001.11.28 04:13
안녕하세요 하얀까마귀 입니다. 음... C에서 만든 DLL이든 델파이로 만든 DLL 이든 불러오는건 마찬가지...
왕초보
•
2001.11.28 04:37
interface function NCRegFp(lpSaBun : integer): integer ; cdecl; implementation {$R *.DFM} ...
하얀까마귀
•
2001.11.28 05:01
안녕하세요 하얀까마귀 입니다. 음.. 이상하네요.. C++ 로 만든 DLL 이라고 하셧는데.. 왜 BDE 에러가 ...
바보감자
2001.11.27 23:22
0
COMMENTS
/
0
LIKES
답변 감사합니다 ㅠㅠ..
ClickTest
2001/11/28 02:58
Views
354
Likes
0
Comments
2
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
특정루틴을 사용자가 직접 지정할 수 있게 되어있는 경우에 그 직접 지정된
함수를 말하죠.
그러니까 AProc; 라는 함수의 코딩을 예로 들어보면..
TCallBackProcType = procedure (AParam, BParam: Longint); stdcall;
procedure AProc(CallBackProc: TCallBackProcType);
begin
어쩌구..
저쩌구..
if CallBackProc<>nil then CallBackProc(AParam, BParam);
저쩌구..
어쩌구..
end;
위의 AProc 란 것이 함수로 정의돼어 있다고 할 때 사용자가 저 함수가
필요해서 호출을 합니다. 그런데 CallBackProc 파라미터로 사용자는
함수의 포인터를 건네줍니다. 물론 그 건네준 함수는 사용자가 직접 만든
함수라야 될것이고 TCallBackProcType 를 만족시키는 파라미터를 가진
함수이어야 할겁니다.
그 포인터를 건네준 함수가 콜백함수죠.
사용자가 따로 정의한 함수를 봅시다.
procedure myProc(AParam, BParam: longint); stdcall;
begin
if AParam=0 then
showmessage('AParam is 0');
end;
결국 함수를 다 적고 말았는데 사용자가 따로 정의한 함수가 myProc 라고 할 때
사용자는 AProc 함수를 호출할 때 다음과 같이 호출 할 수 있습니다.
AProc(@MyProc);
위의 글에서 MyProc 가 AProc 라는 함수의 콜백함수가 되죠.
그러니까 콜백함수를 넣어서 사용할 수 있게 하는 이유는 사용자가 특정함수의
처리중에 사용자마음대로 처리할 수 있도록 하는 기능을 넣어주기 위함이죠.
만약 AProc 가 콜백함수를 받아들이지 않는다면 AParam=0 일 때 위의 것처럼
ShowMessage 가 되는 상황은 없겠지만 사용자가 마음대로 함수를 만들어서
콜백에 넣어