어느새 8000 힛.
아마도 개장해서 이렇게 빠르게 올라가긴 처음인듯 싶습니다.
과거에는 3달 내내 100힛트도 오를까 말까했는데...
조금은 행복한 기분이랄까요?
조금씩 더욱더 튼튼한 컨텐츠를 실어서 보아야 겠습니다..라고 해도..
정말로 개인적인 취미 활동이기 때문에,
열심히 잘 해보겠습니다란 다짐 자체가 우습기도 하네요.
벌써 8000 번까지 때려 주신 여러분들께 감사드려요 ^^
WPARAM
과 LPARAM
에 대한 의미를 전혀 모른다면 차라리 다른 문서들(CodeProject 안에도 상당히 많습니다.)을 읽고 이해하고 들어가는 것이 좋을듯 싶습니다. CDialog
를 띄워주는 WTL SplitterWindow
를 가진 MFC CFrameWnd
를 생성해 본적 이 있습니다. -- 물론 시연이 끝났을때는 전부 WTL 코드로 수정해 버렸죠) class CMyWnd : public CWindowImpl< CMyWnd >
{
...
};
template < class T >
class B1
{
public:
void SayHi()
{
T* pT = static_cast< T* >(this); // 허걱? 이 부분을 아래에 설명하겠습니다.
pT->PrintClassName();
}
protected:
void PrintClassName() { cout << "This is B1"; }
};
class D1 : public B1< D1 >
{
// 전체적으로 오버라이딩 된 함수가 없습니다.
};
class D2 : public B1< D2 >
{
protected:
void PrintClassName() { cout << "This is D2"; }
};
main()
{
D1 d1;
D2 d2;
d1.SayHi(); // prints "This is B1"
d2.SayHi(); // prints "This is D2"
}
class D3 : public B1< D2 >
this
은 D1*과 D2* 형에 대해서만 안정성을 보장 받을 수 있고 그 외에 것에서는 해당되지 않습니다. 주의할점은 이 방법에서 적용된 방법은 일반적인 C++ 다형성과 거의 동일한 형태이기 때문에, SayHi() 메소드는 가상함수가 되지 않습니다.void B1< D1 >::SayHi()
{
D1* pT = static_cast< D1* >(this);
pT->PrintClassName();
}
void B1< D2 >::SayHi()
{
D2* pT = static_cast< D2* >(this);
pT->PrintClassName();
}
class CMyWindow : public CWindowImpl
{
public:
DECLARE_WND_CLASS(_T("My Window Class"))
};
class CMyWindow : public CWindowImpl
{
public:
DECLARE_WND_CLASS(_T("My Window Class"))
BEGIN_MSG_MAP(CMyWindow)
END_MSG_MAP()
};
Copyright © 2015-2025 Socialdev. All Rights Reserved.