CodeSarang.Com
Home | All categories Join | Login | 검색   

 

CTransparentLabel - WTL 용 투명 라벨 처리

등록자 : cpueblo (유광희), 2009-11-25
글수정 | 글삭제


CTransparentLabel - WTL 용 투명 라벨 처리

CStatic 에 투명을 입혀줍니다! 아무것도 없는 곳에 클릭 이벤트를 지정하기 위해 만들었습니다

CTransparentLabel.h

#ifndef __CTRANSPARENT_LABEL_H__ #define __CTRANSPARENT_LABEL_H__ #include "StdAfx.h" // // WTL 투명 라벨 클래스 // by cpueblo (2009.11.25) // // CStatic 을 기반으로 Notify 알림, SetOnClick 으로 이벤트 설정이 가능하며, 투명 Paint 로 처리된다 // class CTransparentLabel : public CWindowImpl<CTransparentLabel, CStatic> { public: typedef void (*ONEVENT)(CTransparentLabel *Sender); BEGIN_MSG_MAP(CLabel) MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown) MESSAGE_HANDLER(WM_PAINT, OnPaint) END_MSG_MAP() CTransparentLabel() { FOnClick = NULL; } void Init() { ModifyStyle(0, SS_NOTIFY); SetWindowText(""); } BOOL SubclassWindow(HWND hWnd) { BOOL bRet = CWindowImpl<CTransparentLabel, CStatic>::SubclassWindow(hWnd); if (bRet) Init(); return bRet; } void SetOnClick(ONEVENT e) { FOnClick = e; } LRESULT OnPaint(UINT, WPARAM wParam, LPARAM, BOOL& bHandled) { CPaintDC dc(m_hWnd); dc.SetBkMode(TRANSPARENT); return 0; } LRESULT OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { if (FOnClick) FOnClick(this); return 0; } ONEVENT FOnClick; }; #endif

사용 예시

CTransparentLabel lbGraphicOption; CTransparentLabel lbSoundOption; ... void CConfigDialog::OnGraphicOptionClick(CTransparentLabel *Sender) { This->m_Background.SetBitmap(This->hBGGraphicOption); } void CConfigDialog::OnSoundOptionClick(CTransparentLabel *Sender) { This->m_Background.SetBitmap(This->hBGSoundOption); } ... LRESULT CConfigDialog::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { This = this; ... // GraphicOption 탭 선택 라벨 설정 lbGraphicOption.SubclassWindow(GetDlgItem(IDC_lbGraphicOption)); lbGraphicOption.SetOnClick(OnGraphicOptionClick); // SoundOption 탭 선택 라벨 설정 lbSoundOption.SubclassWindow(GetDlgItem(IDC_lbSoundOption)); lbSoundOption.SetOnClick(OnSoundOptionClick); return 0; }



글수정 | 글삭제
http://codesarang.com. mail to cpueblocpueblo.com