C++/CLI
[Step. 10] 이벤트 ( event )
알 수 없는 사용자
2010. 8. 20. 09:00
이벤트는 그 이름처럼 이벤트를 처리할 때
사용하는 것으로 델리게이트와 조합하여 사용합니다.
http://cppcli.shacknet.nu/cli:event
보통 이벤트를 설명할 때 button 클래스를 예제로 사용하므로 저도 이것을 사용하여 간단하게 설명하겠습니다.^^
button 클래스의 여러 이벤트 중 clicked 이벤트를
구현할 때 이벤트로 불러질 클라이언트는 OnClick()이라는 멤버함수를 정의한 후 이것을 button 클래스의 clicked에 등록합니다.
delegate void ClickHandler();
ref class button {
public:
event ClickHandler^ Clicked;
button() {
btnForTest = this;
}
public:
void someoneclicked() {
Clicked();
}
static button^ btnForTest;
};
ref class Client {
private:
button^ btn;
public:
Client() {
btn = gcnew button;
btn->Clicked += gcnew ClickHandler(this, &Client::OnClick);
}
private:
void OnClick() {
Console::WriteLine("someone clicked.");
}
};
int main()
{
Client^ client = gcnew Client;
button::btnForTest->someoneclicked();
return 0;
}
< 출처 : http://cppcli.shacknet.nu/cli:event >
event는 몇 개의 제약이 있습니다.
1. Clicked 호출은 button 밖에 할 수 없습니다.
2. 클라이언트가 Clicked에 대한 조작은 +=와 -=만 할 수 있으며 Clicked()나 Clicked = nullptr 같은
것은 할 수 없습니다.
참고http://cppcli.shacknet.nu/cli:event