CVS: seamlessrdp/ClientDLL clipper.cpp,1.1,1.2 clipper.def,1.2,1.3 clipper.h,1.1,1.2 hash.cpp,1.1,1.2 hash.h,1.1,1.2 stdstring.h,1.1,1.2 tokenizer.cpp,1.1,1.2 tokenizer.h,1.1,1.2 windowdata.cpp,1.1,1.2 windowdata.h,1.1,1.2

Peter Åstrand <[email protected]>
Newsgroups gmane.network.rdesktop.cvs
Message-ID <[email protected]>
Update of /cvsroot/rdesktop/seamlessrdp/ClientDLL
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13454/ClientDLL

Modified Files:
	clipper.cpp clipper.def clipper.h hash.cpp hash.h stdstring.h 
	tokenizer.cpp tokenizer.h windowdata.cpp windowdata.h 
Log Message:
Should have UNIX LF linebreaks, when running CVS from UNIX.

Index: clipper.cpp
===================================================================
RCS file: /cvsroot/rdesktop/seamlessrdp/ClientDLL/clipper.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** clipper.cpp	30 Jun 2005 08:53:04 -0000	1.1
--- clipper.cpp	30 Jun 2005 14:14:55 -0000	1.2
***************
*** 1,644 ****
! //*********************************************************************************

! //

! //Title: Terminal Services Window Clipper

! //

! //Author: Martin Wickett

! //

! //Date: 2004

! //

! //*********************************************************************************

! 

[...1261 lines suppressed...]
! 	}
! 
!     if (classAlreadyRegistered=1)
! 	{
! 		HWND hWnd = CreateWindow(TEXT("WTSWinClipperDummy"), wd->GetTitle(), WS_POPUP, 0, 0, 0, 0, 0, 0, 0, 0);
! 		ShowWindow( hWnd, 3 );
! 		SetWindowPos(hWnd,0,0,0,0,0,SWP_NOREDRAW);
! 		wd->TaskbarWindowHandle = hWnd;
! 		SetFocus(m_mainWindowHandle);
! 	}
! }
! 
! void DestroyTaskbarWindow(CWindowData* wd)
! {
! 	if (wd->TaskbarWindowHandle != NULL)
! 	{
! 		DestroyWindow(wd->TaskbarWindowHandle);
! 	}
  }
\ No newline at end of file

Index: clipper.def
===================================================================
RCS file: /cvsroot/rdesktop/seamlessrdp/ClientDLL/clipper.def,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** clipper.def	30 Jun 2005 09:44:24 -0000	1.2
--- clipper.def	30 Jun 2005 14:14:56 -0000	1.3
***************
*** 1,5 ****
! LIBRARY seamlessrdp

! 

! EXPORTS

!         VirtualChannelEntry @1

! 

--- 1,5 ----
! LIBRARY seamlessrdp
! 
! EXPORTS
!         VirtualChannelEntry @1
! 

Index: clipper.h
===================================================================
RCS file: /cvsroot/rdesktop/seamlessrdp/ClientDLL/clipper.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** clipper.h	30 Jun 2005 08:53:04 -0000	1.1
--- clipper.h	30 Jun 2005 14:14:56 -0000	1.2
***************
*** 1,78 ****
! //*********************************************************************************

! //

! //Title: Terminal Services Window Clipper

! //

! //Author: Martin Wickett

! //

! //Date: 2004

! //

! //*********************************************************************************

! 

! #define VER_FILETYPE                VFT_DLL

! #define VER_FILESUBTYPE             VFT2_UNKNOWN

! #define VER_FILEDESCRIPTION_STR     "Virtual Channel sample DLL"

! #define VER_INTERNALNAME_STR        "sysinf_c.dll"

! #define VER_ORIGINALFILENAME_STR    "sysinf_c.dll"

! 

! #define STRICT

! #define _

! 

! #include <windows.h>

! #include <ntverp.h>

! #include "common.ver"

! 

! #include <windows.h>

! #include <stdio.h>

! #include <wtsapi32.h>

! #include <tchar.h>

! #include <lmcons.h>

! 

! #ifdef TSDLL

! 

! #include <pchannel.h>

! #include <cchannel.h>

! 

! #include <windows.h>

! #include <winuser.h>

! 

! #endif

! 

! #include "hash.h"

! #include "tokenizer.h"

! #include "WindowData.h"

! 

! //

! // definitions

! //

! #define CHANNELNAME "CLIPPER"

! 

! //

! // GLOBAL variables

! //

! 

! LPHANDLE              gphChannel;

! DWORD                 gdwOpenChannel;

! PCHANNEL_ENTRY_POINTS gpEntryPoints;

! 

! hash_table m_ht;

! HRGN m_regionResult;

! HWND m_mainWindowHandle = NULL;

! int classAlreadyRegistered=0;

! 

! int const ALWAYS__CLIP = 0;//set this to 0 to turn off clipping when there are no windows

! int const HIDE_TSAC_WINDOW = 1;

! int const OUTPUT_DEBUG_INFO = 0;

! int const OUTPUT_WINDOW_TABLE_DEBUG_INFO = 0;

! 

! //

! // declarations

! //

! void WINAPI VirtualChannelOpenEvent(DWORD openHandle, UINT event, LPVOID pdata, UINT32 dataLength, UINT32 totalLength, UINT32 dataFlags);

! VOID VCAPITYPE VirtualChannelInitEventProc(LPVOID pInitHandle, UINT event, LPVOID pData, UINT dataLength);

! BOOL VCAPITYPE VirtualChannelEntry(PCHANNEL_ENTRY_POINTS pEntryPoints);

! 

! void DoClipping(int forceRedraw);

! void CreateRegionFromWindowData(char *,void *);

! 

! void CreateAndShowWindow(CWindowData* wd);

  void DestroyTaskbarWindow(CWindowData* wd);
\ No newline at end of file
--- 1,78 ----
! //*********************************************************************************
! //
! //Title: Terminal Services Window Clipper
! //
! //Author: Martin Wickett
! //
! //Date: 2004
! //
! //*********************************************************************************
! 
! #define VER_FILETYPE                VFT_DLL
! #define VER_FILESUBTYPE             VFT2_UNKNOWN
! #define VER_FILEDESCRIPTION_STR     "Virtual Channel sample DLL"
! #define VER_INTERNALNAME_STR        "sysinf_c.dll"
! #define VER_ORIGINALFILENAME_STR    "sysinf_c.dll"
! 
! #define STRICT
! #define _
! 
! #include <windows.h>
! #include <ntverp.h>
! #include "common.ver"
! 
! #include <windows.h>
! #include <stdio.h>
! #include <wtsapi32.h>
! #include <tchar.h>
! #include <lmcons.h>
! 
! #ifdef TSDLL
! 
! #include <pchannel.h>
! #include <cchannel.h>
! 
! #include <windows.h>
! #include <winuser.h>
! 
! #endif
! 
! #include "hash.h"
! #include "tokenizer.h"
! #include "WindowData.h"
! 
! //
! // definitions
! //
! #define CHANNELNAME "CLIPPER"
! 
! //
! // GLOBAL variables
! //
! 
! LPHANDLE              gphChannel;
! DWORD                 gdwOpenChannel;
! PCHANNEL_ENTRY_POINTS gpEntryPoints;
! 
! hash_table m_ht;
! HRGN m_regionResult;
! HWND m_mainWindowHandle = NULL;
! int classAlreadyRegistered=0;
! 
! int const ALWAYS__CLIP = 0;//set this to 0 to turn off clipping when there are no windows
! int const HIDE_TSAC_WINDOW = 1;
! int const OUTPUT_DEBUG_INFO = 0;
! int const OUTPUT_WINDOW_TABLE_DEBUG_INFO = 0;
! 
! //
! // declarations
! //
! void WINAPI VirtualChannelOpenEvent(DWORD openHandle, UINT event, LPVOID pdata, UINT32 dataLength, UINT32 totalLength, UINT32 dataFlags);
! VOID VCAPITYPE VirtualChannelInitEventProc(LPVOID pInitHandle, UINT event, LPVOID pData, UINT dataLength);
! BOOL VCAPITYPE VirtualChannelEntry(PCHANNEL_ENTRY_POINTS pEntryPoints);
! 
! void DoClipping(int forceRedraw);
! void CreateRegionFromWindowData(char *,void *);
! 
! void CreateAndShowWindow(CWindowData* wd);
  void DestroyTaskbarWindow(CWindowData* wd);
\ No newline at end of file

Index: hash.cpp
===================================================================
RCS file: /cvsroot/rdesktop/seamlessrdp/ClientDLL/hash.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** hash.cpp	30 Jun 2005 08:53:04 -0000	1.1
--- hash.cpp	30 Jun 2005 14:14:56 -0000	1.2
***************
*** 1,28 ****
! #include <string.h>

! #include <stdlib.h>

! /* #define NDEBUG */

! #include <assert.h>

! 

! #include "hash.h"

! 

! 

! /*

! ** public domain code by Jerry Coffin.

[...1005 lines suppressed...]
!       {
!             /* hash_del returns a pointer to the data */
!             strfree( hash_del( strings[i], &table) );
!       }
!       hash_enumerate( &table, printer);
! 
!       for (i=0;NULL != strings[i];i++)
!       {
!             j = hash_lookup(strings[i], &table);
!             if (NULL == j)
!                   printf("\n'%s' is not in the table", strings[i]);
!             else
!                   printf("\n%s is still in the table.", strings[i]);
!       }
! 
!       hash_free_table( &table, strfree );
! 
!       return 0;
! }
! #endif /* TEST */

Index: hash.h
===================================================================
RCS file: /cvsroot/rdesktop/seamlessrdp/ClientDLL/hash.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** hash.h	30 Jun 2005 08:53:04 -0000	1.1
--- hash.h	30 Jun 2005 14:14:56 -0000	1.2
***************
*** 1,90 ****
! /* HW: HenkJan Wolthuis, 1997 */

! #ifndef HASH__H

! #define HASH__H

! 

! #include <stddef.h>             /* For size_t   */

! /*

! ** A hash table consists of an array of these buckets.      Each bucket

! ** holds a copy of the key, a pointer to the data associated with the

! ** key, and a pointer to the next bucket that collided with this one,

! ** if there was one.

! */

! 

! typedef struct bucket {

!       char *key;

!       void *data;

!       struct bucket *next;

! } bucket;

! 

! /*

! ** This is what you actually declare an instance of to create a table.

! ** You then call 'construct_table' with the address of this structure,

! ** and a guess at the size of the table.  Note that more nodes than this

! ** can be inserted in the table, but performance degrades as this

! ** happens.  Performance should still be quite adequate until 2 or 3

! ** times as many nodes have been inserted as the table was created with.

! */

! 

! typedef struct hash_table {

!       size_t size;

!       size_t count;     /* HW */

!       bucket **table;

! } hash_table;

! 

! /*

! ** This is used to construct the table.  If it doesn't succeed, it sets

! ** the table's size to 0, and the pointer to the table to NULL.

! */

! /* HW: returns NULL if it fails */

! hash_table *hash_construct_table(hash_table *table,size_t size);

! 

! /*

! ** Inserts a pointer to 'data' in the table, with a copy of 'key' as its

! ** key.  Note that this makes a copy of the key, but NOT of the

! ** associated data.

! */

! 

! void *hash_insert(char *key,void *data,struct hash_table *table);

! 

! /*

! ** Returns a pointer to the data associated with a key.  If the key has

! ** not been inserted in the table, returns NULL.

! */

! 

! void *hash_lookup(char *key,struct hash_table *table);

! 

! /*

! ** Deletes an entry from the table.  Returns a pointer to the data that

! ** was associated with the key so the calling code can dispose of it

! ** properly.

! */

! 

! void *hash_del(char *key,struct hash_table *table);

! 

! /*

! ** Goes through a hash table and calls the function passed to it

! ** for each node that has been inserted.  The function is passed

! ** a pointer to the key, and a pointer to the data associated

! ** with it.

! */

! 

! void hash_enumerate( hash_table *table,void (*func)(char *,void *));

! 

! /* HW: same as above, but sorted output ( sorted on 'key') */

! int hash_sorted_enum( hash_table *table, void(*func)(char *, void*));

! 

! /*

! ** Frees a hash table.  For each node that was inserted in the table,

! ** it calls the function whose address it was passed, with a pointer

! ** to the data that was in the table.  The function is expected to

! ** free the data.  Typical usage would be:

! ** free_table(&table, free);

! ** if the data placed in the table was dynamically allocated, or:

! ** free_table(&table, NULL);

! ** if not.  ( If the parameter passed is NULL, it knows not to call

! ** any function with the data. )

! */

! 

! void hash_free_table(hash_table *table, void (*func)(void *));

! 

! #endif /* HASH__H */

--- 1,90 ----
! /* HW: HenkJan Wolthuis, 1997 */
! #ifndef HASH__H
! #define HASH__H
! 
! #include <stddef.h>             /* For size_t   */
! /*
! ** A hash table consists of an array of these buckets.      Each bucket
! ** holds a copy of the key, a pointer to the data associated with the
! ** key, and a pointer to the next bucket that collided with this one,
! ** if there was one.
! */
! 
! typedef struct bucket {
!       char *key;
!       void *data;
!       struct bucket *next;
! } bucket;
! 
! /*
! ** This is what you actually declare an instance of to create a table.
! ** You then call 'construct_table' with the address of this structure,
! ** and a guess at the size of the table.  Note that more nodes than this
! ** can be inserted in the table, but performance degrades as this
! ** happens.  Performance should still be quite adequate until 2 or 3
! ** times as many nodes have been inserted as the table was created with.
! */
! 
! typedef struct hash_table {
!       size_t size;
!       size_t count;     /* HW */
!       bucket **table;
! } hash_table;
! 
! /*
! ** This is used to construct the table.  If it doesn't succeed, it sets
! ** the table's size to 0, and the pointer to the table to NULL.
! */
! /* HW: returns NULL if it fails */
! hash_table *hash_construct_table(hash_table *table,size_t size);
! 
! /*
! ** Inserts a pointer to 'data' in the table, with a copy of 'key' as its
! ** key.  Note that this makes a copy of the key, but NOT of the
! ** associated data.
! */
! 
! void *hash_insert(char *key,void *data,struct hash_table *table);
! 
! /*
! ** Returns a pointer to the data associated with a key.  If the key has
! ** not been inserted in the table, returns NULL.
! */
! 
! void *hash_lookup(char *key,struct hash_table *table);
! 
! /*
! ** Deletes an entry from the table.  Returns a pointer to the data that
! ** was associated with the key so the calling code can dispose of it
! ** properly.
! */
! 
! void *hash_del(char *key,struct hash_table *table);
! 
! /*
! ** Goes through a hash table and calls the function passed to it
! ** for each node that has been inserted.  The function is passed
! ** a pointer to the key, and a pointer to the data associated
! ** with it.
! */
! 
! void hash_enumerate( hash_table *table,void (*func)(char *,void *));
! 
! /* HW: same as above, but sorted output ( sorted on 'key') */
! int hash_sorted_enum( hash_table *table, void(*func)(char *, void*));
! 
! /*
! ** Frees a hash table.  For each node that was inserted in the table,
! ** it calls the function whose address it was passed, with a pointer
! ** to the data that was in the table.  The function is expected to
! ** free the data.  Typical usage would be:
! ** free_table(&table, free);
! ** if the data placed in the table was dynamically allocated, or:
! ** free_table(&table, NULL);
! ** if not.  ( If the parameter passed is NULL, it knows not to call
! ** any function with the data. )
! */
! 
! void hash_free_table(hash_table *table, void (*func)(void *));
! 
! #endif /* HASH__H */

Index: stdstring.h
===================================================================
RCS file: /cvsroot/rdesktop/seamlessrdp/ClientDLL/stdstring.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** stdstring.h	30 Jun 2005 09:06:43 -0000	1.1
--- stdstring.h	30 Jun 2005 14:14:56 -0000	1.2
***************
*** 1,3015 ****
! // =============================================================================

! //  FILE:  StdString.h

! //  AUTHOR:	Joe O'Leary (with outside help noted in comments)

! //  REMARKS:

! //		This header file declares the CStdStr template.  This template derives

! //		the Standard C++ Library basic_string<> template and add to it the

! //		the following conveniences:

! //			- The full MFC CString set of functions (including implicit cast)

! //			- writing to/reading from COM IStream interfaces

! //			- Functional objects for use in STL algorithms

[...6003 lines suppressed...]
! 	{ return ssicmp(sLeft.c_str(), sRight.c_str()) < 0; }
! };
! struct StdStringEqualsNoCaseA
! 	: std::binary_function<CStdStringA, CStdStringA, bool>
! {
! 	inline
! 	bool operator()(const CStdStringA& sLeft, const CStdStringA& sRight) const
! 	{ return ssicmp(sLeft.c_str(), sRight.c_str()) == 0; }
! };
! 
! // If we had to define our own version of TRACE above, get rid of it now
! 
! #ifdef TRACE_DEFINED_HERE
! 	#undef TRACE
! 	#undef TRACE_DEFINED_HERE
! #endif
! 
! 
  #endif	// #ifndef STDSTRING_H
\ No newline at end of file

Index: tokenizer.cpp
===================================================================
RCS file: /cvsroot/rdesktop/seamlessrdp/ClientDLL/tokenizer.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** tokenizer.cpp	30 Jun 2005 09:06:43 -0000	1.1
--- tokenizer.cpp	30 Jun 2005 14:14:56 -0000	1.2
***************
*** 1,66 ****
! /////////////////////////////////////////////////////////////////////////////

! // Tokenizer.cpp

! //

! // Date:        Thursday, November 18, 1999

! // Autor:       Eduardo Velasquez

! // Description: Tokenizer class for CStrings. Works like strtok().

! ///////////////

! 

! //#include "atlstr.h"

! 

! 

! 

! #include "Tokenizer.h"

! 

! #ifdef _DEBUG

! #define new DEBUG_NEW

! #undef THIS_FILE

! static char THIS_FILE[] = __FILE__;

! #endif

! 

! CTokenizer::CTokenizer(const CStdString& cs, const CStdString& csDelim):

! 	m_cs(cs),

! 	m_nCurPos(0)

! {

! 	SetDelimiters(csDelim);

! }

! 

! void CTokenizer::SetDelimiters(const CStdString& csDelim)

! {

! 	for(int i = 0; i < csDelim.GetLength(); ++i)

! 		m_delim.set(static_cast<BYTE>(csDelim[i]));

! }

! 

! bool CTokenizer::Next(CStdString& cs)

! {

! 	cs.Empty();

! 

! 	while(m_nCurPos < m_cs.GetLength() && m_delim[static_cast<BYTE>(m_cs[m_nCurPos])])

! 		++m_nCurPos;

! 

! 	if(m_nCurPos >= m_cs.GetLength())

! 		return false;

! 

! 	int nStartPos = m_nCurPos;

! 	while(m_nCurPos < m_cs.GetLength() && !m_delim[static_cast<BYTE>(m_cs[m_nCurPos])])

! 		++m_nCurPos;

! 	

! 	cs = m_cs.Mid(nStartPos, m_nCurPos - nStartPos);

! 

! 	return true;

! }

! 

! CStdString CTokenizer::Tail() const

! {

! 	int nCurPos = m_nCurPos;

! 

! 	while(nCurPos < m_cs.GetLength() && m_delim[static_cast<BYTE>(m_cs[nCurPos])])

! 		++nCurPos;

! 

! 	CStdString csResult;

! 

! 	if(nCurPos < m_cs.GetLength())

! 		csResult = m_cs.Mid(nCurPos);

! 

! 	return csResult;

! }

--- 1,66 ----
! /////////////////////////////////////////////////////////////////////////////
! // Tokenizer.cpp
! //
! // Date:        Thursday, November 18, 1999
! // Autor:       Eduardo Velasquez
! // Description: Tokenizer class for CStrings. Works like strtok().
! ///////////////
! 
! //#include "atlstr.h"
! 
! 
! 
! #include "Tokenizer.h"
! 
! #ifdef _DEBUG
! #define new DEBUG_NEW
! #undef THIS_FILE
! static char THIS_FILE[] = __FILE__;
! #endif
! 
! CTokenizer::CTokenizer(const CStdString& cs, const CStdString& csDelim):
! 	m_cs(cs),
! 	m_nCurPos(0)
! {
! 	SetDelimiters(csDelim);
! }
! 
! void CTokenizer::SetDelimiters(const CStdString& csDelim)
! {
! 	for(int i = 0; i < csDelim.GetLength(); ++i)
! 		m_delim.set(static_cast<BYTE>(csDelim[i]));
! }
! 
! bool CTokenizer::Next(CStdString& cs)
! {
! 	cs.Empty();
! 
! 	while(m_nCurPos < m_cs.GetLength() && m_delim[static_cast<BYTE>(m_cs[m_nCurPos])])
! 		++m_nCurPos;
! 
! 	if(m_nCurPos >= m_cs.GetLength())
! 		return false;
! 
! 	int nStartPos = m_nCurPos;
! 	while(m_nCurPos < m_cs.GetLength() && !m_delim[static_cast<BYTE>(m_cs[m_nCurPos])])
! 		++m_nCurPos;
! 	
! 	cs = m_cs.Mid(nStartPos, m_nCurPos - nStartPos);
! 
! 	return true;
! }
! 
! CStdString CTokenizer::Tail() const
! {
! 	int nCurPos = m_nCurPos;
! 
! 	while(nCurPos < m_cs.GetLength() && m_delim[static_cast<BYTE>(m_cs[nCurPos])])
! 		++nCurPos;
! 
! 	CStdString csResult;
! 
! 	if(nCurPos < m_cs.GetLength())
! 		csResult = m_cs.Mid(nCurPos);
! 
! 	return csResult;
! }

Index: tokenizer.h
===================================================================
RCS file: /cvsroot/rdesktop/seamlessrdp/ClientDLL/tokenizer.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** tokenizer.h	30 Jun 2005 09:06:43 -0000	1.1
--- tokenizer.h	30 Jun 2005 14:14:56 -0000	1.2
***************
*** 1,38 ****
! /////////////////////////////////////////////////////////////////////////////

! // Tokenizer.h

! //

! // Date:        Monday, October 22, 2001

! // Autor:       Eduardo Velasquez

! // Description: Tokenizer class for CStrings. Works like strtok.

! ///////////////

! 

! 

! #include "StdString.h"

! 

! #if !defined(__TOKENIZER_H__)

! #define __TOKENIZER_H__

! 

! #if _MSC_VER >= 1000

! #pragma once

! #endif // _MSC_VER >= 1000

! 

! #if !defined(_BITSET_)

! #	include <bitset>

! #endif // !defined(_BITSET_)

! 

! class CTokenizer

! {

! public:

! 	CTokenizer(const CStdString& cs, const CStdString& csDelim);

! 	void SetDelimiters(const CStdString& csDelim);

! 

! 	bool Next(CStdString& cs);

! 	CStdString	Tail() const;

! 

! private:

! 	CStdString m_cs;

! 	std::bitset<256> m_delim;

! 	int m_nCurPos;

! };

! 

! #endif  // !defined(__TOKENIZER_H__)

--- 1,38 ----
! /////////////////////////////////////////////////////////////////////////////
! // Tokenizer.h
! //
! // Date:        Monday, October 22, 2001
! // Autor:       Eduardo Velasquez
! // Description: Tokenizer class for CStrings. Works like strtok.
! ///////////////
! 
! 
! #include "StdString.h"
! 
! #if !defined(__TOKENIZER_H__)
! #define __TOKENIZER_H__
! 
! #if _MSC_VER >= 1000
! #pragma once
! #endif // _MSC_VER >= 1000
! 
! #if !defined(_BITSET_)
! #	include <bitset>
! #endif // !defined(_BITSET_)
! 
! class CTokenizer
! {
! public:
! 	CTokenizer(const CStdString& cs, const CStdString& csDelim);
! 	void SetDelimiters(const CStdString& csDelim);
! 
! 	bool Next(CStdString& cs);
! 	CStdString	Tail() const;
! 
! private:
! 	CStdString m_cs;
! 	std::bitset<256> m_delim;
! 	int m_nCurPos;
! };
! 
! #endif  // !defined(__TOKENIZER_H__)

Index: windowdata.cpp
===================================================================
RCS file: /cvsroot/rdesktop/seamlessrdp/ClientDLL/windowdata.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** windowdata.cpp	30 Jun 2005 09:06:43 -0000	1.1
--- windowdata.cpp	30 Jun 2005 14:14:56 -0000	1.2
***************
*** 1,76 ****
! //*********************************************************************************

! //

! //Title: Terminal Services Window Clipper

! //

! //Author: Martin Wickett

! //

! //Date: 2004

! //

! //*********************************************************************************

! 

! #include "WindowData.h"

! 

! CWindowData::CWindowData(const CStdString& csId) : m_csTitle(""),m_csId(""), m_iX1(0),m_iY1(0),m_iX2(0),m_iY2(0)

! {

! 	

! }

! 

! void CWindowData::SetId(const CStdString& csId)

! {

! 	m_csId = csId;

! }

! 

! void CWindowData::SetTitle(const CStdString& csTitle)

! {

! 	m_csTitle = csTitle;

! }

! 

! void CWindowData::SetX1(int iX1)

! {

! 	m_iX1 = iX1;

! }

! 

! void CWindowData::SetY1(int iY1)

! {

! 	m_iY1 = iY1;

! }

! 

! void CWindowData::SetX2(int iX2)

! {

! 	m_iX2 = iX2;

! }

! 

! void CWindowData::SetY2(int iY2)

! {

! 	m_iY2 = iY2;

! }

! 

! CStdString CWindowData::GetId()

! {

! 	return this->m_csId;

! }

! 

! CStdString CWindowData::GetTitle()

! {

! 	return this->m_csTitle;

! }

! 

! int CWindowData::GetX1()

! {

! 	return this->m_iX1;

! }

! 

! int CWindowData::GetY1()

! {

! 	return this->m_iY1;

! }

! 

! int CWindowData::GetX2()

! {

! 	return this->m_iX2;

! }

! 

! int CWindowData::GetY2()

! {

! 	return this->m_iY2;

  }
\ No newline at end of file
--- 1,76 ----
! //*********************************************************************************
! //
! //Title: Terminal Services Window Clipper
! //
! //Author: Martin Wickett
! //
! //Date: 2004
! //
! //*********************************************************************************
! 
! #include "WindowData.h"
! 
! CWindowData::CWindowData(const CStdString& csId) : m_csTitle(""),m_csId(""), m_iX1(0),m_iY1(0),m_iX2(0),m_iY2(0)
! {
! 	
! }
! 
! void CWindowData::SetId(const CStdString& csId)
! {
! 	m_csId = csId;
! }
! 
! void CWindowData::SetTitle(const CStdString& csTitle)
! {
! 	m_csTitle = csTitle;
! }
! 
! void CWindowData::SetX1(int iX1)
! {
! 	m_iX1 = iX1;
! }
! 
! void CWindowData::SetY1(int iY1)
! {
! 	m_iY1 = iY1;
! }
! 
! void CWindowData::SetX2(int iX2)
! {
! 	m_iX2 = iX2;
! }
! 
! void CWindowData::SetY2(int iY2)
! {
! 	m_iY2 = iY2;
! }
! 
! CStdString CWindowData::GetId()
! {
! 	return this->m_csId;
! }
! 
! CStdString CWindowData::GetTitle()
! {
! 	return this->m_csTitle;
! }
! 
! int CWindowData::GetX1()
! {
! 	return this->m_iX1;
! }
! 
! int CWindowData::GetY1()
! {
! 	return this->m_iY1;
! }
! 
! int CWindowData::GetX2()
! {
! 	return this->m_iX2;
! }
! 
! int CWindowData::GetY2()
! {
! 	return this->m_iY2;
  }
\ No newline at end of file

Index: windowdata.h
===================================================================
RCS file: /cvsroot/rdesktop/seamlessrdp/ClientDLL/windowdata.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** windowdata.h	30 Jun 2005 09:06:43 -0000	1.1
--- windowdata.h	30 Jun 2005 14:14:56 -0000	1.2
***************
*** 1,42 ****
! //*********************************************************************************

! //

! //Title: Terminal Services Window Clipper

! //

! //Author: Martin Wickett

! //

! //Date: 2004

! //

! //*********************************************************************************

! 

! #include "StdString.h"

! 

! #if !defined(__WINDOWDATA_H__)

! #define __WINDOWDATA_H__

! 

! class CWindowData

! {

! public:

! 	CWindowData(const CStdString& csId);

! 

! 	void CWindowData::SetId(const CStdString& csId);

! 	void CWindowData::SetTitle(const CStdString& csTitle);

! 	void CWindowData::SetX1(int iX1);

! 	void CWindowData::SetY1(int iY1);

! 	void CWindowData::SetX2(int iX2);

! 	void CWindowData::SetY2(int iY2);

! 	HWND CWindowData::TaskbarWindowHandle;

! 

!     CStdString CWindowData::GetId();

! 	CStdString CWindowData::GetTitle();

! 	int CWindowData::GetX1();

! 	int CWindowData::GetY1();

! 	int CWindowData::GetX2();

! 	int CWindowData::GetY2();

! 

! private:

! 	CStdString m_csTitle;

! 	CStdString m_csId;

! 	int m_iX1,m_iY1,m_iX2,m_iY2;

! };

! 

  #endif  // !defined(__WINDOWDATA_H__)
\ No newline at end of file
--- 1,42 ----
! //*********************************************************************************
! //
! //Title: Terminal Services Window Clipper
! //
! //Author: Martin Wickett
! //
! //Date: 2004
! //
! //*********************************************************************************
! 
! #include "StdString.h"
! 
! #if !defined(__WINDOWDATA_H__)
! #define __WINDOWDATA_H__
! 
! class CWindowData
! {
! public:
! 	CWindowData(const CStdString& csId);
! 
! 	void CWindowData::SetId(const CStdString& csId);
! 	void CWindowData::SetTitle(const CStdString& csTitle);
! 	void CWindowData::SetX1(int iX1);
! 	void CWindowData::SetY1(int iY1);
! 	void CWindowData::SetX2(int iX2);
! 	void CWindowData::SetY2(int iY2);
! 	HWND CWindowData::TaskbarWindowHandle;
! 
!     CStdString CWindowData::GetId();
! 	CStdString CWindowData::GetTitle();
! 	int CWindowData::GetX1();
! 	int CWindowData::GetY1();
! 	int CWindowData::GetX2();
! 	int CWindowData::GetY2();
! 
! private:
! 	CStdString m_csTitle;
! 	CStdString m_csId;
! 	int m_iX1,m_iY1,m_iX2,m_iY2;
! };
! 
  #endif  // !defined(__WINDOWDATA_H__)
\ No newline at end of file



-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.