|
// maindlg.h
class CMainDlg : public CDialogImpl<CMainDlg>
{
public:
enum { IDD = IDD_MAINDLG };
CScrollBar
m_scroll_r; // [R]½ºÅ©·Ñ ¹Ù
CScrollBar
m_scroll_g; // [G]½ºÅ©·Ñ ¹Ù
CScrollBar
m_scroll_b; // [B]½ºÅ©·Ñ ¹Ù
CRect
m_rect;
// »ö Ç¥½Ã¿ë ±¸Çü
// ¸Þ¼¼Áö ¸Ê
BEGIN_MSG_MAP_EX(CMainDlg)
MSG_WM_PAINT(OnPaint)
MSG_WM_HSCROLL(OnHScroll)
MSG_WM_INITDIALOG(OnInitDialog)
COMMAND_ID_HANDLER_EX(IDOK, OnOK)
COMMAND_ID_HANDLER_EX(IDCANCEL, OnCancel)
END_MSG_MAP()
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);
// ÄÁÆ®·Ñ ¼³Á¤
m_scroll_r = GetDlgItem(IDC_SCROLLBAR_R);
m_scroll_g = GetDlgItem(IDC_SCROLLBAR_G);
m_scroll_b = GetDlgItem(IDC_SCROLLBAR_B);
// ½ºÅ©·Ñ ¹ÙÀÇ ¹üÀ§
¼³Á¤
m_scroll_r.SetScrollRange(0, 255);
m_scroll_g.SetScrollRange(0, 255);
m_scroll_b.SetScrollRange(0, 255);
// ½ºÅ©·Ñ ¹ÙÀÇ Ãʱâ
À§Ä¡ ¼³Á¤
m_scroll_r.SetScrollPos(0);
m_scroll_g.SetScrollPos(0);
m_scroll_b.SetScrollPos(0);
// »ö Ç¥½Ã¿ë ±¸ÇüÀ» Ãëµæ
CStatic view = GetDlgItem(IDC_STATIC_VIEW);
view.GetWindowRect(m_rect);
ScreenToClient(m_rect);
return TRUE;
}
void OnHScroll(int nSBCode, short nPos, HWND hWnd){
// Á¶ÀÛµÈ ½ºÅ©·Ñ ¹ÙÀÇ
ÇöÀç À§Ä¡¸¦ Ãëµæ
CScrollBar scroll = hWnd;
int color = scroll.GetScrollPos();
switch(nSBCode){
case SB_PAGELEFT:
color -= 15;
case SB_LINELEFT:
color = max(0, color - 1);
break;
case SB_PAGERIGHT:
color += 15;
case SB_LINERIGHT:
color = min(255, color + 1);
break;
case SB_LEFT:
color = 0;
break;
case SB_RIGHT:
color = 255;
break;
case SB_THUMBPOSITION:
case SB_THUMBTRACK:
color = nPos;
break;
}
// »õ·Î¿î À§Ä¡·Î ¼³Á¤
scroll.SetScrollPos(color);
// »ö Ç¥½Ã¿ë ±¸ÇüÀ» °»½Å
InvalidateRect(m_rect);
}
void OnPaint(HDC /*hDC*/){
CPaintDC dc(m_hWnd);
CBrush brush;
brush.CreateSolidBrush(RGB(m_scroll_r.GetScrollPos(),
m_scroll_g.GetScrollPos(), m_scroll_b.GetScrollPos()));
dc.FillRect(m_rect, brush);
}
void OnOK(UINT uNotifyCode, int nID, HWND hWndCtl){
EndDialog(nID);
}
void OnCancel(UINT uNotifyCode, int nID, HWND hWndCtl){
EndDialog(nID);
}
};
|