Click here to Skip to main content
15,884,388 members
Articles / Desktop Programming / WTL

ScriptRunner Application

Rate me:
Please Sign up or sign in to vote.
4.97/5 (18 votes)
25 Mar 2007CPOL4 min read 87.8K   1.9K   90  
An Introduction to ScriptRunner. A scripting tool for user interface Unit Testing.
#ifndef _BRAINCHILDEDIT_CTRL_
#define _BRAINCHILDEDIT_CTRL_

#ifndef __cplusplus
	#error ATL requires C++ compilation (use a .cpp suffix)
#endif

#ifndef __ATLWIN_H__
	#error BrainChildEditCtrl.h requires atlwin.h to be included first
#endif

#include "brainchild.h"

/////////////////////////////////////////////////////////////////////////////
// CBrainChildEditCtrlT - client side for brainchild edit control

template <class TBase>
class CBrainChildEditCtrlT : public TBase
{
public:
// Constructors
	CBrainChildEditCtrlT(HWND hWnd = NULL) : TBase(hWnd) { }

	CBrainChildEditCtrlT< TBase >& operator=(HWND hWnd)
	{
		m_hWnd = hWnd;
		return *this;
	}

	HWND Create(HWND hWndParent, _U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
			DWORD dwStyle = WS_CHILD|WS_VISIBLE, DWORD dwExStyle = 0,
			_U_MENUorID MenuOrID = 0U, LPVOID lpCreateParam = NULL)
	{
		dwStyle |= WS_CHILD;
		return CWindow::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
	}

// Attributes
	static LPCTSTR GetWndClassName()
	{
		return BRAINCHILD_CLASS;
	}

	// Methods
	BOOL LoadFile(BOOL bForce, LPCTSTR lpszFileName)
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return (::SendMessage(m_hWnd, BCM_LOADFILE, bForce, (LPARAM)lpszFileName) == BCMR_OK);
	}

	BOOL SaveFile(LPCTSTR lpszFileName)
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_SAVEFILE, 0L, (LPARAM)lpszFileName);
	}

	BOOL SetLogFont(const LOGFONT* lpLogFont)
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_SETLOGFONT, 0L, (LPARAM)lpLogFont);
	}

	BOOL SetFileName(LPCTSTR lpszFileName)
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_SETFILENAME, 0L, (LPARAM)lpszFileName);
	}

	BOOL GotoLine(int nLine)
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_GOTOLINE, nLine, 0L);
	}

	LPTSTR GetText(LPTSTR lpszText)
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return (LPTSTR) ::SendMessage(m_hWnd, BCM_GETTEXT, 0L, (LPARAM)lpszText);
	}

	int GetTextLength()
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_GETTEXTLENGTH, 0L, 0L);
	}

	LPTSTR GetWord(LPTSTR lpszText)
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return (LPTSTR) ::SendMessage(m_hWnd, BCM_GETWORD, 0L, (LPARAM)lpszText);
	}

	int GetWordLength()
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_GETWORDLENGTH, 0L, 0L);
	}

	LPTSTR GetLine(LPTSTR lpszText)
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return (LPTSTR) ::SendMessage(m_hWnd, BCM_GETLINE, 0L, (LPARAM)lpszText);
	}

	int GetLineLength()
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_GETLINELENGTH, 0L, 0L);
	}

	LPTSTR GetSelection(LPTSTR lpszText)
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return (LPTSTR) ::SendMessage(m_hWnd, BCM_GETSELECTION, 0L, (LPARAM)lpszText);
	}

	int GetSelectionLength()
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_GETSELECTIONLENGTH, 0L, 0L);
	}

	int CheckModified()
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_CHECKMODIFIED, 0L, 0L);
	}

	BOOL SetText(BOOL bForce, LPCTSTR lpszText)
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_SETTEXT, bForce, (LPARAM)lpszText);
	}

	void SetSyntaxColoring(BOOL bActive, BOOL bGlobal)
	{
		// No return code is defined...
		ATLASSERT(::IsWindow(m_hWnd));
		::SendMessage(m_hWnd, BCM_SYNTAXCOLORING, bActive, (LPARAM)bGlobal);
	}

	BOOL SetReadOnly(BOOL bReadOnly)
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_SETREADONLY, bReadOnly, 0L);
	}

	COLORREF SetColor(int nIndex, COLORREF color)
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_SETCOLOR, nIndex, (LPARAM)color);
	}

	COLORREF GetColor(int nIndex)
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_GETCOLOR, nIndex, 0L);
	}

	BOOL InsertLine(int nPosition, LPCTSTR lpszText)
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_INSERTLINE, nPosition, (LPARAM)lpszText);
	}

	BOOL CanUndo()
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_CANUNDO, 0L, 0L);
	}

	BOOL CanRedo()
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_CANREDO, 0L, 0L);
	}

	BOOL CanCut()
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_CANCUT, 0L, 0L);
	}

	BOOL CanCopy()
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_CANCOPY, 0L, 0L);
	}

	BOOL CanPaste()
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_CANPASTE, 0L, 0L);
	}

	BOOL CanDelete()
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_CANDELETE, 0L, 0L);
	}

	BOOL IsModified()
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_MODIFIED, 0L, 0L);
	}

	BOOL IsOverWrite()
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_OVERWRITE, 0L, 0L);
	}

	BOOL IsReadOnly()
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_READONLY, 0L, 0L);
	}

	int GetLineCount()
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_NUMBEROFLINES, 0L, 0L);
	}

	BOOL GetFileInfo(LPFILEINFO lpFileInfo)
	{
		ATLASSERT(::IsWindow(m_hWnd));
		return ::SendMessage(m_hWnd, BCM_GETFILEINFO, 0L, (LPARAM) lpFileInfo);
	}

	void ExecuteCommand(UINT nCmd)
	{
		ATLASSERT(::IsWindow(m_hWnd));
		::SendMessage(m_hWnd, BCM_EXECUTECOMMAND, nCmd, 0L);
	}

	void Print()
	{
		ExecuteCommand( CID_FILE_PRINT );
	}

	void ResetContent()
	{
		ExecuteCommand( CID_FILE_DELETECONTENTS );
	}

	// Dialogs
	void ShowGotoDialog()
	{
		// No return code is defined...
		ATLASSERT(::IsWindow(m_hWnd));
		::SendMessage(m_hWnd, BCM_GOTO_DIALOG, 0L, 0L);
	}

	void ShowFindDialog()
	{
		// No return code is defined...
		ATLASSERT(::IsWindow(m_hWnd));
		::SendMessage(m_hWnd, BCM_FIND_DIALOG, 0L, 0L);
	}

	void ShowReplaceDialog()
	{
		// No return code is defined...
		ATLASSERT(::IsWindow(m_hWnd));
		::SendMessage(m_hWnd, BCM_REPLACE_DIALOG, 0L, 0L);
	}

	void ShowPropertiesDialog()
	{
		// No return code is defined...
		ATLASSERT(::IsWindow(m_hWnd));
		::SendMessage(m_hWnd, BCM_PROPERTIES_DIALOG, 0L, 0L);
	}

	void ShowSettingsDialog()
	{
		// No return code is defined...
		ATLASSERT(::IsWindow(m_hWnd));
		::SendMessage(m_hWnd, BCM_SETTINGS_DIALOG, 0L, 0L);
	}
};


typedef CBrainChildEditCtrlT<CWindow>	CBrainChildEditCtrl;

#endif //_BRAINCHILDEDIT_CTRL_

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)


Written By
Software Developer (Senior)
United States United States
Ernest is a multi-discipline software engineer.
Skilled at software design and development for all Windows platforms.
-
MCSD (C#, .NET)
Interests: User Interface, GDI/GDI+, Scripting, Android, iOS, Windows Mobile.
Programming Skills: C/C++, C#, Java (Android), VB and ASP.NET.

I hope you will enjoy my contributions.

Comments and Discussions