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

📄 propdispitems.cpp

📁 WinCE下绝好的工具条软件
💻 CPP
字号:
// PropDispItems.cpp : 僀儞僾儕儊儞僥乕僔儑儞 僼傽僀儖
//

#include "stdafx.h"
#include "wisBarSetup.h"
#include "PropDispItems.h"
#include "FontSelDlg.h"

#include "SetupDlg.h"

#ifdef _SHLOBJ_H_
#undef _SHLOBJ_H_
#endif
#include <shlobj.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CPropDispItems 僾儘僷僥傿 儁乕僕

IMPLEMENT_DYNCREATE(CPropDispItems, CPropertyPage)

CPropDispItems::CPropDispItems()
:	CPropertyPage(CPropDispItems::IDD),
	m_pOpt(NULL)
{
	//{{AFX_DATA_INIT(CPropDispItems)
	//}}AFX_DATA_INIT
}

CPropDispItems::~CPropDispItems()
{
}

void CPropDispItems::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPropDispItems)
	DDX_Control(pDX, IDC_CHK_AMPM, m_btnAMPM);
	DDX_Control(pDX, IDC_CHK_ALWAYS, m_btnAlways);
	DDX_Control(pDX, IDC_CHK_NO3D, m_btnNo3D);
	DDX_Control(pDX, IDC_STARTUP, m_btnStartup);
	DDX_Control(pDX, IDC_SEL_DATE, m_btnDateFnt);
	DDX_Control(pDX, IDC_CR_SMALL, m_btnSmallCr);
	DDX_Control(pDX, IDC_CHK_SMALL, m_btnSmall);
	DDX_Control(pDX, IDC_CHK_DATE, m_btnDate);
	DDX_Control(pDX, IDC_APPLYNOW, m_btnApplyNow);
	DDX_Control(pDX, IDC_SEL_TITLE, m_btnTitleFnt);
	DDX_Control(pDX, IDC_SEL_CLOCK, m_btnClockFnt);
	DDX_Control(pDX, IDC_CHK_TITLE, m_btnTitle);
	DDX_Control(pDX, IDC_CHK_TASKICON, m_btnTaskIcon);
	DDX_Control(pDX, IDC_CHK_CLOCK, m_btnClock);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPropDispItems, CPropertyPage)
	//{{AFX_MSG_MAP(CPropDispItems)
	ON_BN_CLICKED(IDC_APPLYNOW, OnApplynow)
	ON_BN_CLICKED(IDC_SEL_TITLE, OnSelTitle)
	ON_BN_CLICKED(IDC_SEL_CLOCK, OnSelClock)
	ON_BN_CLICKED(IDC_CHK_TITLE, OnChkTitle)
	ON_BN_CLICKED(IDC_CHK_CLOCK, OnChkClock)
	ON_BN_CLICKED(IDC_CHK_DATE, OnChkDate)
	ON_BN_CLICKED(IDC_SEL_DATE, OnSelDate)
	ON_BN_CLICKED(IDC_CHK_SMALL, OnChkSmall)
	ON_BN_CLICKED(IDC_CR_SMALL, OnCrSmall)
	ON_BN_CLICKED(IDC_CHK_TASKICON, OnChkTaskicon)
	ON_BN_CLICKED(IDC_STARTUP, OnStartup)
	ON_BN_CLICKED(IDC_CHK_NO3D, OnChkNo3d)
	ON_BN_CLICKED(IDC_CR_BAT, OnCrBat)
	ON_BN_CLICKED(IDC_CHK_ALWAYS, OnChkAlways)
	ON_BN_CLICKED(IDC_CHK_AMPM, OnChkAmpm)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPropDispItems 儊僢僙乕僕 僴儞僪儔

/////////////////////////////////////////////////////////////////////////////
// 尰嵼偺擖椡撪梕傪揔梡
void CPropDispItems::OnApplynow() 
{
	CSetupDlg*	pParent = (CSetupDlg*)GetParent();

	OnApply();

	pParent->ApplyNow();
}

/////////////////////////////////////////////////////////////////////////////
// 弶婜張棟
BOOL CPropDispItems::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();

	resetItems();

	return( TRUE );
}

/////////////////////////////////////////////////////////////////////////////
// 僼僅儞僩慖戰乮僞僀僩儖乯
void CPropDispItems::OnSelTitle() 
{
	CFontSelDlg	dlg(this);

	dlg.m_strFont = m_pOpt->szTitleFont ;
	dlg.m_iSize = m_pOpt->iTitleSize ;
	dlg.m_bBold = (m_pOpt->dwTitleStyle & FNT_STYLE_BOLD ? TRUE : FALSE);
	dlg.m_bItalic = (m_pOpt->dwTitleStyle & FNT_STYLE_ITALIC ? TRUE : FALSE);
	dlg.m_Color = m_pOpt->crTitle;

	if ( dlg.DoModal() == IDOK ) {
		lstrcpy( m_pOpt->szTitleFont,dlg.m_strFont );
		m_pOpt->iTitleSize = dlg.m_iSize ;
		m_pOpt->dwTitleStyle = 0 ;
		if ( dlg.m_bBold ) {
			m_pOpt->dwTitleStyle |= FNT_STYLE_BOLD ;
		}
		if ( dlg.m_bItalic ) {
			m_pOpt->dwTitleStyle |= FNT_STYLE_ITALIC ;
		}
		m_pOpt->crTitle = dlg.m_Color;
	}	
}

/////////////////////////////////////////////////////////////////////////////
// 僼僅儞僩慖戰乮帪寁乯
void CPropDispItems::OnSelClock() 
{
	CFontSelDlg	dlg(this);

	dlg.m_strFont = m_pOpt->szClockFont ;
	dlg.m_iSize = m_pOpt->iClockSize ;
	dlg.m_bBold = (m_pOpt->dwClockStyle & FNT_STYLE_BOLD ? TRUE : FALSE);
	dlg.m_bItalic = (m_pOpt->dwClockStyle & FNT_STYLE_ITALIC ? TRUE : FALSE);
	dlg.m_Color = m_pOpt->crClock;

	if ( dlg.DoModal() == IDOK ) {
		lstrcpy( m_pOpt->szClockFont,dlg.m_strFont );
		m_pOpt->iClockSize = dlg.m_iSize ;
		m_pOpt->dwClockStyle = 0 ;
		if ( dlg.m_bBold ) {
			m_pOpt->dwClockStyle |= FNT_STYLE_BOLD ;
		}
		if ( dlg.m_bItalic ) {
			m_pOpt->dwClockStyle |= FNT_STYLE_ITALIC ;
		}
		m_pOpt->crClock = dlg.m_Color;
	}	
}

/////////////////////////////////////////////////////////////////////////////
// 僼僅儞僩丄怓儃僞儞偺桳岠/柍岠壔乮僞僀僩儖乯
void CPropDispItems::OnChkTitle() 
{
	if ( m_btnTitle.GetCheck() == 1 ) {
		m_pOpt->bTitle = TRUE ;
		if ( !m_btnTitleFnt.IsWindowEnabled() ) {
			m_btnTitleFnt.EnableWindow();
//			m_btnTitleCr.EnableWindow();
			m_btnAlways.EnableWindow();
		}
	}
	else {
		m_pOpt->bTitle = m_pOpt->bAlways = FALSE ;
		m_btnAlways.SetCheck( 0 );
		if ( m_btnTitleFnt.IsWindowEnabled() ) {
			m_btnTitleFnt.EnableWindow( FALSE );
//			m_btnTitleCr.EnableWindow( FALSE );
			m_btnAlways.EnableWindow( FALSE );
		}
	}
}

/////////////////////////////////////////////////////////////////////////////
// 僼僅儞僩丄怓儃僞儞偺桳岠/柍岠壔乮帪寁乯
void CPropDispItems::OnChkClock() 
{
	if ( m_btnClock.GetCheck() == 1 ) {
		m_pOpt->bClock = TRUE ;
		if ( !m_btnClockFnt.IsWindowEnabled() ) {
			m_btnClockFnt.EnableWindow();
//			m_btnClockCr.EnableWindow();
		}
	}
	else {
		m_pOpt->bClock = FALSE ;
		if ( m_btnClockFnt.IsWindowEnabled() ) {
			m_btnClockFnt.EnableWindow( FALSE );
//			m_btnClockCr.EnableWindow( FALSE );
		}
		if ( m_btnDate.GetCheck() != 1 )
			m_btnDate.SetCheck(1);

	}
}

/////////////////////////////////////////////////////////////////////////////
// 怓偺慖戰
void CPropDispItems::SelectColor(COLORREF &cr)
{
	CHOOSECOLOR	cc ;
	COLORREF	rgcrCustom[16];
	ZeroMemory( &cc,sizeof(cc) );
	memset( rgcrCustom,0xff,sizeof(rgcrCustom) );

	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 ;
}

/////////////////////////////////////////////////////////////////////////////
// 愝掕抣傪斀塮
BOOL CPropDispItems::OnApply() 
{
	// 愝掕抣傪曗惓
	if ( m_pOpt->bSmallDate ) {
		m_pOpt->bClock = m_pOpt->bDate = FALSE ;
	}
	else {
		m_pOpt->bClock = (m_btnClock.GetCheck() == 1 ? TRUE : FALSE);
		m_pOpt->bDate = (m_btnDate.GetCheck() == 1 ? TRUE : FALSE);
	}

	return CPropertyPage::OnApply();
}

/////////////////////////////////////////////////////////////////////////////
// 擔晅傪昞帵偡傞応崌偼丄僼僅儞僩愝掕偱偒側偄
void CPropDispItems::OnChkDate() 
{
	if ( m_btnDate.GetCheck() == 1 ) {
		m_pOpt->bDate = TRUE ;
		if ( !m_btnDateFnt.IsWindowEnabled() ) {
			m_btnDateFnt.EnableWindow();
//			m_btnDateCr.EnableWindow();
		}
	}
	else {
		m_pOpt->bDate = FALSE ;
		if ( m_btnDateFnt.IsWindowEnabled() ) {
			m_btnDateFnt.EnableWindow( FALSE );
//			m_btnDateCr.EnableWindow( FALSE );
		}
		if ( m_btnClock.GetCheck() != 1 )
			m_btnClock.SetCheck(1);
	}
}

/////////////////////////////////////////////////////////////////////////////
// 僼僅儞僩慖戰乮擔晅乯
void CPropDispItems::OnSelDate() 
{
	CFontSelDlg	dlg(this);

	dlg.m_strFont = m_pOpt->szDateFont ;
	dlg.m_iSize = m_pOpt->iDateSize ;
	dlg.m_bBold = (m_pOpt->dwDateStyle & FNT_STYLE_BOLD ? TRUE : FALSE);
	dlg.m_bItalic = (m_pOpt->dwDateStyle & FNT_STYLE_ITALIC ? TRUE : FALSE);
	dlg.m_Color = m_pOpt->crDate;

	if ( dlg.DoModal() == IDOK ) {
		lstrcpy( m_pOpt->szDateFont,dlg.m_strFont );
		m_pOpt->iDateSize = dlg.m_iSize ;
		m_pOpt->dwDateStyle = 0 ;
		if ( dlg.m_bBold ) {
			m_pOpt->dwDateStyle |= FNT_STYLE_BOLD ;
		}
		if ( dlg.m_bItalic ) {
			m_pOpt->dwDateStyle |= FNT_STYLE_ITALIC ;
		}
		m_pOpt->crDate = dlg.m_Color;
	}	
}

/////////////////////////////////////////////////////////////////////////////
// 儃僞儞偺桳岠/柍岠惂屼
void CPropDispItems::OnChkSmall() 
{
	if ( m_btnSmall.GetCheck() == 0 ) {
		m_pOpt->bSmallDate = FALSE ;

		m_btnDate.EnableWindow();
		OnChkDate();
		m_btnClock.EnableWindow();
		OnChkClock();

		m_btnSmallCr.EnableWindow();
	}
	else {
		m_pOpt->bSmallDate = TRUE ;

		m_btnDate.EnableWindow( FALSE );
		m_btnDateFnt.EnableWindow( FALSE );
//		m_btnDateCr.EnableWindow( FALSE );
		m_btnClock.EnableWindow( FALSE );
		m_btnClockFnt.EnableWindow( FALSE );
//		m_btnClockCr.EnableWindow( FALSE );

		m_btnSmallCr.EnableWindow();
	}
}

/////////////////////////////////////////////////////////////////////////////
// 怓偺慖戰乮彫偝偄擔晅乯
void CPropDispItems::OnCrSmall() 
{
	SelectColor( m_pOpt->crSmall );
}


/////////////////////////////////////////////////////////////////////////////
// 擖椡抣傪斀塮乮僞僗僋傾僀僐儞乯
void CPropDispItems::OnChkTaskicon() 
{
	if ( m_btnTaskIcon.GetCheck() == 1 ) {
		m_pOpt->bTaskIcon = TRUE ;
		m_btnNo3D.EnableWindow();
	}
	else {
		m_pOpt->bTaskIcon = FALSE ;
		m_btnNo3D.EnableWindow( FALSE );
	}
}

/////////////////////////////////////////////////////////////////////////////
// 僗僞乕僩傾僢僾搊榐/夝彍
void CPropDispItems::OnStartup() 
{
	CString	strBtn ;

	m_btnStartup.GetWindowText( strBtn );
	if ( strBtn.Compare(STR_REG_STUP) == 0 ) {
		RegisterStartup();
	}
	else {
		RegisterStartup( FALSE );
	}
}

/////////////////////////////////////////////////////////////////////////////
// register to or remove from "startup"
BOOL CPropDispItems::RegisterStartup( BOOL bReg )
{
	TCHAR		szPath[MAX_PATH],szOwn[MAX_PATH];

	m_btnStartup.SetWindowText( bReg ? STR_UNREG_STUP : STR_REG_STUP );

	// get path myself
	GetModuleFileName( AfxGetInstanceHandle(),szPath,sizeof(szPath) );
	for ( int iIdx = lstrlen(szPath)-1 ; iIdx >= 0 ; iIdx-- ) {
		if ( szPath[iIdx] == _T('\\') ) {
			szPath[iIdx] = NULL ;
			lstrcat( szPath,_T("\\wisBar.exe") );
			break ;
		}
	}
	wsprintf( szOwn,_T("\"%s\""),szPath );

	// get startup folder
	if ( !GetStartupPath(szPath) ) {
		return( FALSE );
	}

	// remove?
	if ( !bReg ) {
		DeleteFile( szPath );
		return( TRUE );
	}

	// create chortcut
	return( (BOOL)SHCreateShortcut(szPath,szOwn) );
}

/////////////////////////////////////////////////////////////////////////////
// get "startup" folder
BOOL CPropDispItems::GetStartupPath( LPTSTR lpPath )
{
	HRESULT			hr ;
	LPITEMIDLIST	pidl ;
	IMalloc			*pm ;

	hr = SHGetSpecialFolderLocation( NULL,CSIDL_STARTUP,&pidl );
	if ( hr == NOERROR ) {
		SHGetPathFromIDList( pidl,lpPath );
		SHGetMalloc( &pm );
		if ( pm ) {
			pm->Free( pidl );
			pm->Release();
		}
		if ( lpPath[lstrlen(lpPath)-1] != _T('\\') ) {
			lstrcat( lpPath,_T("\\") );
		}
		lstrcat( lpPath,_T("WIS Bar.lnk") );
	}
	else {
		return( FALSE );
	}

	return( TRUE );
}

/////////////////////////////////////////////////////////////////////////////
// 3D傾僀僐儞
void CPropDispItems::OnChkNo3d() 
{
	if ( m_btnNo3D.GetCheck() == 1 ) {
		m_pOpt->bNo3D = TRUE ;
	}
	else {
		m_pOpt->bNo3D = FALSE ;
	}
}

/////////////////////////////////////////////////////////////////////////////
// 僶僢僥儕儊乕僞乕偺暥帤怓
void CPropDispItems::OnCrBat() 
{
}

/////////////////////////////////////////////////////////////////////////////
// 忢偵僗僞乕僩儊僯儏乕傪昞帵
void CPropDispItems::OnChkAlways() 
{
	m_pOpt->bAlways = (m_btnAlways.GetCheck() == 1 ? TRUE : FALSE);
}

void CPropDispItems::OnChkAmpm() 
{
	m_pOpt->bAMPM = (m_btnAMPM.GetCheck() == 1 ? TRUE : FALSE);
}


void CPropDispItems::resetItems()
{
	// 愝掕抣傪昞帵
	m_btnTitle.SetCheck( m_pOpt->bTitle ? 1 : 0 );
	m_btnClock.SetCheck( m_pOpt->bClock ? 1 : 0 );
	m_btnDate.SetCheck( m_pOpt->bDate ? 1 : 0 );
	m_btnSmall.SetCheck( m_pOpt->bSmallDate ? 1 : 0 );
	m_btnTaskIcon.SetCheck( m_pOpt->bTaskIcon ? 1 : 0 );
	m_btnAMPM.SetCheck( m_pOpt->bAMPM ? 1 : 0 );
	
	// 儃僞儞偺桳岠/柍岠愝掕
	if ( !m_pOpt->bTitle ) {
		m_btnTitleFnt.EnableWindow( FALSE );
//		m_btnTitleCr.EnableWindow( FALSE );
		m_btnAlways.EnableWindow( FALSE );
	}
	m_btnAlways.SetCheck( m_pOpt->bAlways ? 1 : 0 );

	if ( !m_pOpt->bClock ) {
		m_btnClockFnt.EnableWindow( FALSE );
//		m_btnClockCr.EnableWindow( FALSE );
	}
	if ( !m_pOpt->bDate ) {
		m_btnDateFnt.EnableWindow( FALSE );
//		m_btnDateCr.EnableWindow( FALSE );
	}
	if ( m_pOpt->bSmallDate ) {
		m_btnDate.EnableWindow( FALSE );
		m_btnDateFnt.EnableWindow( FALSE );
//		m_btnDateCr.EnableWindow( FALSE );
		m_btnClock.EnableWindow( FALSE );
		m_btnClockFnt.EnableWindow( FALSE );
//		m_btnClockCr.EnableWindow( FALSE );
	}
	else {
		m_btnSmallCr.EnableWindow( FALSE );
	}

	// 3D傾僀僐儞
	m_btnNo3D.SetCheck( m_pOpt->bNo3D ? 1 : 0 );
	if ( !m_pOpt->bTaskIcon ) {
		m_btnNo3D.EnableWindow( FALSE );
	}

	// 僗僞乕僩傾僢僾
	TCHAR	szPath[MAX_PATH];
	ZeroMemory( szPath,sizeof(szPath) );
	if ( GetStartupPath(szPath) ) {
		if ( GetFileAttributes(szPath) != 0xFFFFFFFF ) {
			m_btnStartup.SetWindowText( STR_UNREG_STUP );
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -