?? dispconbri.cpp
字號:
// DispConBri.cpp : implementation file
//
#include "stdafx.h"
#include "bxt.h"
#include "DispConBri.h"
#include "bxtdlg.h"
#include "imageprocess.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// DispConBri dialog
DispConBri::DispConBri(CWnd* pParent /*=NULL*/)
: CDialog(DispConBri::IDD, pParent)
{
//{{AFX_DATA_INIT(DispConBri)
m_lock = FALSE;
//}}AFX_DATA_INIT
}
void
DispConBri::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(DispConBri)
DDX_Control(pDX, IDC_SLIDER4, m_slider4);
DDX_Control(pDX, IDC_SLIDER3, m_slider3);
DDX_Control(pDX, IDC_SLIDER2, m_slider2);
DDX_Control(pDX, IDC_SLIDER1, m_slider1);
DDX_Control(pDX, IDC_DISPFILT, m_dspfilt);
DDX_Check(pDX, IDC_CHECK_LOCK, m_lock);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(DispConBri, CDialog)
//{{AFX_MSG_MAP(DispConBri)
ON_WM_PAINT()
ON_WM_HSCROLL()
ON_BN_CLICKED(IDC_CHECK_LOCK2, OnCheckLock2)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
//}}AFX_MSG_MAP
ON_MESSAGE(WX_DSPCHGCURPIC,CurChg)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// DispConBri message handlers
BOOL DispConBri::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
//p1.SubclassDlgItem(IDC_BUTTON1,this);
//p1.SetIcon(IDI_CONBRI);
//p1.SetWindowText("亮度對比度");
m_slider1.SetRange(0,255,TRUE);
m_slider2.SetRange(0,255,TRUE);
m_slider3.SetRange(0,255,TRUE);
m_slider4.SetRange(0,255,TRUE);
m_v2 = m_v1 = 127;
m_v3 = 0;
m_v4 = 255;
m_slider1.SetPos(m_v1);
m_slider2.SetPos(m_v2);
m_slider3.SetPos(m_v3);
m_slider4.SetPos(m_v4);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void DispConBri::CurChg(WPARAM wParm,LPARAM lParm)
{
CDC *dc=m_dspfilt.GetDC();
CRect rr;
m_dspfilt.GetWindowRect(&rr);
if(wParm>0)
{
((CBxtDlg*)AfxGetMainWnd())->imgpcs->mpp[wParm]->DrawFilt(dc,0,0,rr.Width(),rr.Height());
}
else
{
dc->FillSolidRect(&rr,RGB(255,255,255));
}
ReleaseDC(dc);
curpic = wParm;
m_v2 = m_v1 = 127;
m_v3 = 0;
m_v4 = 255;
m_slider1.SetPos(m_v1);
m_slider2.SetPos(m_v2);
m_slider3.SetPos(m_v3);
m_slider4.SetPos(m_v4);
}
void DispConBri::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CDC *fdc=m_dspfilt.GetDC();
CRect rr;
m_dspfilt.GetWindowRect(&rr);
if(curpic>0)
{
((CBxtDlg*)AfxGetMainWnd())->imgpcs->mpp[curpic]->DrawFilt(fdc,0,0,rr.Width(),rr.Height());
}
else
{
fdc->FillSolidRect(&rr,RGB(255,255,255));
}
ReleaseDC(fdc);
}
void DispConBri::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
long sww= ( (CButton*)GetDlgItem(IDC_CHECK_LOCK2) )->GetCheck();
long arg = (long) ((CSliderCtrl *) pScrollBar);
// 更新 m_lock 標志
UpdateData(true);
// 亮度調整
if (arg == long(&m_slider1))
{
m_v1 = m_slider1.GetPos();
((CBxtDlg *)AfxGetMainWnd())->imgpcs->SendMessage(WX_DSPCONBRI,MAKEWPARAM(m_v1,m_v2),0);
}
// 對比度調整
else if (arg == long(&m_slider2))
{
m_v2 = m_slider2.GetPos();
((CBxtDlg *)AfxGetMainWnd())->imgpcs->SendMessage(WX_DSPCONBRI,MAKEWPARAM(m_v1,m_v2),0);
}
// 窗寬調整
else if (arg == long(&m_slider3))
{
int v3 = m_slider3.GetPos();
if (m_lock)
{
m_v4 = v3 + (m_v4 - m_v3);
if (m_v4 > 255) m_v4 = 255;
m_slider4.SetPos(m_v4);
}
else
{
if (m_slider4.GetPos() < v3)
{
m_slider4.SetPos(v3);
m_v4 = v3;
}
}
m_v3 = v3;
((CBxtDlg *)AfxGetMainWnd())->imgpcs->SendMessage(WX_BSPWINPOS,MAKEWPARAM(m_v3,m_v4),sww);
}
// 窗位調整
else if (arg == long(&m_slider4))
{
int v4 = m_slider4.GetPos();
if (m_lock)
{
m_v3 = v4 - (m_v4 - m_v3);
if (m_v3 < 0) m_v3 = 0;
m_slider3.SetPos(m_v3);
}
else
{
if (m_slider3.GetPos() > v4)
{
m_slider3.SetPos(v4);
m_v3 = v4;
}
}
m_v4 = v4;
((CBxtDlg *)AfxGetMainWnd())->imgpcs->SendMessage(WX_BSPWINPOS,MAKEWPARAM(m_v3,m_v4),sww);
}
// 其他
else
{
}
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
void DispConBri::OnCheckLock2()
{
long mm= ( (CButton*)GetDlgItem(IDC_CHECK_LOCK2) )->GetCheck();
((CBxtDlg *)AfxGetMainWnd())->imgpcs->SendMessage(WX_BSPWINPOS,MAKEWPARAM(m_v3,m_v4),mm);
}
void DispConBri::OnButton1()
{
((CBxtDlg*)AfxGetMainWnd())->imgpcs->SendMessage(WX_DSPPRC,6,0);//restore org
m_v2 = m_v1 = 127;
m_v3 = 0;
m_v4 = 255;
m_slider1.SetPos(m_v1);
m_slider2.SetPos(m_v2);
m_slider3.SetPos(m_v3);
m_slider4.SetPos(m_v4);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -