예제는 Visual Studio 2008 Sp1 Eng , Console Project + MFC 로 작성하엿다

// MethodPointer.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "MethodPointer.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// The one and only application object

CWinApp theApp;

using namespace std;

template <typename T>
class CLynButton  : public CObject //범용적인 버튼클래스라고 가정하자
{
public:
        T* Owner; //Owner변수
        void (T::*OnClick)(CLynButton *Sender); //이벤트핸들러라고 가정
        CLynButton(T* AOwner)
        {
                this->Owner = AOwner;
                this->OnClick = NULL;
        }
        void ON_WM_MOUSELDOWN() //메세지 핸들러라고 가정하자
        {
                //원래 작업 하고
                if((OnClick != NULL) && (Owner != NULL))
                {
                        (*Owner.*OnClick)(this);
                }
                //뭐 마무리 할거있음 하고
        }
        
};

class MainDlg : public CObject
{
public:
        void Programstart(); //뭐 프로그램의 시작이라고 가정해볼까요
        void OnButton1Click(CLynButton<MainDlg> *Sender)
        {
                printf("Hello!"); //클릭하면 Hello 라고 출력하자고 가정
        }
};

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
        int nRetCode = 0;

        // initialize MFC and print and error on failure
        if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
        {
                // TODO: change error code to suit your needs
                _tprintf(_T("Fatal Error: MFC initialization failed\n"));
                nRetCode = 1;
        }
        else
        {
                MainDlg dlg;
                dlg.Programstart();
        }
        return nRetCode;
}

void MainDlg::Programstart()
{
        CLynButton<MainDlg> Button1(this);
        Button1.OnClick = &MainDlg::OnButton1Click; //메시지 핸들러를 연결

        Button1.ON_WM_MOUSELDOWN(); //마우스 메시지가 발생했다고 가정하자
        
        //결과적으로 Hello가 출력된다.
}
분류 :
Visual C++
조회 수 :
30935
등록일 :
2008.09.27
12:19:29 (*.186.67.74)
엮인글 :
http://www.lunapiece.net/400/101/trackback
게시글 주소 :
http://www.lunapiece.net/400
문서 첨부 제한 : 0Byte/ 10.00MB
파일 제한 크기 : 10.00MB (허용한 확장자만 첨부할 수 있습니다.(관리자는 제외) : *.*)
옵션 :
:
:
:
:
List of Articles
번호 제목 글쓴이 날짜 조회 수
» Visual C++ Templete을 이용하여 BC++ OnClick 이벤트 VC++에서 흉내내보기 Lyn 2008-09-27 30935
20 Delphi / BCB SpeedButton 투명하게하기 Lyn 2008-09-19 16519
19 Win32 시스템 종료 함수 Lyn 2008-09-19 117034
18 Delphi / BCB 폼을 그림 모양대로 잘라내기 Lyn 2008-09-19 16724
17 Win32 Window 투명화 (Layerd Window) Lyn 2008-09-19 20040
16 Win32 파일이 존재하는지 확인하는 함수 Lyn 2008-09-19 19584
15 Visual C++ Window 최대, 최소 크기 정하기 Lyn 2008-09-17 18412
14 Win32 프로그램이 죽었는지 살았는지 확인만 하고 싶은경우 Lyn 2008-09-17 15293
13 Visual C++ 컨트롤 원하는대로 수정한 클래스 만들기 (기초) Lyn 2008-09-06 18509
12 Win32 데스크탑 영역 구하기 Lyn 2008-08-21 14320
11 Win32 마우스 일정 영역에 가두기 Lyn 2008-08-21 15635
10 Delphi / BCB 재귀 호출을 이용한 폴더내의 파일 전부 검색하기 Lyn 2008-08-15 17228
9 Delphi / BCB 타이틀바가 없는 폼 이동하기. Lyn 2008-08-15 127645
8 Delphi / BCB PChar 과 ShortString 타입 서로 변경하는 방법. Lyn 2008-08-15 14050
7 Visual C++ Alt + F4 막기 Lyn 2008-08-15 18105
6 Win32 Program Files 폴더 동적으로 가져오기. Lyn 2008-08-15 17950
5 Visual C++ Esc키와 Enter키로 다이얼로그 종료되는것 막기 Lyn 2008-08-15 19618
4 Win32 쓰래드에 이름 지정하기 Lyn 2008-08-15 20591
3 Delphi / BCB Delphi 에서 메모리 릭 체크하는 방법 Lyn 2008-08-15 18354
2 Delphi / BCB 폼을 띄울때, 작업표시줄에 폼이 표시되게 하는 방법. Lyn 2008-08-15 14159

SITE LOGIN :)