일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- dhcp
- 커뮤니티 클라우드
- 클라우드 서비스 소유자
- 자원 풀링
- 정수형 데이터타입
- IT 자원
- DHCP 설치
- 운영관리제어의 축소
- DHCP 설정
- 멀티테넌시
- 고정 IP주소를 가진 네트워크 어댑터를 검색할 수 없습니다.
- 온디맨드식
- 클라우드 보안 취약성
- VMWare View Connection Serve
- View Connection
- Community Cloud
- 클라우드 제공자
- 수직적 확장
- 온 프레미스
- 가상 프라이빗 클라우드
- Error 1720
- 도메인 사용자 또는 그룹을 확인할 수 없습니다.
- 클라우드 소비자
- 이 컴퓨터는 도메인의 구성원이 아닙니다.
- VMware
- 제한된 이식성
- 수평적 확장
- Virtual Private Cloud
- VMWare vSphere
- 클라우드 자원 관리자
- Today
- Total
한 걸음씩..
[MFC] MessageMap 매크로 함수 풀이 본문
MessageMap 매크로 함수
#define DECLARE_MESSAGE_MAP()
private:
static const AFX_MSGMAP_ENTRY _messageEntries[]; // 메시지 배열 변수 생성
protected:
static AFX_DATA const AFX_MSGMAP messageMap; // 메시지 맵 생성
static const AFX_MSGMAP* PASCAL _GetBaseMessageMap();
virtual const AFX_MSGMAP* GetMessageMap() const;
const AFX_MSGMAP* PASCAL CMainWindow::_GetBaseMessageMap()
{
return &CFrameWnd::messageMap; //부모 메시지 맵 주소를 넘겨줌
}
const AFX_MSGMAP* CMainWindow::GetMessageMap() const
{
return &CMainWindow::messageMap; //자신의 메시지 맵 주소를 넘겨줌
}
AFX_COMDAT AFX_DATADEF const AFX_MSGMAP CMainWindow::messageMap =
{ &CMainWindow::_GetBaseMessageMap, &CMainWindow::_messageEntries[0] }; //메시지맵 첫번째 배열에 자신의 주소를 넣어줌
AFX_COMDAT const AFX_MSGMAP_ENTRY CMainWindows::_messageEntries[] =
{
{ WM_PAINT, 0, 0, 0, AfxSig_vv, (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnPaint }
{ WM_CREATE, 0, 0, 0, AfxSig_is, (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(LPCREATESTRUCT))&OnCreate }
{ 0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 }
};
MessageMap 사용 구조체
struct AFX_MSGMAP_ENTRY
{
UINT nMessage; // windows message
UINT nCode; // control code or WM_NOTIFY code
UINT nID; // control ID (or 0 for windows messages)
UINT nLastID; // used for entries specifying a range of control id's
UINT_PTR nSig; // signature type (action) or pointer to message #
AFX_PMSG pfn; // routine to call (or special value)
};
struct AFX_MSGMAP
{
const AFX_MSGMAP* (PASCAL* pfnGetBaseMap)(); // pfnGetBaseMap : 부모 클래스의 메시지 맵의 주소가 저장. 부모가 없으면 NULL
const AFX_MSGMAP_ENTRY* lpEntries; // lpEntries : 자기 클래스가 가지고 있는 MessageEntries의 0번째 주소
};
메시지 발생( WM_RBUTTONDOWN) -> 자식 Class Message Map 확인 -> CMyClass::OnRButtonDown() 호출 -> 발견하지 못햇다면 부모 Class Message Map 확인 -> 발견되었다면 CParentClass::OnRButtonDown() 호출 -> 발견하지 못했다면 CCmdTarget Class까지 올라가면서 메시지 핸들러 검색
'프로그래밍' 카테고리의 다른 글
ConvertIconToHBitmap / ConvertIconToCBitmap (0) | 2014.03.27 |
---|---|
[MFC] DECLARE_DYNCREATE IMPLEMENT_DYNCREATE (0) | 2013.10.03 |
[MFC] 윈도우 핸들 정리 (0) | 2013.10.01 |
[Windows] 현재 로그인한 유저 이름 알아오기 (0) | 2013.09.06 |
[Device Driver] Device Object 자료구조 (0) | 2013.09.05 |