📄 propimages.cpp
字号:
// PropImages.cpp : 僀儞僾儕儊儞僥乕僔儑儞 僼傽僀儖
//
#include "stdafx.h"
#include "wisBarSetup.h"
#include "PropImages.h"
#include "wisbardef.h"
#include "SetupDlg.h"
#include "commctrl.h"
//#include "..\\..\\TG\\include\\tgetfile.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPropImages 僾儘僷僥傿 儁乕僕
IMPLEMENT_DYNCREATE(CPropImages, CPropertyPage)
CPropImages::CPropImages()
: CPropertyPage(CPropImages::IDD),
m_pOpt(NULL)
{
//{{AFX_DATA_INIT(CPropImages)
//}}AFX_DATA_INIT
initialized = false;
}
CPropImages::~CPropImages()
{
}
void CPropImages::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPropImages)
DDX_Control(pDX, IDC_2002_Style, m_btn2002Style);
DDX_Control(pDX, IDC_CHK_SECURE, m_btnShift);
DDX_Control(pDX, IDC_APPLYNOW, m_btnApplyNow);
DDX_Control(pDX, IDC_LOGO, m_edtLogo);
DDX_Control(pDX, IDC_CHK_STDLOGO, m_btnStdLogo);
DDX_Control(pDX, IDC_CHK_LOGO, m_btnLogo);
DDX_Control(pDX, IDC_CHK_BG, m_btnBG);
DDX_Control(pDX, IDC_BR_LOGO, m_btnBrLogo);
DDX_Control(pDX, IDC_BR_BG, m_btnBrBG);
DDX_Control(pDX, IDC_CHK_GRADIENT, m_btnGradient);
DDX_Control(pDX, IDC_CHK_2002, m_btn2002Colors);
DDX_Control(pDX, IDC_STARTCR, m_btnStartCr);
DDX_Control(pDX, IDC_ENDCR, m_btnEndCr);
DDX_Control(pDX, IDC_BG, m_edtBG);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPropImages, CPropertyPage)
//{{AFX_MSG_MAP(CPropImages)
ON_BN_CLICKED(IDC_CHK_LOGO, OnChkLogo)
ON_BN_CLICKED(IDC_CHK_BG, OnChkBg)
ON_BN_CLICKED(IDC_BR_BG, OnBrBg)
ON_BN_CLICKED(IDC_BR_LOGO, OnBrLogo)
ON_BN_CLICKED(IDC_CHK_STDLOGO, OnChkStdlogo)
ON_BN_CLICKED(IDC_APPLYNOW, OnApplynow)
ON_BN_CLICKED(IDC_CHK_SECURE, OnChkSecure)
ON_BN_CLICKED(IDC_CHK_GRADIENT, OnChkGradient)
ON_BN_CLICKED(IDC_STARTCR, OnStartcr)
ON_BN_CLICKED(IDC_ENDCR, OnEndcr)
ON_BN_CLICKED(IDC_CHK_2002, OnChk2002)
ON_BN_CLICKED(IDC_2002_Style, On2002Style)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPropImages 儊僢僙乕僕 僴儞僪儔
/////////////////////////////////////////////////////////////////////////////
// 儃僞儞偺桳岠/柍岠惂屼乮儘僑乯
void CPropImages::OnChkLogo()
{
if ( m_btnLogo.GetCheck() == 1 ) {
m_pOpt->bLogo = TRUE ;
m_btnStdLogo.EnableWindow();
//OnChkBg();
}
else {
m_pOpt->bLogo = FALSE ;
m_btnStdLogo.EnableWindow( FALSE );
m_edtLogo.EnableWindow( FALSE );
m_btnBrLogo.EnableWindow( FALSE );
}
}
/////////////////////////////////////////////////////////////////////////////
// 儃僞儞偺桳岠/柍岠惂屼乮儘僑丗昗弨乯
void CPropImages::OnChkStdlogo()
{
if ( m_btnStdLogo.GetCheck() == 1 ) {
m_edtLogo.EnableWindow( FALSE );
m_btnBrLogo.EnableWindow( FALSE );
}
else {
m_edtLogo.EnableWindow();
m_btnBrLogo.EnableWindow();
}
}
/////////////////////////////////////////////////////////////////////////////
// 儃僞儞偺桳岠/柍岠惂屼乮攚宨夋憸乯
void CPropImages::OnChkBg()
{
if ( m_btnBG.GetCheck() == 1 ) {
m_edtBG.EnableWindow();
m_btnBrBG.EnableWindow();
m_btn2002Colors.EnableWindow( FALSE );
m_btn2002Style.EnableWindow( FALSE );
m_btnStartCr.EnableWindow( FALSE );
m_btnEndCr.EnableWindow( FALSE );
}
else if( m_pOpt->bGradient ) {
m_edtBG.EnableWindow( FALSE );
m_btnBrBG.EnableWindow( FALSE );
m_btn2002Colors.EnableWindow();
m_btn2002Style.EnableWindow();
m_btnStartCr.EnableWindow( m_btnGradient.GetCheck() && !m_btn2002Colors.GetCheck() );
m_btnEndCr.EnableWindow( m_btnGradient.GetCheck() && !m_btn2002Colors.GetCheck() );
}
else {
}
}
/////////////////////////////////////////////////////////////////////////////
// 揔梡
BOOL CPropImages::OnApply()
{
TCHAR szFile[MAX_PATH+1];
// 攚宨夋憸
if ( m_btnBG.GetCheck() == 1 ) {
m_edtBG.GetWindowText( szFile,sizeof(szFile) );
if ( GetFileAttributes(szFile) == 0xFFFFFFFF ) {
MessageBox( STR_NEXIST_BG,STR_ERR_TITLE,MB_OK|MB_ICONHAND );
return( 0 );
}
lstrcpy( m_pOpt->szBG,szFile );
m_pOpt->bGradient = FALSE;
}
else {
m_pOpt->szBG[0] = NULL ;
m_pOpt->bGradient = m_btnGradient.GetCheck();
}
m_pOpt->b2002Theme = m_btn2002Colors.GetCheck();
// 儘僑昞帵
if ( m_btnLogo.GetCheck() == 1 ) {
m_pOpt->bLogo = TRUE ;
if ( m_btnShift.GetCheck() == 0 ) {
m_pOpt->bShifted = FALSE ;
if ( m_btnStdLogo.GetCheck() == 1 ) {
m_pOpt->szLogo[0] = NULL ;
}
else {
m_edtLogo.GetWindowText( szFile,sizeof(szFile) );
if ( GetFileAttributes(szFile) == 0xFFFFFFFF ) {
MessageBox( STR_NEXIST_LOGO,STR_ERR_TITLE,MB_OK|MB_ICONHAND );
return( 0 );
}
lstrcpy( m_pOpt->szLogo,szFile );
}
}
else {
m_pOpt->bShifted = TRUE ;
m_pOpt->szLogo[0] = NULL ;
}
}
else {
m_pOpt->bLogo = FALSE ;
m_pOpt->szLogo[0] = NULL ;
}
return CPropertyPage::OnApply();
}
/////////////////////////////////////////////////////////////////////////////
// 弶婜張棟
BOOL CPropImages::OnInitDialog()
{
CPropertyPage::OnInitDialog();
resetItems();
initialized = true;
return( TRUE );
}
/////////////////////////////////////////////////////////////////////////////
// 僀儊乕僕僼傽僀儖偺嶲徠乮攚宨夋憸乯
void CPropImages::OnBrBg()
{
BrowseBitmap( m_edtBG,STR_BROWSE_BG );
}
/////////////////////////////////////////////////////////////////////////////
// 僀儊乕僕僼傽僀儖偺嶲徠乮儘僑乯
void CPropImages::OnBrLogo()
{
BrowseBitmap( m_edtLogo,STR_BROWSE_LOGO );
}
/////////////////////////////////////////////////////////////////////////////
// 僀儊乕僕僼傽僀儖偺嶲徠
void CPropImages::BrowseBitmap(CEdit &edt,LPCTSTR lpTitle)
{
UINT uIdx ;
TCHAR szFile[MAX_PATH];
TCHAR szExtName[8] = { _T("*.bmp") };
TCHAR szFileType[] = STR_BROWSE_BMP ;
OPENFILENAME of ;
// 尰嵼偺愝掕抣
edt.GetWindowText( szFile,sizeof(szFile) );
// 僼傽僀儖僞僀僾偺庢摼
for ( uIdx=0 ; szFileType[uIdx] != 0x00 ; uIdx++ ) {
if ( szFileType[uIdx] == TEXT('#') ) {
szFileType[uIdx] = 0x00 ;
}
}
memset( &of,0,sizeof(OPENFILENAME) );
of.lStructSize = sizeof( OPENFILENAME );
of.hwndOwner = m_hWnd ;
of.lpstrFile = szFile ;
of.lpstrInitialDir = NULL;
of.nMaxFile = MAX_PATH ;
of.lpstrDefExt = szExtName ;
of.Flags = OFN_HIDEREADONLY|OFN_LONGNAMES|OFN_FILEMUSTEXIST ;
of.lpfnHook = NULL;
of.lpstrTitle = lpTitle ;
of.lpstrFilter = szFileType ;
if ( GetOpenFileName(&of) ) {
// if ( tGetOpenFileName(&of) ) {
edt.SetWindowText( szFile );
}
}
/////////////////////////////////////////////////////////////////////////////
// 揔梡
void CPropImages::OnApplynow()
{
CSetupDlg* pParent = (CSetupDlg*)GetParent();
OnApply();
pParent->ApplyNow();
}
/////////////////////////////////////////////////////////////////////////////
// 僥僉僗僩丒僔僼僩
void CPropImages::OnChkSecure()
{
if ( m_btnShift.GetCheck() == 1 ) {
m_btnStdLogo.SetCheck( 0 );
m_btnStdLogo.EnableWindow( FALSE );
m_edtLogo.EnableWindow( FALSE );
m_btnBrLogo.EnableWindow( FALSE );
}
else {
m_btnStdLogo.EnableWindow( TRUE );
m_edtLogo.EnableWindow( TRUE );
m_btnBrLogo.EnableWindow( TRUE );
}
}
void CPropImages::OnChkGradient()
{
if ( m_btnGradient.GetCheck() ) {
m_edtBG.EnableWindow( FALSE );
m_btn2002Colors.EnableWindow();
m_btn2002Style.EnableWindow();
m_btnStartCr.EnableWindow( !m_btn2002Colors.GetCheck() );
m_btnEndCr.EnableWindow( !m_btn2002Colors.GetCheck() );
} else {
m_edtBG.EnableWindow( m_btnBG.GetCheck() );
m_btn2002Colors.EnableWindow( FALSE );
m_btn2002Style.EnableWindow( FALSE );
m_btnStartCr.EnableWindow( FALSE );
m_btnEndCr.EnableWindow( FALSE );
}
}
void CPropImages::OnStartcr()
{
SelectColor(m_pOpt->cStartCr);
}
void CPropImages::SelectColor(COLORREF &cr)
{
CHOOSECOLOR cc ;
COLORREF rgcrCustom[16];
ZeroMemory( &cc,sizeof(cc) );
memset( rgcrCustom,0xff,sizeof(rgcrCustom) );
rgcrCustom[0] = GetSysColor( COLOR_ACTIVECAPTION );
rgcrCustom[1] = GetSysColor( 27 );
rgcrCustom[2] = GetThemeColor( LeftColor );
rgcrCustom[3] = GetThemeColor( RightColor );
rgcrCustom[4] = cr;
cc.lStructSize = sizeof(cc);
cc.hwndOwner = m_hWnd ;
cc.Flags = CC_RGBINIT|CC_SOLIDCOLOR ;
cc.lpCustColors = rgcrCustom ;
cc.rgbResult = cr ;
if ( !ChooseColor(&cc) ) {
return ;
}
cr = cc.rgbResult ;
}
void CPropImages::OnEndcr()
{
SelectColor( m_pOpt->cEndCr );
}
void CPropImages::OnChk2002()
{
m_btnStartCr.EnableWindow( !m_btn2002Colors.GetCheck() );
m_btnEndCr.EnableWindow( !m_btn2002Colors.GetCheck() );
}
COLORREF CPropImages::GetThemeColor(clr color)
{
HKEY hKey;
LONG lRet;
DWORD dwSize, dwType, dwDspOp;
TCHAR szKey[MAX_PATH];
COLORREF res = 0;
// Open up the appropriate registry key
lstrcpy( szKey, _T("Software\\Microsoft\\Color") );
lRet= RegOpenKeyEx( HKEY_LOCAL_MACHINE,szKey,0,KEY_QUERY_VALUE | KEY_READ,&hKey );
if( lRet != ERROR_SUCCESS )
return 0;
if( color == LeftColor ) {
dwSize = sizeof( DWORD );
dwType = REG_DWORD;
lRet = RegQueryValueEx( hKey,REG_LEFTCOLOR,0,&dwType,(LPBYTE)&dwDspOp,&dwSize );
if( lRet == ERROR_SUCCESS )
res = (COLORREF)dwDspOp;
}
else if( color == RightColor ) {
dwSize = sizeof( DWORD );
dwType = REG_DWORD;
lRet = RegQueryValueEx( hKey,REG_RIGHTCOLOR,0,&dwType,(LPBYTE)&dwDspOp,&dwSize );
if( lRet == ERROR_SUCCESS )
res = (COLORREF)dwDspOp;
}
RegCloseKey( hKey );
return res;
}
void CPropImages::resetItems()
{
// 攚宨夋憸
if ( m_pOpt->szBG[0] != NULL ) {
m_btnBG.SetCheck( 1 );
m_edtBG.SetWindowText( m_pOpt->szBG );
m_btnGradient.SetCheck( FALSE );
m_btn2002Colors.EnableWindow( FALSE );
m_btn2002Style.EnableWindow( FALSE );
m_btnStartCr.EnableWindow( FALSE );
m_btnEndCr.EnableWindow( FALSE );
m_btnBrBG.EnableWindow( TRUE );
}
else if ( m_pOpt->bGradient ) {
m_btnGradient.SetCheck( TRUE );
m_btn2002Colors.SetCheck( m_pOpt->b2002Theme );
m_btn2002Colors.EnableWindow( TRUE );
m_btn2002Style.EnableWindow( TRUE );
m_btn2002Style.SetCheck( m_pOpt->b2002Style );
m_btnStartCr.EnableWindow( !m_btn2002Colors.GetCheck() );
m_btnEndCr.EnableWindow( !m_btn2002Colors.GetCheck() );
m_btnBG.SetCheck( FALSE );
m_edtBG.EnableWindow( FALSE );
m_btnBrBG.EnableWindow( FALSE );
}
else {
m_btnBG.SetCheck( 0 );
m_edtBG.EnableWindow( FALSE );
m_btnBrBG.EnableWindow( FALSE );
m_btnStartCr.EnableWindow( FALSE );
m_btnEndCr.EnableWindow( FALSE );
}
// 儘僑
if ( m_pOpt->bLogo ) {
m_btnLogo.SetCheck( 1 );
if ( m_pOpt->bShifted ) {
m_btnShift.SetCheck( 1 );
m_btnStdLogo.EnableWindow( FALSE );
m_edtLogo.EnableWindow( FALSE );
m_btnBrLogo.EnableWindow( FALSE );
}
else {
m_btnShift.SetCheck( 0 );
if ( lstrlen(m_pOpt->szLogo) > 0 ) {
m_edtLogo.SetWindowText( m_pOpt->szLogo );
}
else {
m_btnStdLogo.SetCheck( 1 );
m_edtLogo.EnableWindow( FALSE );
m_btnBrLogo.EnableWindow( FALSE );
}
}
}
else {
m_btnShift.SetCheck( 0 );
m_btnStdLogo.EnableWindow( FALSE );
m_edtLogo.EnableWindow( FALSE );
m_btnLogo.SetCheck( 0 );
m_btnBrLogo.EnableWindow( FALSE );
}
}
void CPropImages::On2002Style()
{
m_pOpt->b2002Style = m_btn2002Style.GetCheck();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -