Click here to Skip to main content
Click here to Skip to main content
Add your own
alternative version

Brainchild, A syntax coloring edit control

, 16 Jun 2005 CPOL
Syntax coloring, multi-level undo/redo editor control.
bcc_cpl.zip
BCC
ABOUT.ICO
bcc.def
BCC.dsp
BCC.DSW
CLIST.BMP
datetime.ico
EMAIL.ICO
FILES.ICO
GENERAL.ICO
INDENTIO.ICO
keyboard.ico
KEYWORDS.BMP
main.bmp
MAIN.ICO
PRINTER.ICO
Release
Brainchild.lib
SYNTAX.ICO
toolbar.bmp
TREE.BMP
WWW.ICO
bcdemo.zip
BCDemo
bcdemo.exe.manifest
bcdemo.ico
BITMAP1.BMP
CLOCK.ICO
PIN.BMP
Release
Brainchild.lib
toolbar.bmp
brainchild_bin.zip
BCC.cpl
BCDemo.exe
Brainchild.ocx
Brainchild.dll
brainchild_dll.zip
HTMLHelp
Programmer
pattern.bmp
drag_sel.cur
cursor1.cur
cur00001.cur
brainchild.def
Defaults
C#.bcp
c++.bcp
DEF.BCP
DEFAULT.BCP
HTML.BCP
INI.BCP
innosetup.bcp
JAVA.BCP
JSCRIPT.BCP
PARSER.BCP
RESOURCE.BCP
T-SQL.bcp
VBSCRIPT.BCP
brainchild_help.zip
Brainchild.chm
brainchild_ocx.zip
Brainchild
Brainchild.def
Brainchild.dll
BrainchildCtrl.bmp
Release
Brainchild.dll
Brainchild.lib
brainchild_wtl.zip
Destination
BCC.cpl
Brainchild.dll
BrainChildEdit.exe
res
BrainChildEdit.exe.manifest
BrainChildEdit.ico
c++.bcp
JSCRIPT.BCP
toolbar.bmp
VBSCRIPT.BCP
Brainchild.lib
BrainChildEdit.dsp
BrainChildEdit.dsw
//
//	datetime.cpp
//
//	(C) Copyright 2000-2002 by Jan van den Baard.
//	    All Rights Reserved.
//

#include "bcc.h"

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

// Constructor.
DateTimePage::DateTimePage() 
{
	// Setup icon.
	m_nIcon = IDI_DATETIME;
}

// Destructor.
DateTimePage::~DateTimePage()
{
}

// Refresh page contents.
void DateTimePage::RefreshData( LPPARSER pParser )
{
	_ASSERT_VALID( pParser );

	// Save parser.
	m_pParser = pParser;

	// Setup the edit controls.
	m_DFormat.SetWindowText( pParser->pszDateFormat );
	m_TFormat.SetWindowText( pParser->pszTimeFormat );

	// Simulate a timer event.
	SendMessage( WM_TIMER, IDT_UPDATE, 0L );
}

// Save page/parser contents.
BOOL DateTimePage::SavePage( ClsStdioFile *pFile, LPPARSER pParser )
{
	try
	{
		// Write date settings comment.
		pFile->PrintF( ClsString( MAKEINTRESOURCE( IDS_COMMENT_DATETIME )));

		// Write strings.
		if ( pParser->pszDateFormat && *pParser->pszDateFormat ) pFile->PrintF( _T( "DateFormat=%s\n" ), pParser->pszDateFormat );
		if ( pParser->pszTimeFormat && *pParser->pszTimeFormat ) pFile->PrintF( _T( "TimeFormat=%s\n" ), pParser->pszTimeFormat );
	}
	catch ( ClsException& e )
	{
		// Error...
		UNREFERENCED_PARAMETER( e );
		return FALSE;
	}
	return TRUE;
}

// Window procedure.
LRESULT DateTimePage::WindowProc( UINT uMsg, WPARAM wParam, LPARAM lParam )
{
	// Is it our timer event?
	if ( uMsg == WM_TIMER && wParam == IDT_UPDATE )
	{
		// Are we visible?
		if ( IsWindowVisible())
		{
			TCHAR		szBuffer[ 1024 ];
			ClsString	fmt;

			// Convert and set time string.
			m_TFormat.GetWindowText( fmt );
			if ( m_pParser && GetTimeFormat( LOCALE_SYSTEM_DEFAULT, fmt.GetStringLength() ? 0 : LOCALE_NOUSEROVERRIDE, 0, fmt, szBuffer, 1024 ) > 0 )
				m_TSample.SetWindowText( szBuffer );

			// Convert and set date string.
			m_DFormat.GetWindowText( fmt );
			if ( m_pParser && GetDateFormat( LOCALE_SYSTEM_DEFAULT, fmt.GetStringLength() ? 0 : LOCALE_NOUSEROVERRIDE, 0, fmt, szBuffer, 1024 ) > 0 )
				m_DSample.SetWindowText( szBuffer );
			
			return 0;
		}
	}
	else if ( uMsg == WM_DESTROY )
		// Kill the timer...
		KillTimer( IDT_UPDATE );

	// Pass onto the base class.
	return Page::WindowProc( uMsg, wParam, lParam );
}

// WM_COMMAND handler.
LRESULT DateTimePage::OnCommand( UINT nNotifyCode, UINT nCtrlID, HWND hWndCtrl )
{
	// What's the message?
	switch ( nCtrlID )
	{
		case	IDC_DATE:
			// Get the new value.
			HandleEditControl( nNotifyCode, nCtrlID, &m_pParser->pszDateFormat );

			// Simulate a timer event.
			SendMessage( WM_TIMER, IDT_UPDATE, 0L );
			return 0;

		case	IDC_TIME:
			// Get the new value.
			HandleEditControl( nNotifyCode, nCtrlID, &m_pParser->pszTimeFormat );

			// Simulate a timer event.
			SendMessage( WM_TIMER, IDT_UPDATE, 0L );
			return 0;
	}
	// Pass to the base class.
	return Page::OnCommand( nNotifyCode, nCtrlID, hWndCtrl );
}

// WM_INITDIALOG handler.
LRESULT DateTimePage::OnInitDialog( PROPSHEETPAGE * pPropSheetPage )
{
	// Setup static controls.
	m_STFormat.Attach( GetDlgItemHandle( IDC_ST_DTF ));
	m_STSample.Attach( GetDlgItemHandle( IDC_ST_DTS ));	

	// Setup edit controls.
	m_DFormat.Attach( GetDlgItemHandle( IDC_DATE ));
	m_TFormat.Attach( GetDlgItemHandle( IDC_TIME ));

	// Setup the static controls.
	m_DSample.Attach( GetDlgItemHandle( IDC_DATE_SAMP ));
	m_TSample.Attach( GetDlgItemHandle( IDC_TIME_SAMP ));

	// Fire up a timer.
	SetTimer( IDT_UPDATE, 1000, NULL );

	// Call the base-class.
	return Page::OnInitDialog( pPropSheetPage );
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Jan van den Baard
Software Developer (Senior)
Netherlands Netherlands
I have been programming for a hobby since 1985. I have started programming on the C= 64. After that I migrated to the C= Amiga which I traded in for a PC back in 1997 I believe. Back in 2000 I decided to lose a hobby and start developing software for a living.
 
Currently I am working mainly in developing software for building security and access control systems.

| Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.1411022.1 | Last Updated 17 Jun 2005
Article Copyright 2002 by Jan van den Baard
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid