📄 backlightdlg.cpp
字号:
// BackLightDlg.cpp : implementation file
//
#include "stdafx.h"
#include "BackLight.h"
#include "BackLightDlg.h"
#include "s2410.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
unsigned char Brightness;
volatile IOPreg *v_pIOCreg = (IOPreg *)IOP_BASE;
volatile PWMreg *v_pPWMreg = (PWMreg *)PWM_BASE;
volatile INTreg *v_pINTreg = (INTreg *)INT_BASE;
// v_pIICreg->rIICCON = 0x6f;
/////////////////////////////////////////////////////////////////////////////
// CBackLightDlg dialog
CBackLightDlg::CBackLightDlg(CWnd* pParent /*=NULL*/)
: CDialog(CBackLightDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CBackLightDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CBackLightDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBackLightDlg)
DDX_Control(pDX, IDC_SLIDER1, m_slider);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBackLightDlg, CDialog)
//{{AFX_MSG_MAP(CBackLightDlg)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER1, OnCustomdrawSlider1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBackLightDlg message handlers
BOOL CBackLightDlg::OnInitDialog()
{
HKEY hk;
DWORD dwStatus;
DWORD dwValue, dwSize ,type;
HANDLE hStr;
DWORD dwBytesRead;
unsigned char wch[1];
unsigned int TmpTCON;
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CenterWindow(GetDesktopWindow()); // center to the hpc screen
m_slider.SetRange(0,100,true); //范围
m_slider.SetTicFreq(10); //刻度 没起作用
dwStatus = RegOpenKeyEx(HKEY_CURRENT_USER,_T("ControlPanel\\Backlight"), 0, 0, &hk);
dwStatus = RegQueryValueEx(hk,_T("Brightness"),NULL,&type,(BYTE*)&dwValue,&dwSize );
RegCloseKey( hk );
//读取注册表中的初始值,确定slider位置
/* hStr = CreateFile( TEXT("BAK1:"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0);
if ( hStr == INVALID_HANDLE_VALUE )
{
CloseHandle( hStr );
// MessageBox(_T("CreateFile INVALID_HANDLE_VALUE "),_T(""),MB_OK);
}
ReadFile( hStr,wch,sizeof(wch), &dwBytesRead, NULL );
Brightness = wch[0]/2;
v_pPWMreg->rTCMPB0 = Brightness ;
CloseHandle( hStr );
*/
Brightness = dwValue/2;
v_pPWMreg->rTCMPB0 = Brightness ;
m_slider.SetPos(Brightness*2);
// TODO: Add extra initialization here m_Slider.SetRange(-100,100);
/***********************2410**************************************/
//v_pINTreg->rINTMSK |= BIT_TIMER0;
//v_pINTreg->rSRCPND |= BIT_TIMER0; //Clear pending bit
//v_pINTreg->rINTPND |= BIT_TIMER0;//INT_TIMER0
//v_pIOCreg->rGPBCON &= ~3;
//v_pIOCreg->rGPBCON |= 2; //GPB0 AS TOUT0
// v_pPWMreg->rTCFG0 |= 24; // prescaler value = 24 + 1 和触摸屏保持一致
//v_pPWMreg->rTCFG0 &= ~0xff ;
//v_pPWMreg->rTCFG0 |= 0x0f ;//Prescaler 0 == 254
//Timer input clock Frequency = PCLK / {prescaler value+1} / {divider value}=PCLK/(254+1)/
//{prescaler value} = 0~255
//{divider value} = 2, 4, 8, 16
//v_pPWMreg->rTCFG1 = 0x01; //Select MUX input for PWM Timer0. 1/4
//v_pPWMreg->rTCNTB0 = 51 ;
//v_pPWMreg->rTCMPB0 = 25;
/*
TmpTCON = v_pPWMreg->rTCON;
TmpTCON &= ~0x0f;
TmpTCON |= 0x0a; //Interval mode(auto reload) ,manual update Update TCNTB0 & TCMPB0
v_pPWMreg->rTCON = TmpTCON;
TmpTCON = v_pPWMreg->rTCON;
TmpTCON &= ~0x0f;
TmpTCON |= 0x09; //Interval mode(auto reload) ,manual update Update TCNTB0 & TCMPB0 ,configure the inverter bit
v_pPWMreg->rTCON = TmpTCON;
*/
/***************************************************************/
return TRUE; // return TRUE unless you set the focus to a control
}
void CBackLightDlg::OnCustomdrawSlider1(NMHDR* pNMHDR, LRESULT* pResult)
{
HANDLE hStr;
DWORD dwWritten,dwBytesRead;
unsigned char wch[1];
unsigned char red[1];
HKEY hk;
DWORD dwStatus;
DWORD dwValue, dwSize ,type;
const BYTE* lpData;
int i ;
// TODO: Add your control notification handler code here
UpdateData(TRUE);
i=m_slider.GetPos();
UpdateData(FALSE);
dwStatus = RegOpenKeyEx(HKEY_CURRENT_USER,_T("ControlPanel\\Backlight"), 0, 0, &hk);
lpData = (BYTE* ) &i;
RegSetValueEx(hk,_T("Brightness"), 0,REG_DWORD,lpData, sizeof(REG_DWORD) );
//得到新值存入注册表
/* hStr = CreateFile( TEXT("BAK1:"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0);
if ( hStr == INVALID_HANDLE_VALUE )
{
CloseHandle( hStr );
// MessageBox(_T("CreateFile INVALID_HANDLE_VALUE "),_T(""),MB_OK);
}
wch[0] = i; //写常数命令
WriteFile( hStr, wch, 1, &dwWritten, NULL );
ReadFile( hStr,red,sizeof(red), &dwBytesRead, NULL );
Brightness = red[0]/2;
v_pPWMreg->rTCMPB0 = Brightness ;
CloseHandle( hStr );
*/
dwStatus = RegQueryValueEx(hk,_T("Brightness"),NULL,&type,(BYTE*)&dwValue,&dwSize );
v_pPWMreg->rTCMPB0 = dwValue/2 ;
//更新slider位置
RegCloseKey( hk );
SetDlgItemInt( IDC_STATIC1 ,dwValue); //i * 2 ); //数据显示 dwValue ); //
*pResult = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -