|
// maindlg.h
class CMainDlg : public CDialogImpl<CMainDlg>, public COwnerDraw<CMainDlg>
{
public:
enum { IDD = IDD_MAINDLG };
// ¸Þ¼¼Áö ¸Ê
BEGIN_MSG_MAP_EX(CMainDlg)
MSG_WM_INITDIALOG(OnInitDialog)
COMMAND_ID_HANDLER_EX(IDOK, OnOK)
COMMAND_ID_HANDLER_EX(IDCANCEL, OnCancel)
CHAIN_MSG_MAP(COwnerDraw<CMainDlg>) // COwnerDrawŬ·¡½º¿¡
üÀÎ
END_MSG_MAP()
void DrawItem(LPDRAWITEMSTRUCT
lpdis){
if(lpdis->CtlType == ODT_BUTTON){
switch(lpdis->CtlID){
case IDC_BUTTON_BLUE:
DrawButton(lpdis,
RGB(255, 255, 255), RGB(0, 0, 255));
break;
case IDC_BUTTON_RED:
DrawButton(lpdis,
RGB(255, 255, 255), RGB(255, 0, 0));
break;
default:
break;
}
}
}
void DrawButton(LPDRAWITEMSTRUCT
lpdis, COLORREF clrText,
COLORREF clrBg){
CDCHandle dc = lpdis->hDC;
dc.SaveDC();
// ĸ¼Ç Ç¥½Ã ¿µ¿ªÀ» ÃʱâÈ
CRect rcCaptionArea = lpdis->rcItem;
rcCaptionArea.DeflateRect(2, 2);
// ¹è°æ»ö ¹¦È
CBrush brushBg;
brushBg.CreateSolidBrush(clrBg);
dc.FillRect(&lpdis->rcItem, brushBg);
// 3D¿¬ ¹¦È
if(lpdis->itemState & ODS_SELECTED){
rcCaptionArea.OffsetRect(1, 1);
dc.DrawEdge(&lpdis->rcItem, EDGE_SUNKEN, BF_RECT);
}else{
dc.DrawEdge(&lpdis->rcItem, EDGE_RAISED, BF_RECT);
}
// Æ÷Ä¿½º ±¸Çü ¹¦È
if(lpdis->itemState & ODS_FOCUS){
CRect rcFocus = lpdis->rcItem;
rcFocus.DeflateRect(4, 4);
dc.DrawFocusRect(rcFocus);
}
// ĸ¼Ç ¹¦È
dc.SetTextColor(clrText);
dc.SetBkMode(TRANSPARENT);
dc.DrawText(_T("¿À³ªµå·Îº¸Åº"), -1,
rcCaptionArea, DT_SINGLELINE | DT_CENTER |
DT_VCENTER);
dc.RestoreDC(-1);
}
LRESULT OnInitDialog(HWND hWnd,
LPARAM lParam){
// ½ºÅ©¸°ÀÇ Áß¾Ó¿¡ ¹èÄ¡
CenterWindow();
// Å« ¾ÆÀÌÄÜ ¼³Á¤
HICON hIcon = AtlLoadIconImage(IDR_MAINFRAME,
LR_DEFAULTCOLOR,
::GetSystemMetrics(SM_CXICON), ::GetSystemMetrics(SM_CYICON));
SetIcon(hIcon, TRUE);
// ÀÛÀº ¾ÆÀÌÄÜ ¼³Á¤
HICON hIconSmall = AtlLoadIconImage(IDR_MAINFRAME,
LR_DEFAULTCOLOR,
::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON));
SetIcon(hIconSmall, FALSE);
return TRUE;
}
void OnOK(UINT uNotifyCode, int nID, HWND hWndCtl){
EndDialog(nID);
}
void OnCancel(UINT uNotifyCode, int nID, HWND hWndCtl){
EndDialog(nID);
}
};
|