⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wbctrl.cpp

📁 CAM-TOOL 是高效率高质量的模具制造的最好CAM解决方案。在当今的 Windows 操作环境里
💻 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 + -