?? wbctrl.cpp
字號:
// WBCtrl.cpp : implementation file
//
#include "stdafx.h"
#include "CamTool.h"
#include "CtrlSheet.h"
#include "WBCtrl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern BOOL ApplyEn;
/////////////////////////////////////////////////////////////////////////////
// CWBCtrl property page
IMPLEMENT_DYNCREATE(CWBCtrl, CPropertyPage)
CWBCtrl::CWBCtrl() : CPropertyPage(CWBCtrl::IDD)
{
//{{AFX_DATA_INIT(CWBCtrl)
m_wb = 0;
m_RRatio = 913;
m_GRatio = 985;
m_BRatio = 807;
//}}AFX_DATA_INIT
}
CWBCtrl::~CWBCtrl()
{
}
void CWBCtrl::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CWBCtrl)
DDX_Radio(pDX, IDC_WB_AUTO, m_wb);
DDX_Slider(pDX, IDC_WB_R_GAIN, m_RRatio);
DDX_Slider(pDX, IDC_WB_G_GAIN, m_GRatio);
DDX_Slider(pDX, IDC_WB_B_GAIN, m_BRatio);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CWBCtrl, CPropertyPage)
//{{AFX_MSG_MAP(CWBCtrl)
// NOTE: the ClassWizard will add message map macros here
ON_CONTROL_RANGE(BN_CLICKED, IDC_WB_AUTO, IDC_WB_MANUAL, OnWhiteBalanceChanged)
ON_WM_HSCROLL()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CWBCtrl message handlers
void CWBCtrl::OnWhiteBalanceChanged()
{
CPropertySheet* pSheet = STATIC_DOWNCAST(CPropertySheet, GetParent());
CCtrlSheet* pModalSheet = DYNAMIC_DOWNCAST(CCtrlSheet, pSheet);
if (pModalSheet != NULL)
{
UpdateData();
RefreshUI();
}
if(m_wb == 6) ReadDefaultFromIniFile();
CapImgInfo[CAP_MANUAL_WB_MODE] = m_wb;
CapImgInfo[CAP_MANUAL_R_GAIN] = CapImgInfo[CAP_DAYLIGHT_R_GAIN] * m_RRatio / 1000;
CapImgInfo[CAP_MANUAL_G_GAIN] = CapImgInfo[CAP_DAYLIGHT_G_GAIN] * m_GRatio / 1000;
CapImgInfo[CAP_MANUAL_B_GAIN] = CapImgInfo[CAP_DAYLIGHT_B_GAIN] * m_BRatio / 1000;
ApplyEn = 1;
AfxGetMainWnd()->GetDlgItem(IDC_APPLY)->EnableWindow(TRUE);
}
void CWBCtrl::RefreshUI()
{
char str[20];
CStatic *desc_R,*desc_G,*desc_B, *R_value, *G_value, *B_value;
CStatic *RRatio_value, *GRatio_value, *BRatio_value;
desc_R = (CStatic*) GetDlgItem(IDS_RGAIN);
desc_G = (CStatic*) GetDlgItem(IDS_GGAIN);
desc_B = (CStatic*) GetDlgItem(IDS_BGAIN);
R_value = (CStatic*) GetDlgItem(IDS_R);
G_value = (CStatic*) GetDlgItem(IDS_G);
B_value = (CStatic*) GetDlgItem(IDS_B);
RRatio_value = (CStatic*) GetDlgItem(IDS_RRATIO);
GRatio_value = (CStatic*) GetDlgItem(IDS_GRATIO);
BRatio_value = (CStatic*) GetDlgItem(IDS_BRATIO);
if(m_wb >= 6) {
if(m_wb==6) {
ReadDefaultFromIniFile();
m_R->EnableWindow(FALSE);
m_G->EnableWindow(FALSE);
m_B->EnableWindow(FALSE);
}
else {
m_R->EnableWindow(TRUE);
m_G->EnableWindow(TRUE);
m_B->EnableWindow(TRUE);
}
m_R->ShowWindow(SW_SHOW);
m_G->ShowWindow(SW_SHOW);
m_B->ShowWindow(SW_SHOW);
desc_R->ShowWindow(SW_SHOW);
desc_G->ShowWindow(SW_SHOW);
desc_B->ShowWindow(SW_SHOW);
R_value->ShowWindow(SW_SHOW);
G_value->ShowWindow(SW_SHOW);
B_value->ShowWindow(SW_SHOW);
RRatio_value->ShowWindow(SW_SHOW);
GRatio_value->ShowWindow(SW_SHOW);
BRatio_value->ShowWindow(SW_SHOW);
sprintf(str,"%d",m_RRatio);
RRatio_value->SetWindowText(str);
sprintf(str,"%d",m_GRatio);
GRatio_value->SetWindowText(str);
sprintf(str,"%d",m_BRatio);
BRatio_value->SetWindowText(str);
sprintf(str,"%d",CapImgInfo[CAP_DAYLIGHT_R_GAIN] * m_RRatio / 1000);
R_value->SetWindowText(str);
sprintf(str,"%d",CapImgInfo[CAP_DAYLIGHT_G_GAIN] * m_GRatio / 1000);
G_value->SetWindowText(str);
sprintf(str,"%d",CapImgInfo[CAP_DAYLIGHT_B_GAIN] * m_BRatio / 1000);
B_value->SetWindowText(str);
}
else {
m_R->ShowWindow(SW_HIDE);
m_G->ShowWindow(SW_HIDE);
m_B->ShowWindow(SW_HIDE);
desc_R->ShowWindow(SW_HIDE);
desc_G->ShowWindow(SW_HIDE);
desc_B->ShowWindow(SW_HIDE);
R_value->ShowWindow(SW_HIDE);
G_value->ShowWindow(SW_HIDE);
B_value->ShowWindow(SW_HIDE);
RRatio_value->ShowWindow(SW_HIDE);
GRatio_value->ShowWindow(SW_HIDE);
BRatio_value->ShowWindow(SW_HIDE);
}
}
BOOL CWBCtrl::OnInitDialog()
{
CPropertyPage::OnInitDialog();
// TODO: Add extra initialization here
m_R = (CSliderCtrl*)GetDlgItem(IDC_WB_R_GAIN);
m_G = (CSliderCtrl*)GetDlgItem(IDC_WB_G_GAIN);
m_B = (CSliderCtrl*)GetDlgItem(IDC_WB_B_GAIN);
m_R->SetRange(1,2000);
m_G->SetRange(1,2000);
m_B->SetRange(1,2000);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CWBCtrl::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CPropertySheet* pSheet = STATIC_DOWNCAST(CPropertySheet, GetParent());
CCtrlSheet* pModalSheet = DYNAMIC_DOWNCAST(CCtrlSheet, pSheet);
if (pModalSheet != NULL)
{
UpdateData();
RefreshUI();
}
CapImgInfo[CAP_MANUAL_WB_MODE] = m_wb;
CapImgInfo[CAP_MANUAL_R_GAIN] = CapImgInfo[CAP_DAYLIGHT_R_GAIN] * m_RRatio / 1000;
CapImgInfo[CAP_MANUAL_G_GAIN] = CapImgInfo[CAP_DAYLIGHT_G_GAIN] * m_GRatio / 1000;
CapImgInfo[CAP_MANUAL_B_GAIN] = CapImgInfo[CAP_DAYLIGHT_B_GAIN] * m_BRatio / 1000;
ApplyEn = 1;
AfxGetMainWnd()->GetDlgItem(IDC_APPLY)->EnableWindow(TRUE);
CPropertyPage::OnHScroll(nSBCode, nPos, pScrollBar);
}
BOOL CWBCtrl::ReadDefaultFromIniFile()
{
int cFlength;
char drive[_MAX_DRIVE], szOurPath[_MAX_PATH];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];
char szProfileName[_MAX_PATH];
CFile cf;
HINSTANCE hInstance;
hInstance=AfxGetInstanceHandle();
if( GetModuleFileName( hInstance, szOurPath, _MAX_PATH ) == 0 )
{
// SetWindowText( "GetModuelfile error!" );
return 1;
}
_splitpath(szOurPath, drive, dir, fname, ext);
_makepath(szProfileName, drive, dir, fname, "ini" ); // make profile filename
if( cf.Open( "KD3310Z.ini", CFile::modeRead ) ) {
cFlength = cf.GetLength();
cf.Close();
_makepath(szProfileName, drive, dir, "KD3310Z", "ini" ); // make profile filename
}else {
// SetWindowText( "file 'KD3310Z.ini' not find" );
return 1;
}
m_RRatio = GetPrivateProfileInt("Init Value","RRatio" , 913, szProfileName);
m_GRatio = GetPrivateProfileInt("Init Value","GRatio" , 985, szProfileName);
m_BRatio = GetPrivateProfileInt("Init Value","BRatio" , 807, szProfileName);
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -