목차
#6_1. 모달 프로그램(소스변경부분,실행결과 출력)
#6_2. 모델리스 프로그램(소스변경부분,실행결과 출력)
#6_2. 모델리스 프로그램(소스변경부분,실행결과 출력)
본문내용
odeless)
ON_UPDATE_COMMAND_UI(ID_DIALOG_MODELESS, OnUpdateDialogModeless)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_USERMODELESS,OnUserModeless)
END_MESSAGE_MAP()
< CModelessDlg.cpp - OnInitDialog(),OnHScroll(UINT nSBCode,UINT nPos,ScrollBar* pScrollBar),Create()
CModelessDlg(CFrameWnd* pFrmWnd),SetScrollPosition(UINT uSBCode,UINT uPos,UINT uCounter)
OnOK(),OnCancel() >
BOOL CModelessDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_sliderRed.SetRange(0, 255);
m_sliderGreen.SetRange(0, 255);
m_sliderBlue.SetRange(0, 255);
m_sliderRed.SetPos(0);
m_sliderGreen.SetPos(0);
m_sliderBlue.SetPos(0);
SetDlgItemInt(IDC_RED, 0);
SetDlgItemInt(IDC_GREEN, 0);
SetDlgItemInt(IDC_BLUE, 0);
m_scroll.GetDlgItem(IDC_SCROLLBAR);
m_scroll.SetScrollRange(0, 100);
m_scroll.SetScrollPos(0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CModelessDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
UINT nCounter;
switch(pScrollBar->GetDlgCtrlID())
{
case IDC_SLIDER_RED:
SetDlgItemInt(IDC_RED, m_sliderRed.GetPos());
break;
case IDC_SLIDER_GREEN:
SetDlgItemInt(IDC_GREEN, m_sliderGreen.GetPos());
break;
case IDC_SLIDER_BLUE:
SetDlgItemInt(IDC_BLUE, m_sliderBlue.GetPos());
break;
case IDC_SCROLLBAR:
nCounter = m_scroll.GetScrollPos();
SetScrollPosition(nSBCode, nPos, nCounter);
break;
}
COLORREF color = RGB(GetDlgItemInt(IDC_RED),
GetDlgItemInt(IDC_GREEN),
GetDlgItemInt(IDC_BLUE));
CRect rect;
CStatic* pPicture = (CStatic*)GetDlgItem(IDC_SHOW);
pPicture->GetClientRect(rect);
CClientDC dc(pPicture);
CBrush brush(color);
CBrush* pOldBrush = dc.SelectObject(&brush);
dc.FillRect(rect, &brush);
dc.SelectObject(pOldBrush);
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
BOOL CModelessDlg::Create()
{
return CDialog::Create(CModelessDlg::IDD);
}
void CModelessDlg::SetScrollPosition(UINT uSBCode, UINT uPos, UINT uCounter)
{
switch(uSBCode)
{
case SB_LINELEFT:
if(uCounter > 0)
uCounter -= 1;
else
uCounter = 0;
m_scroll.SetScrollPos(uCounter);
break;
case SB_PAGELEFT:
if(uCounter >= 0)
uCounter -=10;
else
uCounter = 0;
m_scroll.SetScrollPos(uCounter);
break;
case SB_LINERIGHT:
if(uCounter < 100)
uCounter += 1;
else
uCounter = 100;
m_scroll.SetScrollPos(uCounter);
break;
case SB_PAGERIGHT:
if(uCounter <= 100)
uCounter +=10;
else
uCounter = 100;
m_scroll.SetScrollPos(uCounter);
break;
case SB_THUMBTRACK:
uCounter = uPos;
m_scroll.SetScrollPos(uCounter);
break;
}
m_strPercent.Format("%d%%", uCounter);
UpdateData(FALSE);
}
void CModelessDlg::OnOK()
{
// TODO: Add extra validation here
UpdateData(TRUE);
DestroyWindow();
if(m_pFrmWnd != NULL)
m_pFrmWnd->SendMessage(WM_USERMODELESS, IDOK);
// CDialog::OnOK();
}
void CModelessDlg::OnCancel()
{
// TODO: Add extra cleanup here
DestroyWindow();
if(m_pFrmWnd != NULL)
m_pFrmWnd->SendMessage(WM_USERMODELESS, IDCANCEL);
// CDialog::OnCancel();
}
□ 실 행 결 과
ON_UPDATE_COMMAND_UI(ID_DIALOG_MODELESS, OnUpdateDialogModeless)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_USERMODELESS,OnUserModeless)
END_MESSAGE_MAP()
< CModelessDlg.cpp - OnInitDialog(),OnHScroll(UINT nSBCode,UINT nPos,ScrollBar* pScrollBar),Create()
CModelessDlg(CFrameWnd* pFrmWnd),SetScrollPosition(UINT uSBCode,UINT uPos,UINT uCounter)
OnOK(),OnCancel() >
BOOL CModelessDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_sliderRed.SetRange(0, 255);
m_sliderGreen.SetRange(0, 255);
m_sliderBlue.SetRange(0, 255);
m_sliderRed.SetPos(0);
m_sliderGreen.SetPos(0);
m_sliderBlue.SetPos(0);
SetDlgItemInt(IDC_RED, 0);
SetDlgItemInt(IDC_GREEN, 0);
SetDlgItemInt(IDC_BLUE, 0);
m_scroll.GetDlgItem(IDC_SCROLLBAR);
m_scroll.SetScrollRange(0, 100);
m_scroll.SetScrollPos(0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CModelessDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
UINT nCounter;
switch(pScrollBar->GetDlgCtrlID())
{
case IDC_SLIDER_RED:
SetDlgItemInt(IDC_RED, m_sliderRed.GetPos());
break;
case IDC_SLIDER_GREEN:
SetDlgItemInt(IDC_GREEN, m_sliderGreen.GetPos());
break;
case IDC_SLIDER_BLUE:
SetDlgItemInt(IDC_BLUE, m_sliderBlue.GetPos());
break;
case IDC_SCROLLBAR:
nCounter = m_scroll.GetScrollPos();
SetScrollPosition(nSBCode, nPos, nCounter);
break;
}
COLORREF color = RGB(GetDlgItemInt(IDC_RED),
GetDlgItemInt(IDC_GREEN),
GetDlgItemInt(IDC_BLUE));
CRect rect;
CStatic* pPicture = (CStatic*)GetDlgItem(IDC_SHOW);
pPicture->GetClientRect(rect);
CClientDC dc(pPicture);
CBrush brush(color);
CBrush* pOldBrush = dc.SelectObject(&brush);
dc.FillRect(rect, &brush);
dc.SelectObject(pOldBrush);
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
BOOL CModelessDlg::Create()
{
return CDialog::Create(CModelessDlg::IDD);
}
void CModelessDlg::SetScrollPosition(UINT uSBCode, UINT uPos, UINT uCounter)
{
switch(uSBCode)
{
case SB_LINELEFT:
if(uCounter > 0)
uCounter -= 1;
else
uCounter = 0;
m_scroll.SetScrollPos(uCounter);
break;
case SB_PAGELEFT:
if(uCounter >= 0)
uCounter -=10;
else
uCounter = 0;
m_scroll.SetScrollPos(uCounter);
break;
case SB_LINERIGHT:
if(uCounter < 100)
uCounter += 1;
else
uCounter = 100;
m_scroll.SetScrollPos(uCounter);
break;
case SB_PAGERIGHT:
if(uCounter <= 100)
uCounter +=10;
else
uCounter = 100;
m_scroll.SetScrollPos(uCounter);
break;
case SB_THUMBTRACK:
uCounter = uPos;
m_scroll.SetScrollPos(uCounter);
break;
}
m_strPercent.Format("%d%%", uCounter);
UpdateData(FALSE);
}
void CModelessDlg::OnOK()
{
// TODO: Add extra validation here
UpdateData(TRUE);
DestroyWindow();
if(m_pFrmWnd != NULL)
m_pFrmWnd->SendMessage(WM_USERMODELESS, IDOK);
// CDialog::OnOK();
}
void CModelessDlg::OnCancel()
{
// TODO: Add extra cleanup here
DestroyWindow();
if(m_pFrmWnd != NULL)
m_pFrmWnd->SendMessage(WM_USERMODELESS, IDCANCEL);
// CDialog::OnCancel();
}
□ 실 행 결 과