windows-devel.com

 

 

Handling errors in @DbColumn/@DbLookup (using: Lotus Notes) [Article, Error Handling, Lotus Notes, @DBColumn, @DBLookup] www.geocities.com/~sisu/notes 14-Nov-2001
Handling errors in @DbColumn/@DbLookup
Last Modified: Sun, Dec 27 1998 
Description
Entry not found in index or view index not built (or) Server Error: Entry not 
found in index! - Sounds familiar?
Details
Obviously you don't want this message displayed to a user of your database! 
Here is a way to avoid this message... 
If your code for the @DbColumn or @DbLookup reads like this:
@DbColumn("":"";"";"view";1);
Change it to read it like this:
retValues:=@DbColumn("":"";"";"view";1);
@If(  @IsError( retValues );
        "<>";
        retValues
);
Remarks
·	The above code makes use of the @IsError function to find out if the 
result returned is infact an error. This helps you trap the error, before its 
throw out as a message by the system. 

@DbLookup and @DbColumn Error Messages in Notes (using: Lotus Notes) [Article, Error Handling, Lotus Notes, @DBColumn, @DBLookup] www.support.lotus.com 14-Nov-2001
Title: @DbLookup and @DbColumn Error Messages in Notes 
Product Area: Domino Server, Notes 
Product: Domino Server 5.x, Domino Server 4.6x, Domino Server 4.5x, Notes 
Client 5.x, Notes 4.x, Notes 3.x 
Topic: Workstation/Desktop \\ Application Development \\ @Functions/Formulas 
Number: 112151 
Date: 08/29/2001 



Problem:

Below is a listing of the common error messages reported when using @DbLookup 
and @DbColumn in formulas. These errors come from a number of sources, ranging 
from incorrect syntax to a value not being found. The order is roughly that in 
which the errors would occur, were you to commit more than one mistake in 
writing your formula. You may capture any of these errors with the @Iserror 
function.

Solution:

1. Unknown @Function. You will get this error message if you attempt to save a 
formula with an incorrectly spelled function, (e.g., @DbLooku [the 'p' at the 
end is missing]).

2. Insufficient Arguments for @Function. This message appears when the formula 
executes, if the @Db function is part of an another @Function, such as an 
@Prompt, and you have not included all of the parameters required by the other 
@Function.

3. @If Must Have an Odd Number of Arguments. Same as #2, but specifically for 
@If.

4. Insufficient Arguments for Database Function. Same as #2, but specifically 
for the @Db function itself.

5. The necessary external database driver cannot be located. 'Notes' is 
misspelled in the class argument or the specified datalens driver cannot be 
found. For example, @DbLookup("Nortes"; etc ... )

6. The database was not found, please select servers to search. If the Server 
Name was left out of the formula, you will get this error message.

7. Server not responding. The Server is either not responding or it is 
incorrectly specified in the formula. To test: Manually try to open the server. 
If it can be opened, the name is probably specified incorrectly.

8. ERROR: You are not authorized to perform that operation. This error will  ... (cont.)
Showing progress bar with class (using: Lotus Notes 5) [Class, Lotus Notes, LotusScript, Progress Bar, Tip] www.searchdomino.com 09-Oct-2001 by Jose Cruz
Showing progress bar with class

Jose Cruz 
09 Oct 2001, Rating --- (out of 5)

With this code, you can show the progress of a long lasting work.

Declare Public Function NEMProgressBegin Lib "nnotesws.dll" (Byval 
wFlags As Integer) As Long
Declare Public Sub NEMProgressSetBarRange Lib "nnotesws.dll" (Byval 
hWnd As Long,Byval dwMax As Long)
Declare Public Sub NEMProgressDeltaPos Lib "nnotesws.dll" (Byval 
hWnd As Long,Byval dwIncrement As Long)
Declare Public Sub NEMProgressSetBarPos Lib "nnotesws.dll" (Byval 
hWnd As Long,Byval dwPos As Long)
Declare Public Sub NEMProgressSetText Lib "nnotesws.dll" (Byval 
hWnd As Long,Byval pcszLine1 As String)
Declare Public Sub NEMProgressEnd Lib "nnotesws.dll" (Byval hWnd As
 Long)

Public Class CProgressBar
	
	Private hWnd As Long
	
	Property Set Range As Long
		NEMProgressSetBarRange hWnd,Range
	End Property
	
	Property Set Delta As Long
		NEMProgressDeltaPos hWnd, Delta
	End Property
	
	Property Set Pos As Long
		NEMProgressDeltaPos hWnd, Me.Pos	
	End Property
	
	Property Set Text As String
		NEMProgressSetText hWnd,Text
	End Property
	
	Property Set Progress (Pos As Long) As String
		Me.Pos = Pos
		Text = Progress
	End Property
	
	Property Set ProgressBy (Delta As Long) As String
		Me.Delta = Delta
		Text = ProgressBy
	End Property
	
	Private Sub Init
		Range = 100
		Delta = 1
		Text = ""
		Pos = 0
	End Sub
	
	Sub New (Range As Long)
		hWnd = NEMProgressBegin (2)
		Init
		If Range <> 0 Then Me.Range = Range
	End Sub
	
	Sub Delay (Seconds As Integer)
		Dim Started
		Started = Now
		While (Now - Started) * 24 * 60 * 60 < Seconds
			'Do nothing	
		Wend
	End Sub
	
	Sub Delete
		NEMProgressEnd hWnd
	End Sub
	
End Class

'******************************
'Calling function**************
	'Variable de barra de 
progreso******************************************************
	Dim oBarraProgreso As CProgressBar
	lNoDocsRespaldo = colDocsAMover.count
	Set oBarraProgreso = New CProgressBar( colDocsAMov ... (cont.)
Export any view to Excel (using: Lotus Notes 5) [Agent, Excel, Exporting, Lotus Notes, Tip, View] www.searchdomino.com 30-Sep-2001 by Art Yates
Export any view to Excel
Art Yates 
30 Sep 2001, Rating 4.43 (out of 5)
Exports all records of any view to Excel
Sub Initialize
      'Create an Excel Spreadsheet from any view
     '11/3/2000 Art Yates
	Dim Session As New NotesSession ,db As NotesDatabase
	Dim sourceview As NotesView,sourcedoc As NotesDocument
	Dim dataview As NotesView, dc As NotesDocumentCollection
	Dim datadoc As NotesDocument, maxcols As Integer
	Dim WS As New Notesuiworkspace
	Dim ViewString As String, Scope As String, GetField As Variant
	Dim C As NotesViewColumn, FieldName As String, K As Integer,N As Integer
	Dim xlApp As Variant, xlsheet As Variant, rows As Integer, cols As 
Integer
	Dim nitem As NotesItem	, entry As NotesViewEntry, vwNav As 
NotesViewNavigator
	Dim ShowView()  As Variant, i As Integer, VList As Variant, ColVals As 
Variant
		
	Set db = session.CurrentDatabase   'link to current database
	
	'fetch then display a list of views in the database
	Vlist= db.views
	K=Ubound(Vlist)  'get size of list
	Redim Preserve ShowView(K)
	N=-1
	For i = 0 To K
		If Len(Vlist(i).Name) >0 Then	
			FieldName=Trim(Vlist(i).Name)
			If Mid(Fieldname,1,1) <>"(" Then  'do not show hidden 
views
				N=N+1				
				ShowView(N) = FieldName
			End If
		End If	
	Next i	
	Redim Preserve ShowView(N)
     'now sort the list - by default views are listing in the order that they 
were created
	For i=0 To N
		For K=i To N
			If  ShowView(i) > ShowView(k) Then
				FieldName=ShowView(i)	
				ShowView(i) = ShowView(k)
				ShowView(k)=FieldName
			End If
		Next k
	Next i	
	
	viewstring= ws.Prompt(PROMPT_OKCANCELLIST,"List of Views","Choose a 
View","",ShowView )
	If Len(viewstring)=0 Then Exit Sub
	'ViewString ="Dan's View"
	
	Set dataview = db.getview(ViewString)  'get selected view
	
	Set vwnav= dataview.createViewnav()
	
	rows = 1
	cols = 1
	maxcols=dataview.ColumnCount  'how many columns?
	
	Set xlApp = CreateObject("Excel.Application")  'start Excel with OLE 
Automation
	xlApp.StatusBar = " ... (cont.)
Programmatically Save HTML to File (using: Visual Basic 6.0, Visual C++ 6.0) [Document Object Model, DOM, HTML, IWebBrowser2 Interface, Tip, Visual Basic, IHTMLDocument2 Interface, Visual C++] www.pinnaclepublishing.com 27-Sep-2001
Programmatically Save HTML to File
--------------------------------------------------------- 
You can use the Internet Explorer Document Object Model 
to capture all of the HTML sources into a string variable 
which you can then write out to a text file and save to 
disk.

Dim hElm As IHTMLElement
Dim htmltext As String
Dim fso As Object
Dim file As Object
Set hElm = WebBrowser1.Document.all.tags("html").Item(0)
htmltext = hElm.outerHTML
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("c:\test.htm", 2, True)
file.write htmltext
file.Close
Set file = Nothing
Set fso = Nothing

For a VC++ example, see Q292485 at 
http://support.microsoft.com/support/kb/articles/Q292/4/85.asp. 

Visual C++ Solution
Accomplishing this task from a Visual C++ host is very straightforward. You can 
use an IWebBrowser2 interface to call the QueryInterface method for the 
IHTMLDocument2 interface. After you obtain a pointer to the document, then call 
QueryInterface for the IPersistFile interface. After you obtain this interface 
pointer, you can call the save method to save the file to disk. 
    HRESULT          hr    = E_FAIL;
    IDispatch*       pDisp = NULL;
    IHTMLDocument2*  pDoc  = NULL;
	
    pDisp                  = m_webOC.GetDocument();

   if(SUCCEEDED(hr = pDisp->QueryInterface(IID_IHTMLDocument2,(void**)&pDoc)))
   {
       IPersistFile*	pFile	=	NULL;
       if(SUCCEEDED(pDoc->QueryInterface(IID_IPersistFile,(void**)&pFile)))
       {
	LPCOLESTR	file = L"c:\\test1.htm";
	pFile->Save(file,TRUE);
       }
   } 
Common Win32 Exceptions (using: Windows NT) [Exception, Tip, Windows NT] www.iseran.com 27-Sep-2001
These are the exceptions that you often either hit in the debugger or when an 
app crashes. If it is not your application, and you lack the source, there is 
nothing you can do except complain to the software vendor, who will no doubt 
claim it works for them and the fault is the display driver or some change you 
made to your registry. They may even be right.
If it's your own app that goes belly up, this list can be used as a starting 
point to tracking the bug down, as the nature of the exception provides some 
hint as to what went wrong. Also, with Visual Studio 6.0, you can add the error 
register to your watch window (enter "err, hr" as the variable) to make the 
result of the last API call visible. Finally, use the code walkthrough 
checklist to see if you've made a common mistake.
All these exceptions and their meaning are listed in WINNT.H, where they are 
prefixed with the name "STATUS_" rather then "EXCEPTION_", winbase.h, and 
winerror.h. What they mean can be gleaned from various bits of documentation, 
and experience. Common exceptions are in bold.
Floating point exceptions are (seemingly) off by default. Look up _controlfp() 
in the manuals to see how to turn these on, and then _fpieee_flt() to see how 
to make practical use of them. 
Warnings

0x80000001
EXCEPTION_GUARD_PAGE 
Memory Allocated as PAGE_GUARD by VirtualAlloc() has been accessed.
0x80000002
EXCEPTION_DATATYPE_MISALIGNMENT 
The thread tried to read or write data that is misaligned on hardware that 
doesn't provide alignment. . SetErrorMode() may be used to modify the system's 
behaviour and auto-correct such misalignment, albeit at significantly imparied 
performance.
Not found on x86 boxes, but may appear on Merced or on on CE units.
0x80000003
EXCEPTION_BREAKPOINT 
A breakpoint was encountered. You can actually skip to the next instruction now 
if you're devious with Exception filters.
The OS jumps to a breakpoint when HeapFree() shows guard byte corruption or 
other trouble.
0x80000004
EXCEPTION_S ... (cont.)
How do I recurse through a Directory tree ? [Directory, FindFirstFile(), FILE_ATTRIBUTE_DIRECTORY, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
2. 
	How do I recurse through a Directory tree ?
	 
	This code is taken from a utility for counting lines in all files 
matching a given spec, in or below a certain folder. It illustrates the 
technique for recursing into folders quite well.
	 
 UINT CCountlinesDlg::GetLineCountForFiles (CString& csStartFolder,
                                            CString& csFileSpec,
                                            BOOL bRecurse)
 {
    UINT uRetVal = 0;
    HANDLE hFF = 0;
    WIN32_FIND_DATA wfd;
    int iDotIndex=0;
    CString csPath ;
    CString csFile ;
    CString csSubPath ;
    CString csTgt;
    CString csExtension;
    CString csUpperFileSpec = csFileSpec;
 
    csUpperFileSpec.MakeUpper();
    m_csOutputDir = csStartFolder ;
    UpdateData (FALSE);
 
    csTgt = csStartFolder + "\\*.*";
 
    hFF = FindFirstFile (csTgt,&wfd);
 
    if (hFF != INVALID_HANDLE_VALUE)
    {
       if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
       {
          if (strcmp (wfd.cFileName, ".") &&
              strcmp (wfd.cFileName, "..") &&
              bRecurse)
          {
             // recurse into the subdir:
 
             csSubPath = csStartFolder + "\\" + wfd.cFileName;
             uRetVal += GetLineCountForFiles (csSubPath,csFileSpec,bRecurse);
          }
       }
       else
       {
          // Is this one of the target files ?
 
          csFile = wfd.cFileName;
          iDotIndex = csFile.ReverseFind ('.');
          csExtension = csFile.Right (csFile.GetLength() - (iDotIndex+1));
          csExtension.MakeUpper ();
 
          if (csExtension == csUpperFileSpec)
          {
             csFile = csStartFolder + "\\" + wfd.cFileName;
             uRetVal += CountLinesIn (csFile);
 
             m_csOutputFile.Format ("%s : %u", wfd.cFileName, uRetVal);
             UpdateData (FALSE);
          }
       }
 
       while (FindNextFile (hFF, &wfd))
       {
          if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
           ... (cont.)
How do I extract the Version of an EXE, DLL etc ? [Version, EXE, DLL, GetFileVersionInfoSize(), GetFileVersionInfo(), VerQueryValue(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
3. 
	How do I extract the Version of an EXE, DLL etc ?
	 
	I make no promises as to quality, but it _does_ work. All error 
handling and parameter validation has been removed for brevity.
	 
 void GetVersionOfFile (char * pszAppName, // file
                        char * pszVerBuff, // receives version
                        int     iVerBuffLen, // size of buffer
                        char * pszLangBuff, // receives language
                        int iLangBuffLen) // size of buffer
 {
    DWORD dwScratch;
    DWORD * pdwLangChar;
    DWORD dwInfSize ;
    UINT uSize;
    BYTE * pbyInfBuff;
    char szVersion [32];
    char szResource [80];
    char * pszVersion = szVersion;
 
    dwInfSize = GetFileVersionInfoSize (pszAppName, &dwScratch);
 
    if (dwInfSize)
    {
       pbyInfBuff = new BYTE [dwInfSize];
       memset (pbyInfBuff, 0, dwInfSize);
       if (pbyInfBuff)
       {
          if (GetFileVersionInfo (pszAppName, 0, dwInfSize, pbyInfBuff))
          {
             if (VerQueryValue (pbyInfBuff,
                                "\\VarFileInfo\\Translation",
                                (void**)(&pdwLangChar),
                                &uSize))
             {
                if (VerLanguageName (LOWORD (*pdwLangChar),
                                     szResource,
                                     sizeof(szResource)))
                {
                   strncpy (pszLangBuff, szResource, iLangBuffLen);
                }
                wsprintf (szResource, "\\StringFileInfo\\%04X%04X\\FileVersion",
                          LOWORD (*pdwLangChar), HIWORD (*pdwLangChar));
 
                if (VerQueryValue (pbyInfBuff,
                                   szResource,
                                   (void**)(&pszVersion),
                                   &uSize))
                {
                   strncpy (pszVerBuff, pszVersion, iVerBuffLen-1);
                }
             }
          }
          delete [] pbyInfBuff;
      ... (cont.)
How do I ensure that only one instance of my program runs ? (using: Visual C++ 6.0) [Article, CreateMutex(), Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
7. 
	How do I ensure that only one instance of my program runs ?
	 
	Take a look at this code. The first piece of code would be called very 
early in your program, typically inside InitInstance for an MFC program.
	 
 if (WeAreAlone ("Some_Unique_Name_Or_Other"))
 {
    // Proceed
 }
 else
    DebugMessage ("Error: app already running!");
 
 
 BOOL CMyApp::WeAreAlone (LPSTR szName)
 {
    HANDLE hMutex = CreateMutex (NULL, TRUE, szName);
    if (GetLastError() == ERROR_ALREADY_EXISTS)
    {
       CloseHandle(hMutex);
       return FALSE;
    }
    return TRUE;
 }
  
	Why go to this complexity ? You may well ask. Some people just check 
for a fixed window class, indeed Microsofts own sample code does exactly this. 
The problem is that if your application is started up programmatically, the 
second instance may be running before the first instance has managed to create 
its window, and the window-class-based method will not work under those 
circumstances.
What are the pros and cons of the different IPC methods ? [IPC, Named Pipe, Mailslot, WM_COPYDATA, Memory Mapped File, Shared Section, DDE, NetDDE, ddeml, Socket, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
9. 
	What are the pros and cons of the different IPC methods ?
	 
	Named Pipes (or anonymous)
	  
	Use file APIs, so relatively simple to implement if you're at all 
file-savvy. Not queued. Connection-oriented, i.e. point to point, and therefore 
can't broadcast. Win9x can act as a named pipe client, but not as a named pipe 
server. NT can do both.
	 
	Mailslots
	  
	Queued, connectionless and can therefore broadcast. Simple to use, but 
have some drawbacks :
	 
	Because the sender doesn't know what protocols are installed on the 
receiver, mailslot messages are duplicated on every installed protocol, and 
it's your responsibility to sort out the resulting mess (usually with some sort 
of tagging system). A length limit of 400 bytes or so. Don't have guaranteed 
delivery, though I've yet to see one fail to arrive (on a LAN : see point 4). 
Broadcasting to a group (e.g. a domain) works fine... until you want to do it 
outwards over a RAS link. Then it just plain breaks. You won't find this fact 
documented anywhere, as far as I can find. But it bit me, it bit Intel, and it 
will bite you as well. Microsoft explained this blocking behaviour to me as 
their desire not to flood another network with broadcast UDP, which is fair 
enough... if they'd actually got it right. In actuality, about one message in 6 
gets through.
	 
	WM_COPYDATA
	  
	Very simple to use. Obviously message based, so you have to pump 
messages. If you need something quick and dirty for occasional-use messaging, 
both apps (or at a minimum the receiver app) have a message pump and you can 
get a window handle, this is hard to beat.
	 
	Memory Mapped Files
	  
	MMFs don't necessarily need to be associated with a disk file, so you 
can use them for IPC. Since MMFs are the underlying implementation technique 
for most of the other IPC methods, you won't get much better performance if a 
shared memory technique fits your requirement.
	 
	DLL Shared Sections
	  
	These require you to write a DLL of course, w ... (cont.)
Given a PID, how do I find the name of the process executable ? [PID, OpenProcess(), EnumProcessModules(), GetModuleBaseName(), Process ID, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
13. 
	Given a PID, how do I find the name of the process executable ?
	 
	The key here is to use OpenProcess(), EnumProcessModules() and 
GetModuleBaseName(). Assume that the Process ID is in the value DWORD dwPid.
	 
    HANDLE  hProc;
    char    szProcessName [80];
    HMODULE ahMod [10];
    DWORD   dwNeeded;
 
    hProc = OpenProcess (PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,
                         FALSE,
                         dwPid);
    if (hProc)
    {
       if (EnumProcessModules (hProc,
                               ahMod,
                               sizeof(ahMod),
                               &dwNeeded))
       {
          if (GetModuleBaseName (hProc,
                                 ahMod[0],
                                 szProcessName,
                                 sizeof(szProcessName)))
          {
             
          }
          else
          {
             
          }
       }
       CloseHandle (hProc);
    }
 }
 
How do I delete a Directory tree that isn't empty ? [Directory, Shell, SHFileOperation(), SHFILEOPSTRUCT, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
28. 
	How do I delete a Directory tree that isn't empty ?
	 
	You can't use RemoveDirectory, because it only works on empty 
directories/folders. But you CAN use a Shell function for this, the ubiquitous 
SHFileOperation() :
	 
 SHFILEOPSTRUCT sh;
 
 sh.hwnd   = GetSafeHwnd();
 sh.wFunc  = FO_DELETE;
 sh.pFrom  = "c:\\test\0";
 sh.pTo    = NULL;
 sh.fFlags = FOF_NOCONFIRMATION | FOF_SILENT;
 sh.hNameMappings = 0;
 sh.lpszProgressTitle = NULL;
 
 SHFileOperation (&sh);
  
	That code will softly and silently remove an entire tree, starting from 
(and including) c:\test.
	 
	NOTE : under NT, this may fail because a process has a folder or 
subfolder as its current directory. This problem does not arise in Win9x.
	 
	~ Extra Wrinkle ~
	  
	This comes courtesy of Ed Eichman, who wrote to tell me about a problem 
he had with removing a folder tree:
	 
	>> I had a "remove dir" function that removed all files in the dir, and 
then deleted the dir itself. I used CFileFind to get and delete the files, and 
then called _rmdir WITHOUT FIRST CALLING CFileFind.Close ()! Adding the Close 
fixed my problem.
How do I get started working with Threads ? [Thread, Worker Thread, CreateThread(), AfxBeginThread(), Critical Section, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
31. 
	How do I get started working with Threads ?
	 
	Threads are really not that difficult, and worker threads in particular 
are quite easy (worker threads don't have a user interface, they just do work 
in the background). MFC isn't really threadsafe, and rather than spend time 
remembering what I can and can't do with MFC and threads, I just avoid the use 
of MFC within threads: my apps tend to have an MFC core with pure C/SDK worker 
threads.
	 
	Essentially a Worker Thread consists of a function, which is specified 
when the thread is created (using CreateThread() for an SDK program, or 
AfxBeginThread() for an MFC program). When the function exits, the thread is 
done. CreateThread looks complex, but most of its parameters can be left at the 
defaults.
	 
	The only mildly tricky part is ensuring that the threads get killed off 
if your app is closed down: this usually requires that your main thread set an 
"event" (see CreateEvent/SetEvent) which the worker(s) can check - if it/they 
see the event set they drop out of their processing loop, exit and therefore 
cease.
	 
	Of course if you want multiple threads accessing a single resource 
(such as a data structure), you'll need to read up on synchronisation using 
Critical Section objects. Actually getting to the shared object is trivial, as 
threads share the same address space. Think of it like this : processes are the 
unit of addressability ; threads are the unit of executability.
	 
	Check out these fragments of code, which are from a multithreaded 
application I wrote recently. The application creates a closure event thus :
	 
 m_hCloseEvent = CreateEvent (NULL, TRUE, FALSE, "AG61_BN9_RMM_CLOSE");
  
	and this event is used when closing down the threads, as we'll see 
below.
	 
	This is the part that starts the threads :
	 
 CWinThread * pNewThread;
 
    ...This code then appears inside a loop which sets up the threads...
 
 m_ateThreadTable [m_iThreadCount].iPortNum = iComNum;
 m_ateThreadTable [m_iThreadCo ... (cont.)
I start another app and try and wait synchronously on its Process Handle, but both processes hang. Why? [Process Handle, ShellExecuteEx(), CreateProcess(), HWND_BROADCAST, HWND_TOPMOST, SendMessageTimeout(), SendMessage(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
34. 
	I start another app and try and wait synchronously on its Process 
Handle, but both processes hang. Why?
	 
	This situation arises when you use ShellExecuteEx() or CreateProcess() 
to start another application from your GUI application, then try to wait 
synchronously using WaitForSingleObject on its process handle.
	 
	The problem arises because your application has a window but isn't 
pumping messages. If the spawned application invokes SendMessage with one of 
the broadcast targets (HWND_BROADCAST or HWND_TOPMOST), then the SendMessage 
won't return to the new application until all applications have handled the 
message - but your app can't handle the message because it isn't pumping 
messages.... so the new app locks up, so your wait never succeeds.... DEADLOCK.
	 
	If you have absolute control over the spawned application, then there 
are measures you can take, such as using SendMessageTimeout() rather than 
SendMessage (e.g. for DDE initiations, if anybody is still using that). But 
there are situations which cause implicit SendMessage() broadcasts over which 
you have no control, such as using the SetSysColors API for instance.
	 
	The only safe ways round this are (a) split off the Wait into a 
separate thread, or (b) use a timeout on the Wait and use PeekMessage in your 
Wait loop to ensure that you pump messages. You could also try using the 
MsgWaitForMultipleObjects API, but that's not the easiest function in the world 
to get your head around....
How do I get the name of the EXE associated with a given window ? [EXE, PPERF_DATA_BLOCK, PPERF_OBJECT_TYPE, PPERF_INSTANCE_DEFINITION, PPERF_COUNTER_BLOCK, PPERF_COUNTER_DEFINITION, GetWindowThreadProcessId(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
38. 
	How do I get the name of the EXE associated with a given window ?
	 
	Once upon a 16-bit time this was trivial, but now it's harder. The code 
below is a (bug-corrected) version of an MS sample:
	 
 BOOL MyGetWindowExeFilename (HWND hWnd,
                              char * pszFilename,
                              int iSizeofBuff)
 {
    DWORD dwActiveProcessId;
    DWORD CurrentProcessId;
    BOOL bFound = FALSE;
    char szIndex[512] = "";
    DWORD dwBytes = 12000;
    DWORD dwProcessIdOffset;
    DWORD dwIndex;
    int i;
 
    PPERF_DATA_BLOCK pdb;
    PPERF_OBJECT_TYPE pot;
    PPERF_INSTANCE_DEFINITION pid;
    PPERF_COUNTER_BLOCK pcb;
    PPERF_COUNTER_DEFINITION pcd;
 
    // Get PID corresponding to this window handle.
    GetWindowThreadProcessId (hWnd, &dwActiveProcessId);
 
    // Get the index for the PROCESS object.
    if (GetIndex ("Process", szIndex) != ERROR_SUCCESS)
    {
       
       return FALSE;
    }
    // Get memory for PPERF_DATA_BLOCK.
    pdb = (PPERF_DATA_BLOCK) HeapAlloc (GetProcessHeap(),
                                        HEAP_ZERO_MEMORY,
                                        dwBytes);
    // Get performance data.
    while (RegQueryValueEx (HKEY_PERFORMANCE_DATA,
                            (LPTSTR)szIndex,
                            NULL,
                            NULL,
                            (LPBYTE)pdb,
                            &dwBytes) == ERROR_MORE_DATA)
    {
       // Increase memory.
       dwBytes += 1000;
 
       // Allocated memory is too small; reallocate new memory.
       pdb = (PPERF_DATA_BLOCK) HeapReAlloc (GetProcessHeap(),
                                             HEAP_ZERO_MEMORY,
                                             (LPVOID)pdb,
                                             dwBytes);
    }
 
    // Get PERF_OBJECT_TYPE.
    pot = (PPERF_OBJECT_TYPE)((PBYTE)pdb + pdb->HeaderLength);
 
    // Get the first counter definition.
    pcd = (PPERF_COUNTER_DEFINITION) ... (cont.)
How do I run another program from my program ? [system(), _spawn(), WinExec(), ShellExecute(), ShellExecuteEx(), CreateProcess(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
43. 
	How do I run another program from my program ?
	 
	This question comes up at least once a week in the Microsoft public 
newsgroups. It seems simple, but there are many options for running another 
program, and the differences between them can be subtle. Basically, the 
available methods are as follows :
	 
	system()
	  
	Passes a command to the command interpreter (CMD.EXE on Windows NT). 
The simplest way of getting something done, but you might not like the "DOS" 
box that pops up when you invoke it.
	 
	_spawn()
	  
	Part of the C runtime, _spawn is actually a family of functions - see 
the runtime library help for details. Because it's part of the CRT, it is at 
least portable.
	 
	WinExec()
	  
	Obsolete in the 32-bit world, included only for compatibility with 16 
bit code.
	 
	ShellExecute()
	  
	Part of the Win32 API, ShellExecute is the simple launching API of 
choice for the foreseeable future, because it will check against operator 
execute privileges under Windows 2000.
	 
	ShellExecuteEx()
	  
	Essentially the same as ShellExecute, but takes a structure for a 
little more flexibility. One notable extra feature is that the Ex version 
allows you to get a handle to the created process.
	 
	CreateProcess()
	  
	This is how real men launch their processes. CreateProcess is the 
underlying API for starting another process, and give maximum power at the 
expense of being a little more troublesome to drive. .
	 
	The last two functions have the advantage that you can get a process 
handle back from them and then wait on that handle, allowing you to invoke 
another process synchronously : so you can invoke another process, have that 
process run to completion, and then your original process resumes, knowing that 
the child process at least ran (you have to invent your own mechanism for 
finding out whether the child did what it was supposed to, of course).
I can't make CreateProcess() launch my process or handle its parameters. Why ? [CreateProcess(), STARTUPINFO, PROCESS_INFORMATION, PATH, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
46. 
	I can't make CreateProcess() launch my process or handle its 
parameters. Why ?
	 
	There are two main things that can go wrong when using CreateProcess.
	 
	A. Unqualified App Names
	 
	The first problem is a failure to realise how CreateProcess behaves 
when you give an application name. Let's say I call CreateProcess like this :
	 
 BOOL bRet ;
 STARTUPINFO sui ;
 PROCESS_INFORMATION pi ;
 
 sui.cb = sizeof (STARTUPINFO);
 GetStartupInfo (&sui);
 sui.dwFlags = STARTF_USESHOWWINDOW ;
 sui.wShowWindow = SW_SHOW ;
 
 bRet = CreateProcess ("myapp.exe",
                       NULL,
                       NULL, NULL, FALSE,
                       0, NULL, NULL,
                       &sui,
                       &pi);
  
	Chances are that will fail. Why ? Because the application name is not 
fully qualified. If you simply use the EXE name, in the first parameter, 
CreateProcess requires that the EXE be fully qualified, i.e. it contain the 
full path to the EXE file. If, on the other hand, you called it like this :
	 
 bRet = CreateProcess (NULL,
                       "myapp.exe",
                       NULL, NULL, FALSE,
                       0, NULL, NULL,
                       &sui,
                       &pi);
  
	That would probably work, because if the EXE name is given as part of 
the command line Windows will apply the same searching rules as if you had 
simply typed the name at the command prompt, i.e. it will search in the 
following places :
	 
	- The directory from which the application loaded.
	 
	- The current directory for the parent process.
	 
	- Windows 95/98: The Windows system directory.
	 
	- Windows NT/2000: The 32-bit Windows system directory (usual name 
System32).
	 
	- Windows NT/2000: The 16-bit Windows system directory (usual name 
System).
	 
	- The Windows directory.
	 
	- The directories that are listed in the PATH environment variable
	 
	If you give a command line which contains spaces, you'll need to use 
quotes to ... (cont.)
How do I determine the full path to my own executable file at run-time ? [GetModuleFileName(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
48. 
	How do I determine the full path to my own executable file at run-time ?
	 
	Easy peasy. Just call GetModuleFileName() using NULL for the HMODULE 
parameter.
	 
	NB : Windows 95 developers - read the help, there are some 
long-filename problems that affect only you.
How do I start another Process and wait for it to complete before continuing ? [Process, CreateProcess(), ShellExecuteEx(), SHELLEXECUTEINFO, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
58. 
	How do I start another Process and wait for it to complete before 
continuing ?
	 
	The trick here is to realize that you can wait on the handle to a 
process. You need to use CreateProcess() or ShellExecuteEx(), because you need 
some way to get that handle to the newly-started process. Then you can use 
WaitForSingleObject to wait on the handle. The example code below uses 
ShellExecuteEx:
	 
 SHELLEXECUTEINFO sei = {0};
 
 sei.cbSize = sizeof (SHELLEXECUTEINFO);
 sei.fMask  = SEE_MASK_NOCLOSEPROCESS;
 sei.lpVerb = "open";
 sei.lpFile = "notepad.exe";
 sei.nShow  = SW_SHOWNORMAL;
 
 if (ShellExecuteEx (&sei))
 {
    WaitForSingleObject (sei.hProcess, INFINITE);
 }
  
	Some problems can arise with this technique. The most serious one is 
described in Tip 34, but you can also run into problems with processes which 
themselves start other processes, The commonest example being InstallShield (I 
hate InstallShield with such venom it's difficult to maintain my composure, so 
I'll just go have a beer instead...).
How do I put an Icon in the System Tray ? [Icon, System Tray, NOTIFYICONDATA, Shell_NotifyIcon(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
1. 
	How do I put an Icon in the System Tray ?
	 
	This loads the systray icon, giving it an ID because I have more than 
one tray icon. The private message is also specified.
	 
 void CMainFrame::AddMyIcon (void)
 {
    NOTIFYICONDATA tnid;
    CString csTip ;
 
    tnid.cbSize = sizeof(NOTIFYICONDATA);
    tnid.hWnd = GetSafeHwnd();
    tnid.uID = SYSTRAY_QUICK_ID; // personal ID
    tnid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
    tnid.uCallbackMessage = PRIV_SYSTRAY_ICON;
    tnid.hIcon = m_hIconPhone ;
 
    if (csTip.LoadString (IDS_QUICKMENU))
       strncpy (tnid.szTip, csTip, sizeof(tnid.szTip));
    else
       tnid.szTip[0] = '\0';
 
    Shell_NotifyIcon(NIM_ADD, &tnid);
 }
  
	This appears in the mainframe message map, and specifies a message sent 
when the user interacts with the icon. Note that the message ID matches that 
specified in the uCallbackMessage structure member.
	 
 ON_MESSAGE (PRIV_SYSTRAY_ICON, OnSysTrayIconClick)
  
	This handles the click message declared above.
	 
 afx_msg LONG CMainFrame::OnSysTrayIconClick (WPARAM wParam, LPARAM lParam)
 {
    switch (wParam)
    {
       // bunch of other code omitted here. Note that the
       // ID here matches that specified when the icon
       // was inserted, in the uID structure member.
 
       case SYSTRAY_QUICK_ID:
 
            switch (lParam)
            {
               case WM_LBUTTONDOWN:
               case WM_RBUTTONDOWN:
                    ShowQuickMenu ();
                    break ;
            }
            break ;
 
       default:
            DebugMessage ("......");
            break ;
    }
 
    return TRUE ;
 }
  
	This shows the menu for the systray icon. The popup menu is loaded 
elsewhere (and it MUST be a popup, or you'll get a bizarre minimal-width empty 
menu appearing). You can create a single bar menu with several popups, and use 
GetSubMenu to choose the one you want for any particular circumstance.
	 
 void CMainFrame::ShowQuickMenu ()
 {
 ... (cont.)
How do I find the default Web Browser application name ? [Web Browser, FindExecutable(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
18. 
	How do I find the default Web Browser application name ?
	 
	Create a temporary .HTM file and use the API call FindExecutable() to 
find the program associated with it. This trick works for all associated file 
types.
How do I stop my application appearing on the Taskbar ? [Taskbar, WS_EX_TOOLWINDOW, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
20. 
	How do I stop my application appearing on the Taskbar ?
	 
	There is more than one way to skin a cat (never understood that 
proverb...perhaps it depends on whether you boil the cat first? I dunno, 
anyway, we're digressing), and there is more than one way to stop a window 
appearing on the taskbar.
	 
	Rather than WS_EX_APPWINDOW, give your window the WS_EX_TOOLWINDOW 
extended style. Since toolbars don't appear on the taskbar, this will prevent 
it appearing there. Unfortunately, this has some rather negative repercussions 
on the appearance of your window : it gets a thin caption with smaller title, 
and loses its system menu. This is not acceptable to many people.
	 
	Windows owned by an invisible window won't appear on the taskbar. 
"Great", say you, "but my app is dialog based, so what now Mr Smarty ?". Well, 
you can either recast your dialog app as an SDI with a hidden main window, and 
have that main window shown at startup, or you can create your own hidden 
window and set that as your dialogs owner, or you could just go look at tip # 
26, which explains the best way....
Why doesn't my Context Menu dismiss properly when I click elsewhere ? [Context Menu, TrackPopupMenu(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
21. 
	Why doesn't my Context Menu dismiss properly when I click elsewhere ?
	 
	This is a known problem with TrackPopupMenu(). The cure is simple, 
though somewhat obscure. Immediately before you call TrackPopupMenu, make a 
call to SetForegroundWindow for your menu's owner window. Then immediately 
after the call to TrackPopupMenu, post the same window a WM_NULL message. 
Bizarre, but it works. Look at this sample code:
	 
    HMENU hQuick = ::GetSubMenu (m_hUtility, IDM_QUICK);
    POINT CurPos ;
    GetCursorPos (&CurPos);
 
    SetForegroundWindow (); // Bodge
 
    TrackPopupMenu (hQuick,
                    TPM_LEFTBUTTON,
                    CurPos.x,
                    CurPos.y,
                    0,
                    GetSafeHwnd(),
                    NULL);
 
    PostMessage (WM_NULL, 0, 0); // Bodge
 
How do I start, detect and stop Screen Savers ? [Screen Saver, WM_SYSCOMMAND, SC_SCREENSAVE, OpenDesktop, SystemParametersInfo(), GetForegroundWindow(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
22. 
	How do I start, detect and stop Screen Savers ?
	 
	Starting
	  
	The method for starting a screen saver is simple, but surprising. You 
post your own window a message ! Post yourself the WM_SYSCOMMAND message with 
the SC_SCREENSAVE parameter :
	 
 // Uses MFC CWnd::PostMessage
 PostMessage (WM_SYSCOMMAND, SC_SCREENSAVE);
  
	Detecting and Stopping
	  
	Stopping a screen saver is somewhat more complex. The 
Microsoft-documented way of doing this is to look for the special screen-saver 
desktop, enumerate all windows on that desktop, and close them, as follows:
	 
 hdesk = OpenDesktop(TEXT("Screen-saver"),
                     0,
                     FALSE,
                     DESKTOP_READOBJECTS | DESKTOP_WRITEOBJECTS);
 if (hdesk)
 {
    EnumDesktopWindows (hdesk, (WNDENUMPROC)KillScreenSaverFunc, 0);
    CloseDesktop (hdesk);
 }
 
 // ----------------------------------------------------------------
 
 BOOL CALLBACK KillScreenSaverFunc (HWND hwnd, LPARAM lParam)
 {
    PostMessage(hwnd, WM_CLOSE, 0, 0);
    return TRUE;
 }
  
	However, I can't recommend this approach. I have found when using this 
code, NT4 very occasionally seems to get confused and pass you back the normal 
desktop handle, in which case you end up trying to close all the normal 
application windows. Note : this bug has now FINALLY been acknowledged by 
Microsoft - see Knowledgebase article Q230117
	 
	You can avoid this problem by taking advantage of the fact that all 
screen savers built using the MS standard lib file will have the same window 
class name. So if you change the above callback function code to read as 
follows :
	 
 BOOL CALLBACK KillScreenSaverFunc (HWND hwnd, LPARAM lParam)
 {
    char szClass [32];
    GetClassName (hwnd, szClass, sizeof(szClass)-1);
    if (strcmpi (szClass, "WindowsScreenSaverClass") == 0)
       PostMessage (hwnd, WM_CLOSE, 0, 0);
    return TRUE;
 }
  
	Then the code will only close the correct window when the OS returns 
the correct deskto ... (cont.)
How do I get the Handle of the Taskbar ? (using: Visual C++ 6.0) [Article, FindWindowEx(), Handle, Taskbar, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
30. 
	How do I get the Handle of the Taskbar ?
	 
	Easy-peasy. Like this:
	 
 HWND hSysTray = ::FindWindow ("Shell_TrayWnd", NULL) ;
  
	Additional wrinkle : call FindWindowEx() with the above window handle 
as the parent window to find a class named "Button". That will give you the 
Start button handle. Don't think you can mess around with the Start menu 
directly from there though - the Start menu is actually a custom control, not a 
menu.
How do I get back the OLD SetForegroundWindow() behaviour ? (using: Visual C++ 6.0) [Article, AttachThreadInput(), GetForegroundWindow(), SetForegroundWindow(), Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
33. 
	How do I get back the OLD SetForegroundWindow() behaviour ?
	 
	NOTE : These solutions don't work with the Windows 2000 gold code. They 
USED to work on the betas, but we publicised those methods and Microsoft closed 
the loopholes as fast as we told people about them, until now you have to get 
really down and dirty. I can't discuss the methods we use, because I need them 
to work and can't afford to have Microsoft shut that door... doesn't this make 
you sick ?
	 
	Method 1
	  
	For Windows 98/IE5, Microsoft changed the behaviour of 
SetForegroundWindow so as to stop you grabbing the focus. Normally, this would 
be entirely laudable (most applications don't REALLY need to grab focus, they 
just do it anyway), but there are some special kinds of applications which 
really need to be able to grab focus. Fortunately, there is a workaround. This 
involves using the lock timeout feature that also arrived with the new UI.
	 
 void CMyDlg::ActualSetForegroundWindow (HWND hWnd)
 {
    DWORD dwTimeoutMS;
 
    // Get the current lock timeout.
    SystemParametersInfo (0x2000, 0, &dwTimeoutMS, 0);
 
    // Set the lock timeout to zero
    SystemParametersInfo (0x2001, 0, 0, 0);
 
    // Perform the SetForegroundWindow
    ::SetForegroundWindow (hWnd);
 
    // Set the timeout back
    SystemParametersInfo (0x2001, 0, (LPVOID)dwTimeoutMS, 0);
 }
  
	If you have the latest header files, you'll see the following 
definitions:
	 
 #define SPI_GETFOREGROUNDLOCKTIMEOUT 0x2000
 #define SPI_SETFOREGROUNDLOCKTIMEOUT 0x2001
  
	I just use the literal values here to ensure it compiles for everybody.
	 
	Method 2
	  
	Here's a method which uses a different tack. Since Windows permits the 
foreground process to set the foreground window without any restrictions, this 
code attaches to the foreground thread's input queue so as to "look" like it, 
then calls SetForegroundWindow as before:
	 
 BOOL W2K_SetForegroundWindow (HWND hWndToForce)
 {
    HWND hCurrWnd;
    int iMyTID; ... (cont.)
My app leaves a phantom gray button on the Taskbar when it exits. [Taskbar, WS_EX_TOOLWINDOW, ShowWindow(), SW_HIDE, WM_CLOSE, WM_DESTROY, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
36. 
	My app leaves a phantom gray button on the Taskbar when it exits.
	 
	You get this problem when you change the window styles that affect the 
visibility of a window in the taskbar, you naughty little tinker....
	 
	For example, if you change your windows extended style to include 
WS_EX_TOOLWINDOW style (a common trick to prevent a window appearing in the 
taskbar) and then fail to reset the extended style before closing the window, 
the taskbar shows a phantom gray button, which vanishes when clicked.
	 
	Solutions ?
	 
	Reset the style bits of the window before closing your app, or Call 
ShowWindow() with SW_HIDE for the application's main window while processing 
WM_CLOSE or WM_DESTROY
SHFileOperation() gives file system error 1026. Why ? [SHFileOperation(), SHFILEOPSTRUCT, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
42. 
	SHFileOperation() gives file system error 1026. Why ?
	 
	This problem comes up periodically, and is usually due to the lack of 
double-nulling which SHFileOperation requires in its parameters (because they 
can be multi-file lists, delimited with single NULLs and terminated with a 
double NULL). Take the following code (this is all done in debug mode, by the 
way) :
	 
 void CTestbed2Dlg::test_shfo (CString& csFilesSrc, CString& csFilesDst)
 {
    SHFILEOPSTRUCT shfos;
    char szDebug [100];
    int iSHerr;
 
    shfos.hwnd = GetSafeHwnd();
    shfos.wFunc = FO_COPY;
    shfos.pFrom = csFilesSrc;
    shfos.pTo = csFilesDst;
 
    shfos.fFlags= FOF_NOCONFIRMATION;
    shfos.lpszProgressTitle = "Testbed2";
 
    iSHerr = SHFileOperation (&shfos);
    if (iSHerr == 0)
       AfxMessageBox ("Worked fine");
    else
    {
       wsprintf (szDebug, "SHFO gave error %d", GetLastError());
       AfxMessageBox (szDebug);
    }
 }
  
	and call it like this :
	 
    CString csSrc;
    CString csDst;
 
    csSrc = "C:\\Scratch\\*.*";
    csDst = "d:\\Scratch";
    test_shfo (csSrc, csDst);
  
	You'll get file system error 1026 every time. Modify the function code 
to use local arrays like this :
	 
 void CTestbed2Dlg::test_shfo (CString& csFilesSrc, CString& csFilesDst)
 {
    SHFILEOPSTRUCT shfos;
    char szDebug [100];
    int iSHerr;
    char szSrc [_MAX_PATH];
    char szDst [_MAX_PATH];
    strcpy (szSrc, csFilesSrc);
    strcpy (szDst, csFilesDst);
 
    shfos.hwnd  = GetSafeHwnd();
    shfos.wFunc = FO_COPY;
    shfos.pFrom = szSrc;
    shfos.pTo   = szDst;
 
    shfos.fFlags= FOF_NOCONFIRMATION;
    shfos.lpszProgressTitle = "Testbed2";
 
    iSHerr = SHFileOperation (&shfos);
    if (iSHerr == 0)
       AfxMessageBox ("Worked fine");
    else
    {
       wsprintf (szDebug, "SHFO gave error %d", GetLastError());
       AfxMessageBox (szDebug);
    }
 }
  
	and call it exactly the same way, (note - still no explicit 
double-nulling), a ... (cont.)
My app sometimes crashes when the user clicks on a Tree Control. Why ? [Tree Control, COMCTL32.DLL, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
47. 
	My app sometimes crashes when the user clicks on a Tree Control. Why ?
	 
	This has happened to me if the user clicks on the tree control while my 
code is programmatically updating it (typically removing an item). The giveaway 
symptom is that the Dr Watson log contains lots of references to COMCTL32 
ordinal 234. It doesn't happen often, because the timing has to be JUST right 
to produce the problem.
	 
	This is caused by a good old-fashioned bug in the version of 
COMCTL32.DLL shipped up to and including IE4: But I can't get Microsoft to 
admit it, despite being able to repro it with a tiny little test program. 
Installing IE5 fixes the problem, because this provides a newer fixed version 
of the control DLL.
	 
	Fortunately, there is now a standalone update utility to update your 
COMCTL32 without having to install IE5. Go here to get it :
	 
	http://www.microsoft.com/msdownload/ieplatform/ie/comctrlx86.asp
How do I hide the contents of the Desktop ? [Desktop, Program Manager, FindWindow(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
49. 
	How do I hide the contents of the Desktop ?
	 
	This is actually trivially easy, though in a non-obvious sort of way. 
The secret is knowing that Program Manager is alive and well and lurking 
around. If you get its handle and hide that window, all the icons on the 
desktop will magically vanish:
	 
 void ShowDesktopIcons (BOOL bShow)
 {
    HWND hProgMan = ::FindWindow (NULL, "Program Manager") ;
 
    if (hProgMan)
    {
       if (bShow)
          ::ShowWindow (hProgMan, SW_SHOW);
       else
          ::ShowWindow (hProgMan, SW_HIDE);
    }
 }
  
	Simple. So what's the downside ?
	 
	The user won't be able to right-click the desktop and get a context 
menu.
	 
	The Policy system uses the same mechanism for denying access to the 
desktop, so if you provide switching capability in your program and the user 
has been denied access via policies, you'll be giving it back to them.
	 
	UPDATE:
	  
	I am indebted to Ryan Gruss for passing on this extra wrinkle. If you 
drill down two levels as shown below, you can get direct to the List View which 
hosts the icons. If you hide this, then you can clear up the desktop but still 
retain the context menu and any active desktop add-ons...
	 
 HWND hPMWnd, hLVWnd, hIconWnd;
 
 hPMWnd   = FindWindow   ("Progman", "Program Manager");
 hLVWnd   = FindWindowEx (hPMWnd, NULL, "SHELLDLL_DefView", NULL);
 hIconWnd = FindWindowEx (hLVWnd, NULL, "SysListView32",NULL);
 
 ShowWindow (hIconWnd, SW_HIDE/SW_SHOW);
  
	Thanks, Ryan :-)
How do I programmatically dismiss a Menu ? [Menu, WM_CANCELMODE, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
51. 
	How do I programmatically dismiss a Menu ?
	 
	This question most commonly arises when wanting to "time-out" a menu. 
You can usurp the processing that Windows itself does : when Windows puts up a 
dialog or disables a window, it sends a WM_CANCELMODE message to tell the 
window to abandon all modal activities like menus. So you can achieve the same 
effect by sending this message to yourself.
How do I find out which edge the Windows Taskbar is on ? [Taskbar, SHAppBarMessage(), ABM_GETTASKBARPOS, shellapi.h, APPBARDATA, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
63  
	How do I find out which edge the Windows Taskbar is on ?
	 
	Simple. You use the SHAppBarMessage() api with the ABM_GETTASKBARPOS 
flag, like this:
	 
 #include "shellapi.h"
 
 APPBARDATA abd;
 abd.cbSize = sizeof(abd);
 
 SHAppBarMessage (ABM_GETTASKBARPOS, &abd);
 
 switch (abd.uEdge)
 {
    case ABE_TOP:
         AfxMessageBox ("Taskbar is at top");
         break;
 
    case ABE_BOTTOM:
         AfxMessageBox ("Taskbar is at bottom");
         break;
 
    case ABE_LEFT:
         AfxMessageBox ("Taskbar is at left");
         break;
 
    case ABE_RIGHT:
         AfxMessageBox ("Taskbar is at right");
         break;
 }
 
Why don't all my controls appear in ClassWizard ? [Class Wizard, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
6. 
	Why don't all my controls appear in ClassWizard ?
	 
	Easy one this. If you're using Visual C version 5 and the resource 
language of your dialog does not match the resource language of the operating 
system, ClassWizard breaks. Right-click the resource to get its properties, and 
change the language setting.
How do I draw a Bitmap in the background of a Dialog ? [Bitmap, Dialog, OnEraseBkgnd(), WM_ERASEBKGND, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
11. 
	How do I draw a Bitmap in the background of a Dialog ?
	 
	The trick is to override the OnEraseBkgnd() handler. Here's one way of 
doing it:
	 
 CBitmap bitmapBkgnd;
 
 bitmapBkgnd.Attach (LoadBitmap (AfxGetInstanceHandle(),
                     MAKEINTRESOURCE(m_iBitmapId)));
 
 
 BOOL CTestbed2Dlg::OnEraseBkgnd(CDC* pDC)
 {
    CRect rect;
    GetClientRect(&rect);
    CDC dc;
    dc.CreateCompatibleDC(pDC);
    CBitmap* pOldBitmap = dc.SelectObject(&bitmapBkgnd);
    int iBitmapWidth, iBitmapHeight ;
    int ixOrg, iyOrg;
 
    BITMAP bm;
    bitmapBkgnd.GetObject(sizeof(BITMAP),&bm);
    iBitmapWidth = bm.bmWidth;
    iBitmapHeight = bm.bmHeight;
 
    // If our bitmap is smaller than the background and tiling is
    // supported, tile it. Otherwise watch the efficiency - don't
    // spend time setting up loops you won't need.
 
    if (iBitmapWidth  >= rect.Width() &&
        iBitmapHeight >= rect.Height() )
    {
       pDC->BitBlt (rect.left,
                    rect.top,
                    rect.Width(),
                    rect.Height(),
                    &dc,
                    0, 0, SRCCOPY);
    }
    else
    {
       for (iyOrg = 0; iyOrg BitBlt (ixOrg,
                          iyOrg,
                          rect.Width(),
                          rect.Height(),
                          &dc,
                          0, 0, SRCCOPY);
          }
       }
    }
 
    dc.SelectObject(pOldBitmap);
    return TRUE;
 }
  
	If you have static text items and want them to have the bitmap as their 
background, see Tip #37.
	 
	Note that the WM_ERASEBKGND message won't appear in ClassWizard by 
default, because ClassWizard hides it from you. To create the handler, you'll 
have to learn how to stop this hiding... which is a useful thing to know 
anyway. If you go to the last right-hand tab (Class Info I think) on 
ClassWizard, at the bottom of the tab you'll see a "filter" combo which is set 
to "Dialog". Change this to "Window" and  ... (cont.)
Why doesn't my Combo Box dropdown appear when I click the down arrow ? [Combobox, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
32. 
	Why doesn't my Combo Box dropdown appear when I click the down arrow ?
	 
	Also sometimes voiced as "why can't I add items to a combo?". You've 
been caught by one of the commonest newbie Windows programmer problems : you 
have omitted to resize the combo box drop-down. For some unearthly reason best 
known to Microsoft, the combo box drop-down defaults to a size of one pixel. 
Just go into the resource editor, open the dialog and click the combo down 
arrow. This produces a set of sizing handles so you can re-size the drop-down 
box.
How do I create one of those neato expanding Dialogs ? [Dialog, OnInitDialog(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
35. 
	How do I create one of those neato expanding Dialogs ?
	 
	Here's one technique I've used successfully in the past:
	 
	Create a static frame, shrunk to a line, where you want the break 
between the unexpanded and expanded versions of the dialog. I've found that 
these kind of dialogs look nicer if there's a line between the normal and 
"extra" bits, but you could always make the divider invisible if it bothers 
you. Let's call our static IDC_DIVIDER.
	 
	Declare some variables in the dialog class to hold the sizes for your 
dialog (the separate X sizes aren't actually required for this example, I only 
include them for completeness, and to show that the code can be adapted for 
dialogs which expand in X or Y).
	 
    long  m_lDlgXSizeLarge;
    long  m_lDlgYSizeLarge;
    long  m_lDlgXSizeSmall;
    long  m_lDlgYSizeSmall;
    BOOL  m_bExtrasVisible
  
	In the OnInitDialog() handler for your dialog, add the following code :
	 
    RECT rectLarge;
    RECT rectDivider;
 
    GetWindowRect (&rectLarge);
    GetDlgItem (IDC_DIVIDER) -> GetWindowRect (&rectDivider);
 
    m_lDlgXSizeLarge = (rectLarge.right - rectLarge.left) + 1;
    m_lDlgYSizeLarge = (rectLarge.bottom - rectLarge.top) + 1;
    m_lDlgXSizeSmall = m_lDlgXSizeLarge;
    m_lDlgYSizeSmall = rectDivider.top - rectLarge.top;
 
    HideExtraBits (TRUE); // sets initial state of extras to HIDDEN.
  
	So you can see the code is effectively saving the expanded and 
unexpanded sizes for the dialog, based upon the coordinates of the divider 
static, without saving any absolute screen positions.
	 
	Add a button which when pressed, toggles the hide state as follows :
	 
    void CMyDlg::OnExtras()
    {
       HideExtraBits (m_bExtrasVisible);
    }
  
	And finally, here's the function which does the hiding and showing :
	 
    void CMyDlg::HideExtraBits (BOOL bHide)
    {
       if (bHide)
       {
          SetWindowPos (NULL,
                        0, 0,
                        m_lDlgXSizeSmall,
 ... (cont.)
How do I change the colour or background of a static text item on a Dialog ? [Dialog, WM_CTLCOLOR, MFC, SetBkColor(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
37. 
	How do I change the colour or background of a static text item on a 
Dialog ?
	 
	By handling the WM_CTLCOLOR message. Here's a sample in MFC-style code 
that illustrates the technique.
My Dialog closes when the user hits the Enter/Return or Esc key. Why ? [Dialog, Esc, CDialog Class, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
41. 
	My Dialog closes when the user hits the Enter/Return or Esc key. Why ?
	 
	Simple. The default action when the user hits Enter/Return is to call 
OnOk, and the default action on hitting the Escape key is to call OnCancel. For 
a CDialog, the default implementation of either of these functions will close 
the dialog.
	 
	If you don't want the dialog to close, override OnOk and OnCancel, and 
DON'T call the base class function in your handler.
How do I change the background colour of an edit field on a dialog ? [WM_CTLCOLOR, OnCtlColor(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
45. 
	How do I change the background colour of an edit field on a dialog ?
	 
	The following code will change the colour of a single edit field, with 
the ID value IDC_EDIT1 to a dark gray. We do this by returning an appropriately 
coloured brush from the WM_CTLCOLOR handler, and at the same time setting the 
background colour of any contained text to also be dark gray.
	 
	So, let's start by defining our colour. This is done as a constant 
COLORREF value (note the double R in that type name) :
	 
 const COLORREF crefDarkGray = (RGB(128,128,128));
  
	In the class header, we define some variables for creating and holding 
our brush :
	 
 LOGBRUSH m_DGBrushStruct;
 HBRUSH m_DGBrush;
  
	In the InitDialog handler, we create the brush :
	 
 m_DGBrushStruct.lbStyle = BS_SOLID;
 m_DGBrushStruct.lbColor = crefDarkGray;
 m_DGBrushStruct.lbHatch = 0;
 m_DGBrush = ::CreateBrushIndirect (&m_DGBrushStruct);
  
	Finally, we create a handler for the WM_CTLCOLOR message, and put some 
code in it to set our colours up as required :
	 
 HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
 {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
 
    switch (nCtlColor)
    {
       case CTLCOLOR_EDIT:
 
            if (pWnd->GetDlgCtrlID () == IDC_EDIT1)
            {
               pDC->SetBkColor (crefDarkGray);
               return m_DGBrush;
            }
            break;
 
       default:
            break;
    }
 
    return hbr;
 }
  
	There's a couple of interesting things about that code. Note the use of 
GetDlgCtrlID ? We can't compare the pWnd returned against a pWnd for the edit 
control, because OnCtlColor() returns a temporary pointer, and comparisons 
against MFC temporary pointers won't work. Secondly, as I stated above, it only 
changes the background colour for the one specific edit control. If you want to 
change all edit controls, simply remove the IF statement.
	 
	Note that you delete brush handles using the DeleteObject API, not  ... (cont.)
How Do I Create Controls on the Fly ? (using: Visual C++ 6.0) [Article, Control, CreateWindowEx(), Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
57.  
	How Do I Create Controls on the Fly ?
	 
	The basic creation code looks like this:
	 
 HWND CreateList (HWND hWndParent, RECT rcl)
 {
    HWND hL;
 
    hL = CreateWindowEx (WS_EX_CLIENTEDGE,
                         "LISTBOX",
                         "",
                         WS_VISIBLE | WS_CHILD |
                         WS_BORDER | WS_TABSTOP,
                         rcl.left, rcl.top,
                         rcl.right - rcl.left, rcl.bottom - rcl.top,
                         hWndParent,
                         (HMENU) NULL,
                         g_hInstance,
                         NULL);
    return (hL);
 }
  
	You can use the same code to create a tree, simply by substituting the 
macro WC_TREEVIEW where it says "LISTBOX" above, and adding the appropriate 
styles. The RECT is in client coordinates for the parent window. See the help 
for CreateWindowEx for details of all the parameters.
	 
	Incidentally, if you're doing this for a dialog, here's a neat way of 
doing it maintainably. You create an (invisible) frame in the dialog (called 
IDC_LIST_FRAME here), convert the coords of that from screen to client, and 
pass that as the rect into the above function. That way, if you need the 
listbox resizing, you can do it at design time without any tedious faffing 
about with coordinate trial and error :
	 
 void OnDrawTheDamnThing (HWND hDlg)
 {
    RECT rScreen ;
    RECT rClient ;
    HWND hFrame ;
    POINT pTL;
    POINT pBR;
 
    hFrame = GetDlgItem (hDlg, IDC_LIST_FRAME);
 
    if (hFrame)
    {
       GetWindowRect (hFrame, &rScreen);
 
       pTL.x = rScreen.left;
       pTL.y = rScreen.top;
       pBR.x = rScreen.right;
       pBR.y = rScreen.bottom;
 
       ScreenToClient (hDlg, &pTL);
       ScreenToClient (hDlg, &pBR);
 
       rClient.left = pTL.x;
       rClient.top = pTL.y;
       rClient.right = pBR.x;
       rClient.bottom = pBR.y;
 
       CreateList (hDlg, rClient);
    }
    else
       OutputDebugString ( ... (cont.)
My application sometimes hangs when I hit an Accelerator Key. Why ? [Accelerator Key, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
59. 
	My application sometimes hangs when I hit an Accelerator Key. Why ?
	 
	This can happen if you have an accelerator defined for a radio button, 
and then make that radio button invisible. Pressing the accelerator for the 
invisible radio button hangs the app. The same problem does not afflict 
checkboxes or normal buttons - it's just a peculiarity of radio buttons.
	 
	There's no "fix" as such (it's a bug in Windows itself). The solution 
is to routinely disable any control which you make invisible, and we've been 
doing this for *years* because Windows doesn't seem to have any philosophical 
problem with gleefully handing the focus to invisible windows (d'oh).
How do put a clickable URL in a Dialog ? [URL, Dialog, MFC, SS_NOTIFY, WM_COMMAND, ShellExecute, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
64. 
	How do put a clickable URL in a Dialog ?
	 
	It's getting quite common these days to place a URL to a web site in 
about boxes. But how do you this in a typical MFC app? Well, first you need a 
static which will respond to being clicked. Let's assume you have a static 
named IDC_URL in your dialog, which has as its text the URL for your website. 
You need to apply the SS_NOTIFY style to this static (i.e. check the Notify 
checkbox in the static's properties dialog). Then you need to override the 
WM_COMMAND handler for the dialog which hosts the static, and place code 
something like that below in it:
	 
 BOOL CTestbed2Dlg::OnCommand(WPARAM wParam, LPARAM lParam)
 {
    CString csURL;
 
    if (HIWORD(wParam) == STN_CLICKED)
    {
       if (LOWORD(wParam) == IDC_URL)
       {
          FromHandle ((HWND)lParam)->GetWindowText (csURL);
          ShellExecute (GetSafeHwnd(),
                        "open",
                        csURL,
                        NULL,
                        NULL,
                        SW_SHOWNORMAL);
          return TRUE;
       }
    }
    return (CDialog::OnCommand(wParam,lParam));
 }
  
	If you want the URL to appear in a different colour, see tip 37 for 
instructions on changing the colour of a static.
	 
	Or, if you want big gobs of functionality, including cursor changing, 
auto-colour handling etc, then you could go to 
www.codeproject.com/miscctrl/hyperlink.asp and download Chris Maunder's 
excellent alternative.
How do I change the Font(s) in an MFC application Dialog ? [Font, MFC, Dialog, WM_SETFONT, CFont Class, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
66.  
	How do I change the Font(s) in an MFC application Dialog ?
	 
	Pretty easy this, but not obvious. Sure, it looks like all you have to 
do is send a WM_SETFONT message, and that's true, but you need the new font in 
order to send the message. So we have a create a font object, and make sure it 
stays alive for long enough so that the dialog can use it.
	 
	Add a font member object to your dialog class, like so:
	 
  private:
 
    CFont m_fntBoldComic;
  
	Using ClassWizard, create a control member variable for the item you 
want to change. NOTE: If the item is static text, give it a new ID i.e. don't 
use ID_STATIC.
	 
	Create your font object when the dialog initialises, after the base 
class handler has been called, then call the CWnd member SetFont function 
against the member variable you created in Step 2. I'm changing a radio button 
label here.
	 
  BOOL CTestbed2Dlg::OnInitDialog()
 {
    LOGFONT lfNew;
 
    CDialog::OnInitDialog();
 
    ZeroMemory (&lfNew, sizeof(LOGFONT));
    lfNew.lfHeight = 18;
    lfNew.lfWeight = FW_BOLD;
    strcpy (lfNew.lfFaceName, "Comic Sans MS");
    m_fntBoldComic.CreateFontIndirect(&lfNew);
 
    m_ctrlRadio1.SetFont (&m_fntBoldComic, TRUE);
 
    // etc...
 }
  
	Don't forget to make the dialog control big enough to contain the text 
after you've changed it :-)
	 
	And that's all there is to it. The font object lives for as long as the 
dialog does, because it's a member.
I've added a Menu to my Dialog. Why don't the UPDATE_COMMAND_UI handlers get called ? [Menu, Dialog, UPDATE_COMMAND_UI, CFrameWnd Class, CWnd Class, CDialog Class, WM_INITMENUPOPUP, WM_KICKIDLE, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
25. 
	I've added a Menu to my Dialog. Why don't the UPDATE_COMMAND_UI 
handlers get called ?
	 
	The code which dispatches ON_UPDATE_COMMAND_UI messages for menu items 
is implemented inside CFrameWnd, NOT CWnd. Since CDialog is derived from CWnd, 
you don't inherit this code. Bummer.
	 
	What can you do ? Well you can roll your own solution using the 
WM_INITMENUPOPUP message. For sample code, see this knowledgebase article:
	 
	http://support.microsoft.com/support/kb/articles/Q242/5/77.asp
	 
	You can also handle WM_KICKIDLE (which exists to support OnIdle-type 
functionality for dialogs) to achieve this : see John Wismar's article on 
CodeGuru, at the following URL :
	 
	http://www.codeguru.com/dialog/OnUpdate.shtml
How do I make an invisible Dialog-based application ? [Dialog, MFC, InitInstance(), WM_CLOSE, OnClose(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
26. 
	How do I make an invisible Dialog-based application ?
	 
	MFC dialog-based apps default to using a modal dialog, which causes 
problems if your application requires to be invisible. This situation most 
commonly occurs when developing applications which place icons in the system 
tray, and therefore need their main dialog to be invisible until the user 
interacts with the icon. You can make a modeless dialog version of your app as 
follows :
	 
	Make your dialog resource invisible using the styles tab in the dialog 
properties.
	 
	Remove all the DoModal gunk from your InitInstance(), so you end up 
with something like this :
	 
   BOOL CMyApp::InitInstance()
 {
    #ifdef _AFXDLL
     Enable3dControls(); // using MFC in a shared DLL
    #else
     Enable3dControlsStatic();    // linking to MFC statically
    #endif
 
    m_pMainWnd = new CMyModelessDlg;
 
    if (m_pMainWnd)
       return TRUE;
    else
       return FALSE;
 }
  
	I place the call to Create (...) in my dialog constructor and make it 
public. Other people organise things differently but it works for me... curse 
the OOP thought police:
	 
   CMyModelessDlg::CMyModelessDlg(CWnd* pParent /*=NULL*/)
     : CDialog(CMyModelessDlg::IDD, pParent)
 {
    //{{AFX_DATA_INIT(CMyModelessDlg)
    //}}AFX_DATA_INIT
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
 
    Create (IDD, pParent); // Create modeless dialog.
 }
  
	You will need to handle PostNcDestroy and delete the dialog object 
yourself (ClassWizard can set up the handler for you) :
	 
   void CMyModelessDlg::PostNcDestroy()
 {
    delete this;
 }
  
	You may find that if you call DestroyWindow from within your dialog in 
order to shut down, you will have to call your own PostNcDestroy in order to 
avoid a leak. Watch the debug output from your app running in debug mode - if 
this is the case MFC will helpfully give you a warning there. Here's the normal 
WM_CLOSE handler:
	 
 void CMyModelessDlg::OnClose()
 {
    if (m_bOkTo ... (cont.)
How do I change the displayed icon of my MFC app on the fly ? [icon, MFC, LoadImage(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
29. 
	How do I change the displayed icon of my MFC app on the fly ?
	 
	You need to use LoadImage() to explicitly load the small version of the 
new icon, and then use SetIcon to display it:
	 
 HICON hAIcon = (HICON) LoadImage (AfxGetInstanceHandle(),
                                   MAKEINTRESOURCE(IDI_ICON1),
                                   IMAGE_ICON,
                                   16, 16,
                                   LR_DEFAULTCOLOR);
 SetIcon (hAIcon, FALSE);
  
	Remember that if you want both the 32x32 and 16x16 icons to change, 
you'll need to load and set both versions.
I've disabled a Menu item on my MFC program using EnableMenuItem(), but it won't go gray. Why ? [Menu, MFC, EnableMenuItem(), UPDATE_COMMAND_UI, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
50. 
	I've disabled a Menu item on my MFC program using EnableMenuItem(), but 
it won't go gray. Why ?
	 
	You have fallen foul of the MFC automatic menu enable/disable 
mechanisms. MFC will automatically enable any menu item which has a handler 
when the menu item is popped up.
	 
	So your call to EnableMenuItem (FALSE) did work, but it was promptly 
undone again when the menu was popped up.
	 
	You need to define an UPDATE_COMMAND_UI handler for the menu item via 
ClassWizard.
What's the best way to send myself a Message in MFC ? [Message, MFC, WM_APP, Registered Message, RegisterWindowMessage(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
60. 
	What's the best way to send myself a Message in MFC ?
	 
	Those message maps in MFC do help tidy up a program, but they pose a 
problem for an SDK developer coming new to MFC - how to send my own program a 
message? This used to be easy in the old days - you just posted yourself a 
message value in the range WM_USER + N, and handled the message in your WndProc 
in the normal way. In this brave new world however, there are a few changes.
	 
	First of all, the value to be used. WM_USER messages have always caused 
some subtle bugs, because Windows itself uses a few messages in this range for 
dialog management (duh ?!?!). So, Microsoft added the new range beginning with 
WM_APP, which was guaranteed to be outside the range used by Windows itself - 
but not outside the range that might be used by another app - we'll come to 
that in a minute.
	 
	Well, that's fine if you're writing an SDK app, but what about MFC 
message maps ? Well, the special ON_MESSAGE macro was invented for this. Let's 
say we want to send ourselves a message of WM_APP+1000.
	 
	We have to add the macro to the message map, being careful to put it 
outside the markers for ClassWizard message handlers:
	 
    ....
    ON_WM_INITMENU()
    ON_WM_INITMENUPOPUP()
    //}}AFX_MSG_MAP
 
    ON_MESSAGE (WM_APP+1000, OnMyMessage)
 END_MESSAGE_MAP()
  
	Then we add a prototype for the message to our class header:
	 
 afx_msg LRESULT OnMyMessage (WPARAM wParam, LPARAM lParam);
  
	Then we can create a body for the handler, and invoke it by simply 
posting ourselves the message with whatever parameters we want:
	 
 PostMessage (WM_APP+1000, 1, 27);
  
	This is all fine and dandy. But there's a fly in this ointment - a fly 
that's been around since the earliest days of Windows and messages. It is 
perfectly possible for one app to broadcast a message to all Windows, and 
therefore it is possible for another app to broadcast the same carefully-chosen 
WM_APP value to you. Thereby invoking your lovely handler  ... (cont.)
How do I Create >16 Colour Toolbars? [Toolbar, CBitmap Class, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
62  
	How do I Create >16 Colour Toolbars?
	 
	I did this as an exercise in self-flagellation and to prove to myself 
that it could be done. I tried it with 24 bit colour instead of 256 colours, 
because 256 colour bitmaps are palletised and a bit of a pain to work with as a 
result.
	 
	In the class header, lets define some members:
	 
 CToolBar * m_pDataBar;
 CImageList m_DataHotImages;
 CImageList m_CallHotImages;
  
	I made two 24-bit colour bitmaps 32 pixels deep by as many as were 
needed to get the number of buttons I needed (5 are used here), then loaded 
them into imagelists. I made the bitmaps with fuschia as the background colour, 
so the image list would automatically be masked without me having to specify 
separate mask bitmaps. That saves some time. The buttons are quite large at 32 
pixels, but that allowed me to rip off icons for the images, which provides an 
almost limitless supply of artwork :-).
	 
 CBitmap cbmDataHot;
 CBitmap cbmDataCold;
 
 cbmDataHot.LoadBitmap  (IDB_DATA_HOT_LARGE_24BIT) ;
 cbmDataCold.LoadBitmap (IDB_DATA_COLD_LARGE_24BIT) ;
 
 HIMAGELIST hHotImages  = ImageList_Create (32, 32, ILC_COLOR24 | ILC_MASK, 0, 
5);
 HIMAGELIST hColdImages = ImageList_Create (32, 32, ILC_COLOR24 | ILC_MASK, 0, 
5);
 
 // Note that fuschia (255,0,255) is the bitmap background colour
 
 if (hHotImages)
 {
    m_DataHotImages.Attach (hHotImages);
    m_DataHotImages.Add (&cbmDataHot, RGB(255, 0, 255));
 }
 
 if (hColdImages)
 {
    m_DataColdImages.Attach (hColdImages);
    m_DataColdImages.Add (&cbmDataCold, RGB(255, 0, 255));
 }
  
	I made the toolbar and assigned the commands like this:
	 
 const UINT auCmdIds [] = {ID_COMMAND1,
                           ID_COMMAND2,
                           ID_COMMAND3,
                           ID_COMMAND4,
                           ID_COMMAND5};
 
 m_pDataBar = new CToolBar;
 
 if (!m_pDataBar->Create (this,
                          WS_CHILD | WS_VISIBLE |
                          CBRS_TOP | C ... (cont.)
How do I put new entries in the Registry ? [Registry, HKEY_CURRENT_USER, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
12. 
	How do I put new entries in the Registry ?
	 
	This code puts a new string entry in the registry, under 
HKEY_CURRENT_USER. It is designed to make the registry look like an INI file, 
with sections and entries.
	 
 static REGSAM PrimarySecAccMask = KEY_QUERY_VALUE |
    KEY_SET_VALUE |
    KEY_CREATE_SUB_KEY |
    KEY_ENUMERATE_SUB_KEYS |
    KEY_NOTIFY ;
 
 
 LONG WINAPI MyRegSetString (const char * szSection,
                             const char * szEntry,
                             const char * szValue)
 {
    char szTreeBranch [120] ;
    HKEY hMasterKey = 0 ;
    DWORD dwDisposition = 0 ;
    HKEY hTopKey = 0 ;
    LONG lReturn = 0 ;
 
    // Thou shalt not pass cack.
 
    if (szSection == NULL ||
        szEntry   == NULL ||
        szValue   == NULL)
    {
       return ERROR_INVALID_PARAMETER ;
    }
 
    // Select the appropriate tree.
 
    strcpy (szTreeBranch, "Software\\MyCompany\\MyProgram\\");
    strcat (szTreeBranch, szSection) ;
    hTopKey = HKEY_CURRENT_USER ;
 
    lReturn = RegCreateKeyEx (hTopKey,
                              szTreeBranch,
                              0,
                              szPNC_CLASS,
                              REG_OPTION_NON_VOLATILE,
                              PrimarySecAccMask,
                              NULL,
                              &hMasterKey,
                              &dwDisposition);
 
    if (lReturn == ERROR_SUCCESS)
    {
       // section exists : set the value.
 
       lReturn = RegSetValueEx (hMasterKey,
                                szEntry,
                                0,
                                REG_SZ,
                                (CONST BYTE *) szValue,
                                strlen (szValue)+1);
    }
    else
    {
       
    }
 
    if (hMasterKey)
       RegCloseKey (hMasterKey);
 
    return lReturn ;
 
 }
 
How do I grab the users Password under Windows NT ? [Password, Windows NT, GINA, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
15. 
	How do I grab the users Password under Windows NT ?
	 
	Microsoft actually document how to do this (it's a common requirement 
for programs which need to log into a database using the users own security 
credentials).
	 
	Look at the GINASTUB sample which comes with the Win32 Platform SDK. 
Essentially, the technique consists of replacing the default GINA with your 
own, then having your GINA LoadLibrary the default one and call its entry 
points as required, grabbing the data as it flies past. I have reproduced the 
important function here, with my own code added for saving the username and 
password to a file in ANSI format.
	 
 int WINAPI WlxLoggedOutSAS (PVOID pWlxContext,
                             DWORD dwSasType,
                             PLUID pAuthenticationId,
                             PSID pLogonSid,
                             PDWORD pdwOptions,
                             PHANDLE phToken,
                             PWLX_MPR_NOTIFY_INFO pMprNotifyInfo,
                             PVOID *pProfile)
 {
    HANDLE hFile ;
    DWORD dwBytesWrit ;
    TCHAR szBuffer   [130];
    TCHAR szUserName [64];
    TCHAR szPassword [64];
 
    iRet = GWlxLoggedOutSAS (pWlxContext,
                             dwSasType,
                             pAuthenticationId,
                             pLogonSid,
                             pdwOptions,
                             phToken,
                             pMprNotifyInfo,
                             pProfile);
 
    if (iRet == WLX_SAS_ACTION_LOGON)
    {
       WideCharToMultiByte (CP_ACP, 0,
                            pMprNotifyInfo->pszUserName,
                            -1,
                            szUserName,
                            sizeof (szUserName),
                            NULL, NULL);
 
       WideCharToMultiByte (CP_ACP, 0,
                            pMprNotifyInfo->pszPassword,
                            -1,
                            szPassword,
                 ... (cont.)
How do I determine if a given user is in a given group ? [NET_API_STATUS, NetApiBufferAllocate(), NetUserGetGroups(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
56. 
	How do I determine if a given user is in a given group ?
	 
	Let's assume you have Unicode arrays declared like this:
	 
 WCHAR wcUser [UNLEN];
 WCHAR wcAdmGroup [64];
  
	In one you put the name of the user (use GetUserName to fetch the 
current user. If you're an ANSI app you'll need to use MultiByteToWideChar to 
convert to Unicode). Similarly get the server name and convert that to Unicode, 
then put it in wcServer. Now we could use code like that below to determine if 
wcUser is a member of wcAdmGroup. I've removed the error handling code for 
clarity.
	 
 #include "lm.h"
 #define MAX_GROUPS   30
 
 NET_API_STATUS nasReturn;
 
 WCHAR * pwcBuffer ;
 GROUP_USERS_INFO_0 UserInfo [MAX_GROUPS];
 GROUP_USERS_INFO_0 * pUserInfo = UserInfo;
 
 DWORD dwEntriesRead ;
 DWORD dwTotalEntries ;
 DWORD dwBufferSize = GNLEN*MAX_GROUPS*2;
 DWORD dwCount ;
 
 bResult = FALSE;
 
 // Allocate memory for group list buffer.
 nasReturn = NetApiBufferAllocate (dwBufferSize, (void**)&pwcBuffer);
 
 // Set the structure pointers to point at our buffer.
 
 for (dwCount=0; dwCount 
	bResult is now TRUE if the user is in the group. If you need to convert 
to Unicode, here's a sample call to MultiByteToWideChar:
	 
 MultiByteToWideChar (CP_ACP,
                      MB_PRECOMPOSED,
                      szBuffer,
                      -1,
                      wcAdmGroup,
                      sizeof (wcAdmGroup));
  
	That takes the contents of szBuffer and converts it into Unicode in the 
WCHAR array wcAdmGroup.
I keep getting "undeclared identifier" compilation failures, even though I've included all necessary headers as far as I can see. Why ? [STDAFX.H, VC_EXTRALEAN, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
16. 
	I keep getting "undeclared identifier" compilation failures, even 
though I've included all necessary headers as far as I can see. Why ?
	 
	Reason #1
	  
	Look at your STDAFX.H file. You will see the line
	 
 #define VC_EXTRALEAN
  
	there. This excludes whole sections of Win32 functionality, including 
the serial comms stuff. Comment it out and rebuild.
	 
	Reason #2
	  
	Certain functions are only included if the target operating system is 
WinNT, and even then only if it's NT4 (or later). Put the line
	 
 #define _WIN32_WINNT 0x0400
  
	at the _top_ of your STDAFX.H to force the compiler to include the 
excluded functions.
	 
	CreateWaitableTimer is a good example of the functions that behave like 
this, and it commonly comes up in this context on the newsgroups. You can see 
the exclusion if you look in WINBASE.H where it's declared.
	 
	Reason #3 (courtesy of Joseph Newcomer)
	  
	You have done the following:
	 
 #define _whatever
 #include "stdafx.h"
  
	in some module, where the symbol _whatever is one of the symbols that 
causes certain names to be defined by including windows.h. But in spite of 
this, the symbols you want are still undefined. Why? Because of precompiled 
headers. The symbols available to your compilation are made available based on 
the precompiled header which is in turn based on the compilation of stdafx.h. 
If the symbols were not visible at that compilation, changing the #define 
symbols in other modules will have no effect. Go back and add the #define to 
your compilation of stdafx.h.
My app works in Debug build, but crashes in Release. What's the difference between the two ? [Debug, Release, Heap Allocator, ASSERT, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
40. 
	My app works in Debug build, but crashes in Release. What's the 
difference between the two ?
	 
	This is a very common question that arises on the newsgroups and a lot 
of people don't fully understand the differences between debug and release 
builds, so it's sometimes wrongly answered. The differences fall into several 
camps, any one of which can kill you. So, presented in the order of most likely 
problem cause -> least likely, these are the major differences:
	 
	Heap Allocator
	  
	The debug Heap Allocator puts guard bytes around the memory for objects 
that you allocate on the heap (e.g. using "new"). If you write beyond the end 
of an object - a common error in C/C++ when people forget that arrays are 
indexed from zero and get their indexes off by one - then you will probably get 
away with it in debug mode, but in release mode you'll definitely cause 
corruption, and probably a crash sometime later.... just far enough later to 
completely confuse you as to the cause.
	 
	Whilst we're on the subject of array overwrites, a dead giveaway for a 
local (stack) variable overwrite, by the way, is the function that crashes when 
it returns. This happens because someone wrote past the end of an 
automatic-declared array and corrupted the stack frame. OK, end of 
digression.....
	 
	ASSERT Behaviour
	  
	Many C programming books tell you to "ASSERT the world". You typically 
put ASSERT statements in to sanity-check your code, such as checking that 
parameters have sensible values, and that handles are not null. Unfortunately, 
folks sometimes put code in an ASSERT that they shouldn't - code which is 
FUNCTIONAL in nature, i.e. active code for their app. To take an example:
	 
 ASSERT (OpenMyWindow () != NULL);
  
	instead of
	 
 hWND = OpenMyWindow();
 ASSERT (hWND != NULL);
  
	Code in an ASSERT is omitted in release builds, so if you wrote the 
first example, your window would open in debug mode, but not in release mode. 
This would be fairly obvious, but of cou ... (cont.)
Why won't the Compiler let me use a Class Member Function as a Callback ? [Compiler, Class Member Function, Callback, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
52. 
	Why won't the Compiler let me use a Class Member Function as a Callback 
?
	 
	You can't use normal non-static C++ class member functions as callbacks 
because there's an invisible parameter (this) required on the stack when 
calling such functions. Windows is fundamentally C based, and doesn't know 
anything about objects and "this" pointers, so the callbacks don't use them. In 
any case, how would the OS know what "this" to use, and what kind of "this" to 
point at ?
	 
	You can of course use a static member function or a simple global 
function as a callback, because they're not associated with a specific class 
instance, so no "this" is used when calling them. But hang on, what do you then 
do if you want to access class member variables or methods ? A static member 
function can't access a specific instance's members. Well, you have a number of 
options:
	 
	If you only ever have one object of this class, you can simply stick 
"this" in a global and dereference through that global pointer in your callback 
function to get to the class object.
	 
	But if you can have more than one instance, you need some way of 
mapping back to the correct value of this in the callback function, so read 
on...
	 
	Some API functions which use callbacks allow you to specify 
user-defined data which is then supplied back to your callback, so you can put 
a copy of "this" in that data and dereference it in your callback function. The 
multimedia timer function timeSetEvent is one example of such an API.
	 
	If the API you're using doesn't support user defined data, you'll have 
to invent your own mapping scheme using some other unique data (such as a 
window handle) to get back to "this". Every program is different in this 
respect, so I can't advise on the details.
Why doesn't my System Wide Hook capture all processes ? [System Wide Hook, Shared Section, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
4. 
	Why doesn't my System Wide Hook capture all processes ?
	 
	The usual reason for system-wide hooks not operating systemically is 
that an essential piece of data (usually, but not always retricted to the 
HHOOK) is not stored in a shared section, so each loaded instance of the DLL 
has a different value for the variable, and only one (in the address space of 
the initial loader app) has the right value and behaves as expected.
	 
	So, to create a Shared Section :
	 
	1. Use a pragma in your DLL code to specify the shared variables :
	 
 #pragma data_seg(".SHARDAT")
 HWND hWndMain = 0;
 HHOOK hKeyHook = NULL ;
 HHOOK hWndHook = NULL ;
 HHOOK hMsgHook = NULL ;
 BOOL bSomeFlagOrOther = FALSE;
 #pragma data_seg()
  
	Note that shared variables *MUST* be initialised.
	 
	2. Create a DEF file with the following in it :
	 
 SECTIONS
 .SHARDAT READ WRITE SHARED
  
	Where the section name matches that in your pragma above. If having a 
DEF file offends you, you can specify the section in a linker command parameter 
(see the docs for the linker).
How do I let the user Drag a window which has no Titlebar ? [Drag, Titlebar, WM_NCHITTEST, HTCAPTION, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
8. 
	How do I let the user Drag a window which has no Titlebar ?
	 
	There are several ways. One quick-n-dirty method is handle the 
WM_NCHITTEST message and return HTCAPTION for the places where you want the 
user to be able to drag (i.e., pretend your window has a caption when it 
doesn't).
	 
	For someone who wants to get nitty-gritty and cut the code themselves 
(and doesn't care about the inefficiencies involved), the code below 
demonstrates dragging using the right mouse button :
	 
 void CTestbed2Dlg::OnRButtonDown(UINT nFlags, CPoint point)
 {
    ClientToScreen (&point);
    m_LastPoint = point;
    m_bMoving = TRUE;
 }
 
 // ------------------------------------------------------------------------
 
 void CTestbed2Dlg::OnMouseMove(UINT nFlags, CPoint point)
 {
    RECT cr;
 
    ClientToScreen (&point);
 
    if (m_bMoving)
    {
       if ((point.x != m_LastPoint.x) ||
           (point.y != m_LastPoint.y) )
       {
          GetWindowRect (&cr);
 
          int iX = cr.left - (m_LastPoint.x - point.x);
          int iY = cr.top - (m_LastPoint.y - point.y);
          int iWidth = cr.right - cr.left;
          int iHeight = cr.bottom - cr.top;
 
          MoveWindow (iX, iY, iWidth, iHeight);
       }
       m_LastPoint = point;
    }
    else
       CDialog::OnMouseMove(nFlags, point);
 }
 
 // ------------------------------------------------------------------------
 
 void CTestbed2Dlg::OnRButtonUp(UINT nFlags, CPoint point)
 {
    if (m_bMoving)
       m_bMoving = FALSE;
    else
       CDialog::OnMButtonUp(nFlags, point);
 
Is there a way to redirect stdout to my application window ? [stdout, Pipe, CreatePipe(), Anonymous Pipe, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
10. 
	Is there a way to redirect stdout to my application window ?
	 
	This tip comes courtesy of Claire Sylvestre :
	 
	You can redirect the child process' output to your application through 
Pipes. You create a pipe, pass its output end to the CreateProcess function, 
and you read the child's output from the pipe's input end into a buffer. See 
doc on CreatePipe() and Anonymous Pipe Overview.
How do I make a window "Topmost" ? [SetWindowPos(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
14. 
	How do I make a window "Topmost" ?
	 
	Easy. One API call. This function wraps that API call for convenience, 
allowing you to make the window topmost, or remove the topmost attribute with a 
single call. Remember that topmost windows occupy their own z-order : so if you 
make A topmost, then B, window B will appear on top of window A.
	 
 BOOL MakeWindowTopMost (HWND hWnd, BOOL bTopMost)
 {
    if (hWnd)
    {
       return (SetWindowPos (hWnd,
                             (HWND) (bTopMost?HWND_TOPMOST:HWND_NOTOPMOST),
                             0,0,0,0,
                             SWP_NOMOVE | SWP_NOSIZE)) ;
    }
    else
       return FALSE ;
 }
 
How do I find out which Version of NT (server/workstation) I'm running on? [Version, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
17. 
	How do I find out which Version of NT (server/workstation) I'm running 
on?
	 
	You can find out if your system is a server or a workstation by reading 
the registry and checking this key:
	 
 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ProductOptions
  
	Look for the value "Product Type". There are three possible values :
	 
 "WinNT"   workstation
 "ServerNT"   server
 "LanmanNT"   domain controller
 
How do I find the default Web Browser application name ? [Web Browser, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
18. 
	How do I find the default Web Browser application name ?
	 
	Create a temporary .HTM file and use the API call FindExecutable to 
find the program associated with it. This trick works for all associated file 
types.
How do I find the current IP Address(es) of my machine ? [IP Address, GetComputerName(), gethostname(), gethostbyname(), WINSOCK2.H, Winsock, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
19. 
	How do I find the current IP Address(es) of my machine ?
	 
	You can use GetComputerName() (or gethostname()) and gethostbyname() 
(see WINSOCK2.H) for this. Remember that a computer can have more than one IP 
address - it can have multiple adapters, or be supporting extra addresses for 
RAS purposes.
	 
	Bear in mind that this code uses Winsock functionality, so a successful 
call to WSAStartup is a pre-requisite.
	 
 HOSTENT* phe ;
 char     szCpuName [128] ;
 DWORD    dwSize = sizeof(szCpuName);
 int      iaddr, ifield;
 UINT     uField;
 CString  csIpAddr;
 CString  csAddrField;
 
 if (GetComputerName (szCpuName, &dwSize) == 0)
 {
    wsprintf (szCpuName, "Can't get computer name, error %d",
    GetLastError ());
    AfxMessageBox (szCpuName);
 }
 else
 {
    phe = gethostbyname (szCpuName);
 
    if (phe != NULL)
    {
       for (iaddr=0; phe->h_addr_list[iaddr] != NULL; iaddr++)
       {
          csIpAddr = "";
 
          for (ifield=0; ifield h_length; ifield++)
          {
             if (ifield > 0)
                csIpAddr += ".";
 
             uField = ((BYTE*)phe->h_addr_list[iaddr])[ifield];
             csAddrField.Format("%u", uField);
             csIpAddr += csAddrField;
          }
          // Do what you want with the address here. I add it to a listbox.
          m_ctrlListbox.AddString (csIpAddr);
       }
    }
 }
 
I've created a 16x16 Icon for my app. Why does Windows insist on squishing up the 32x32 version ? [Icon, MFC, LoadIcon(), LoadImage(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
23. 
	I've created a 16x16 Icon for my app. Why does Windows insist on 
squishing up the 32x32 version ?
	 
	You've created an MFC app. Taking a dialog-based app as an example, 
look at the source for your main window(dialog) and check out the constructor. 
You'll see this:
	 
 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  
	But LoadIcon() can only load icons which are SM_CXICON x SM_CYICON 
pixels big, which is nearly always the 32x32 version. When it needs a 16x16 
version, such as for your titlebar, it squishes that up. Yuck. Instead, replace 
the code above with this :
	 
 m_hIcon = (HICON) LoadImage (AfxGetInstanceHandle(),
                              MAKEINTRESOURCE(IDR_MAINFRAME),
                              IMAGE_ICON,
                              16, 16,
                              LR_DEFAULTCOLOR);
  
	and lo, there shall be rejoicing in the land...
How do I allow the user to cancel a time-consuming operation ? [MFC, OnIdle(), PeekMessage(), Worker Thread, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
39. 
	How do I allow the user to cancel a time-consuming operation ?
	 
	Ooooh, this question comes up ALL the time...
	 
	It frequently happens that you wish to carry out a time-consuming 
operation, but allow the user to abort that operation at any time. Also you may 
wish to display the progress of the operation using a common-control progress 
bar. The problem arises when you implement this, and carry out your operation 
in a tight loop. While that loop is running, your machine is not processing 
("pumping") any messages, so your window doesn't receive WM_PAINT, preventing 
your progress bar from updating, and your user will be unable to push the 
Cancel/Abort button because you're not processing any WM_COMMAND messages.
	 
	There are a number of options open to you :
	 
	Add a timer and do a chunk of processing on each timer tick. The upside 
is it's simple to implement. The downsides are:
	 
	You may well waste a lot of time after the processing is done, waiting 
for the next tick.
	 
	You have to organise it so if the next tick occurs before you've 
finished the last block of processing, your algorithm doesn't screw up.
	 
	The application won't scale well to a faster processor.
	 
	Windows timers are notoriously inaccurate.
	 
	I think you'll agree that this approach basically sucks.
	 
	For MFC apps, perform a chunk of processing on each OnIdle() call. MFC 
calls OnIdle when there aren't any more messages to fetch from the queue. Can 
be tricky to get right, and again it requires you to break the processing into 
small chunks, which may not suit your algorithm.
	 
	Add a PeekMessage loop within your processing loop, calling it after 
each small chunk of processing. Here is a example of an MFC-friendly 
implementation of this technique :
	 
    while ()
    {
       
       MFC_Yield ();
    }
    .....
 }
 
 void CMyClass::MFC_Yield ()
 {
    MSG msg ;
 
    while (PeekMessage (&msg, 0, 0, 0, PM_NOREMOVE))
    {
       if (!(AfxGetApp()->PumpMessage() ... (cont.)
How do I stop the user resizing my window ? [WM_NCHITTEST, HT_NOWHERE, WM_GETMINMAXINFO, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
44. 
	How do I stop the user resizing my window ?
	 
	Three options :
	 
	Give the window a non-sizing (e.g. dialog) border. This is the best 
option as well as the simplest, because the appearance of the window reflects 
what you can do with it.
	 
	Handle the WM_NCHITTEST message and return HT_NOWHERE whenever the user 
is in a sizing portion of the border.
	 
	Handle WM_GETMINMAXINFO and adjust the ptMinTrackSize and 
ptMaxTrackSize values of the MINMAXINFO structure to be the same as the windows 
current size. You can use the same trick to allow resizing but enforce a 
minimum resize value.
How do I programmatically dismiss a Menu ? [Menu, WM_CANCELMODE, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
51. 
	How do I programmatically dismiss a Menu ?
	 
	This question most commonly arises when wanting to "time-out" a menu. 
You can usurp the processing that Windows itself does : when Windows puts up a 
dialog or disables a window, it sends a WM_CANCELMODE message to tell the 
window to abandon all modal activities like menus. So you can achieve the same 
effect by sending this message to yourself.
How do I constrain window resizing to always be square ? [WM_SIZING, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
53. 
	How do I constrain window resizing to always be square ?
	 
	You need to handle the WM_SIZING message. Here's some sample code in 
MFC style :
	 
 void CMyDlg::OnSizing(UINT fwSide, LPRECT pRect)
 {
    CDialog::OnSizing(fwSide, pRect);
 
    int iWidth = (pRect->right)-(pRect->left);
    int iHeight = (pRect->bottom)-(pRect->top);
 
    if (iWidth > iHeight)
    {
       pRect->bottom = pRect->top + iWidth;
    }
    else
    {
       if (iHeight > iWidth)
       {
          pRect->right = pRect->left + iHeight;
       }
    }
 }
 
How do I find out the Drive letters in use on a given system ? [Drive, GetLogicalDriveStrings(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
54. 
	How do I find out the Drive letters in use on a given system ?
	 
	This one's easy. You need to use the cunningly-named 
GetLogicalDriveStrings() API.
	 
 int iStrsLen;
 char smzDrives [(3+1)*26+1];
 char szDrive [3+1];
 int i;
 
 iStrsLen = GetLogicalDriveStrings (sizeof(smzDrives), smzDrives);
 
 if (iStrsLen == 0)
 {
    // Handle error
 }
 else
 {
    if (iStrsLen > sizeof(smzDrives))
    {
       // Buffer not big enough... eh? - I provided space for all 26 !?!
    }
    else
    {
       // Parse the returned multi-string array.
 
       i = 0;
       while (smzDrives[i])
       {
          strcpy (szDrive, &(smzDrives[i]));
 
          // szDrive now contains the root folder of this drive. I
          // put this in a listbox here:
 
          m_ctrlListbox.AddString (szDrive);
          while (smzDrives[i]) i++;
          i++;
       }
    }
 }
 
When I use a big (> 1MB) automatic-declared Array my app crashes. Why ? [Array, Linker, DEF, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
55. 
	When I use a big (> 1MB) automatic-declared Array my app crashes. Why ?
	 
	You've fallen victim to a problem that's rather poorly documented, but 
there IS a relevant knowledgebase article which I have reproduced in part below 
(Q97786). The default stack size is 1MB for a Win32 (non-CE) application, and a 
quick look at the the documentation would lead you believe that it can grow 
beyond that in units of 1 page, i.e. 4K at a time for x86 machines. But that's 
not always the case - see the paragraph I've highlighted below.
	 
	You can get around this by setting the stack reserve and/or commit 
values. In Visual C++ 6.0 this is done via Project ~ Settings ~ Link Tab ~ 
Category: Output. Change the Reserve value to something more appropriate and 
the problem should go away.
	 
	Q97786
	  
	The information in this article applies to:
	 
	Microsoft Win32 Application Programming Interface (API), included with:
	 
	Microsoft Windows NT, versions 3.1, 3.5, 3.51, 4.0
	 
	SUMMARY
	  
	By default, space is reserved for applications in the following manner:
	 
	1 megabyte (MB) reserved (total virtual address space for the stack)
	 
	1 page committed (total physical memory allocated when stack is created)
	 
	Note: The -stack linker option can be used to modify both of these 
values.
	 
	The default stack size is taken from the process default reserve stack 
size.
	 
	The operating system will grow the stack as needed by committing 1 page 
blocks (4K on an x86 machine) out of the reserved stack memory. Once all of the 
reserved memory has been committed, Windows NT will attempt to continue to grow 
the stack into the memory adjacent to the memory reserved for the stack, as 
shown in the following example on an x86 machine:
	 
 |||
  --------------------------------------------------------
 |    |                         |                         |
 | 4K | 1020K ...               | ...                     |
 |    |                         |                         |
  -- ... (cont.)
How do I determine that another machine is present on the Network? [Network, Network Neighborhood, NetServerEnum(), NetQueryDisplayInformation(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
61.
	How do I determine that another machine is present on the Network?
	 
	If you know the machine's IP address, you can always ping it of course. 
But let's assume you only know its name and the machine doesn't have TCP/IP 
installed. At first glance the obvious answer to this is the api NetServerEnum. 
But NetServerEnum suffers from a problem. If a machine has recently been 
switched off, NetServerEnum will see it as still present. Why? Because you're 
effectively querying the network browser, you have to wait until that realises 
a machine has gone from the network. That will take three announcement 
intervals, at not less than 12 minutes each by default. Oooer, that's a long 
time.
	 
	To see this behaviour, open up Network Neighborhood and switch a 
machine off. See how long it takes for the machine to disappear from the 
display. Warning, you might want to bring sandwiches and a hot drink for this 
experiment.....
	 
	OK, so how do we determine if a machine has really gone away? We 
obviously need to interact with the machine in some way. But what if the 
machine doesn't have a share, or we don't have administrator rights to access 
the admin shares? Fortunately, there's a way of doing this that doesn't rely on 
privileges, and it lies in the same part of the api as NetServerEnum(). It's 
called NetQueryDisplayInformation(). We treat the returned data from 
NetServerEnum as advisory only, then confirm it with 
NetQueryDisplayInformation. Take a look at the (rather long) code sample below. 
Note that this sample assumes it is being executed in an ANSI executable, and 
therefore being passed an ANSI target server name.
	 
 #define  SOME_REASONABLE_LIMIT  500
 
 DWORD CMyDlg::FindServer (const CString& rcsTarget, BOOL& bFound)
 {
    NET_API_STATUS nas ;
    NET_DISPLAY_MACHINE * pndm;
    SERVER_INFO_101 * pSI_101 ;
 
    DWORD dwEntriesRead;
    DWORD dwTotalEntries;
    DWORD dwRetVal = ERROR_SUCCESS;
    DWORD dwNdmCount;
 
    int   iNumServers;
    int   iServe ... (cont.)
How do I make accurate Timings under Win32 ? [Timing, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
65.  
	How do I make accurate Timings under Win32 ?
	 
	With difficulty :-) This is one of those unfortunate cases where the 
answer is hedged around with all sorts of OS-specific limitations and caveats.
	 
	Let's assume you need to measure time down to around a few 
milliseconds. The first point to make is that the approach you adopt depends 
upon whether you want to just measure time, or get a timely notification . If 
you just to want to know the elapsed time between two events in your code you 
can use QueryPerformanceCounter. There are some mathematical complexities 
around allowing for counter rollover, but essentially this will tell you the 
elapsed time you need. Another option is to get a class based upon the Pentium 
RDTSC instruction. You can download one from P.J.Naughter's page here
	 
	If you want a notification, things get more complex. There are the 
standard Windows timers documented under WM_TIMER, but these suffer from some 
problems:
	 
	Limit of accuracy is around 55ms under 95/98/ME, 10-15ms under NT/2000.
	 
	WM_TIMER messages can get "merged" because they're implemented as a 
flag inside the GetMessage function.
	 
	You need to run a message pump.
	 
	Alternatives are
	 
	- multimedia timers (see the help beginning with timeSetEvent) which 
will take you down to a theoretical resolution of 1ms.
	 
	- waitable timer objects (NT only - see the help for 
CreateWaitableTimer and also tip 16).
	 
	But there's a fly in this ointment - even NT is not a real-time OS, and 
kernel-mode software can tromp all over your best-laid plans. There are badly 
written drivers around that will disable interrupts at the drop of a hat, and 
all your carefully constructed code won't be worth a damn if the processor 
can't see the outside world anymore. Typically the culprits are flaky video 
drivers, but Microsoft's own ATAPI.SYS isn't above this kind of skullduggery. 
Don't believe me? try writing a little program that sets up multimedia timers 
and checks their accurac ... (cont.)
How can I get Debug information from my program in the field ? [Debug, OutputDebugString(), Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
5. 
	How can I get Debug information from my program in the field ?
	 
	A little history: I've been working in this industry since CP/M days, 
and have noticed that it seems an inescapable fact that a certain small 
percentage of bugs just don't show up in testing, they only ever show in the 
field with real users hitting on the system. This is especially true of 
real-time systems, which is the field I started in (embedded military stuff).
	 
	Once you accept this fact of life, you realize that for this class of 
bugs all the ASSERTs in the world aren't gonna help you because you're working 
with release builds, and you need something you can use in the field.
	 
	So, to take an example: I have a telephony system which is my current 
large project. the system is around a million lines, of which maybe 1/4 are 
mine. For the main call handling code I have bits embedded in the code which do 
something like this :
	 
 if (g_bDebugEnabled)
 {
    wsprintf (m_szDebug, "Mainfrm_LC: max WS=%d max units=%d",
              wMaxCallWS, byNoOfUnits);
    DebugMessage (m_szDebug) ;
 }
  
	where g_bDebugEnabled is a global flag set up from the registry and 
m_szDebug is a suitably large char array.
	 
	DebugMessage is the debug handler, which can be as simple or complex as 
you like, but would typically look something like this:
	 
 BOOL CMainFrame::DebugMessage (const char * pszString)
 {
    static char szLocalDebug [MAX_DEBUG_LENGTH+12] ;
 
    LRESULT litem ;
    time_t TimeNow ;
    struct tm * pTime ;
 
    if (!m_bStoppedData)
    {
       memset (szLocalDebug, 0, sizeof(szLocalDebug)) ;
 
       TimeNow = time (NULL) ;
       pTime = localtime (&TimeNow) ;
       strftime (szLocalDebug, 12, "%H:%M:%S >", pTime) ;
       strcat (szLocalDebug, pszString) ;
 
       SendDlgItemMessage (IDC_DEBUG_MSGLIST,
                           LB_ADDSTRING,
                           0,
                           (LPARAM) (LPSTR) szLocalDebug) ;
 
       if (m_bCopyToDbwin)
       ... (cont.)
What is "Hungarian" notation ? [Hungarian Notation, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
24. 
	What is "Hungarian" notation ?
	 
	Hungarian Notation was invented by Charles Simonyi (a Microsoft 
employee of Hungarian extraction) and presented in his thesis on 
meta-programming. Essentially it consists of a naming convention whereby the 
items named have information about them encoded in their names - hence 
"meta-programming". This allows you to do visual type checking, and eliminates 
a lot of the up-down flick reading required in C code to get from variable 
declaration to variable usage (free variable declaration in C++ eliminates much 
of this, but there's all that legacy code to consider).
	 
	Where I part company from Simonyi and MS is the degree to which he/they 
use the notation in a problem-domain way rather than a language-domain way. For 
instance, take a look at some MS source code : you'll see counter always 
referred to with the prefix 'n' (which simply means a counter in pure 
Hungarian), irrespective of whether that counter is declared as an int, an 
unsigned int, a BYTE, whatever. Similarly, f - meaning flag - may be used to 
mean a simple BOOL or a UINT array of binary bits. This allows the underlying 
type to be re-declared without changing the code (not something you do very 
often) but throws away at a stroke the advantages of visual type-checking (I 
read code every day).
	 
	This is the way I use Hungarian :
	 
	_
	  
	The scope prefix is omitted for local-scope variable. So for example :
	 
	iCounter Integer counter, local scope
	 
	aiSalesFigures An array of integers representing regional sales 
figures, at local scope.
	 
	g_dwLbIndex DWORD listbox index, with app-global scope
	 
	mg_byOffset A BYTE offset with module-global scope
	 
	m_byMachineNo A class member variable which is a byte containing a 
machine number
	 
	szCustomerName A zero-terminated string containing a customer name, 
local scope.
	 
	I cannot understand why any professional programmer would refuse to use 
Hungarian, but many do. This mystifies me. Take a look  ... (cont.)
I want to be a superstar Win32 programmer, Bob. Which books should I read ? [Win32, Article, Visual C++] www.mooremvp.freeserve.co.uk 20-Sep-2001 by Bob Morre
27. 
	I want to be a superstar Win32 programmer, Bob. Which books should I 
read ?
	 
	There are three books which must be on the bookshelf of any Win32 
programmer :
	 
	Charles Petzold Programming Windows 95 Understand the underpinnings of 
Windows, particularly the messaging system.
	 
	Jeffrey Richter Advanced Windows Understand processes and threads 
properly.
	 
	Marshall Brain Win32 System Services Goes beyond Richter.
	 
	These are pretty obvious, and each is a classic in its field. But here 
are some others you owe it to yourself to read. Trust me, I know whereof I 
speak:
	 
	Steve McConnell Code Complete The best book written on software 
development..... ever. Worth buying for the chapter on optimization alone.
	 
	Jon Bentley Programming Pearls Oldie but goldie. The examples given 
seem jurassic, but stick with it. There are indeed pearls in here.
	 
	Donald A Norman The Psychology of Everyday Things The seminal work on 
how humans interact with the world, this book will change the way you look at 
the objects and systems you use.
	 
	Fred Brooks The Mythical Man Month Essential reading for anybody who 
aspires to team leadership or management (of course if you DO ever end up in 
management, having read this will do you no good because you have your brains 
sucked out as a required part of the induction process).
	 
	Robert Sedgewick Algorithms More manageable than Knuths multi-volume 
behemoth, and available in versions with examples in different computer 
languages. Guess who bought the Pascal version by mistake?
	 
	If you're using MFC, you should take a look at Jeff Prosise' book - I 
believe the title is "Programming Windows 95 with MFC". I haven't read it 
myself, but others whose opinions I respect have recommended it regularly.
Exporting a Registry Key (using: Windows NT 4.0) [Registry, Tip, Windows NT] www.microsoft.com 19-Sep-2001
Exporting a Registry Key
To export a key from the registry in ANSI format, use the /a switch: 
regedit /a  "" 

For example, the following command exports the HKEY_LOCAL_MACHINE\Software key 
in ANSI format from the hklm.reg file: 
regedit /a c:\hklm.reg "HKEY_LOCAL_MACHINE\Software"
Rich Text to plain text conversion with Formula (using: Lotus Notes 5) [Formula, Lotus Notes, Tip, @Abstract] www.searchdomino.com 12-Sep-2001 by Sudarshan Kulkarni
Rich Text to plain text conversion with Formula

Sudarshan Kulkarni 
12 Sep 2001, Rating 2.67 (out of 5)

On Web applications, it is often required to get user input as big chunk of 
text (Such as Comments of feedback form). A rich-text box can be used with 
"Display using HTML." For displaying purpose, it might be necessary to convert 
the so-called Rich Text back to plain text.
 
Steps :

1. Add Rich text field to form (Say "MyField")
2. Add another Plain text field to the form (Say "MyTextField"), set the Type 
as "Text" and "Computed"
3. Select the property to hide the "MyTextField" from Notes client and Web 
browsers.
4. In Programmers pane, set the value for "MyTextField" as 
@Abstract([TextOnly];512;" ";"MyField");

Done! Use the "MyTextField" throughout the application. It will have plain text 
equivalent of "MyField".
Locking documents to prevent save conflicts (using: Lotus Notes 5) [Lotus Notes, LotusScript, Save Conflict, Tip] www.searchdomino.com 04-Sep-2001 by Savithri Ravichandran
Locking documents to prevent save conflicts

Savithri Ravichandran 
04 Sep 2001, Rating 3.20 (out of 5)

This piece of code assigns edit lock to the first user who opens the document. 
When other users try to open the same document, they get a message saying 
"Document is locked by X" and a read-only copy is opened for them. They will 
not be able to edit the document until the lock is released by the first user.

A manually run agent to unlock the document can be provided for Domino Admin in 
case of system crash.


Form should have a hidden field called "Lock" of type Text (Editable)

Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, 
Continue As Variant)
	If (Source.IsNewDoc) Then
		Exit Sub
	End If   'New Doc, Lock not reqd
	Dim varLock As Variant
	Dim session As New NotesSession
	Dim nnUserName As New NotesName(session.UserName)
	Set docBackend=Source.document
	varLock=docBackend.GetItemValue("Lock")
	If (varLock(0) <> "") Then
		Msgbox ("Document is currently locked by "+varLock(0)+". A 
read-only copy will be opened for your use.")
		Exit Sub
	End If
	docBackend.Lock=nnUserName.Common
	Call docBackend.Save(True,True)
End Sub

'When user trys to edit, check if he/she has the lock

Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
	If Source.FieldGetText("Lock")<>"" Then
		Dim session As New NotesSession
		Dim nnUserName As New NotesName(session.UserName)
		If (Strcomp(nnUserName.Common,Source.FieldGetText("Lock"),5)=0) 
Then
			continue=True
		Else
			Msgbox("Sorry, you are in read-only mode ! This 
operation cannot be performed. This document is currently used by 
"+Source.FieldGetText("Lock"))
			continue=False
		End If
	End If
End Sub

'Release the lock when the user with the lock closes the document

Sub Queryclose(Source As Notesuidocument, Continue As Variant)
	If strNewDoc="New" Then  '(exit if it's a new doc.Set this variable to 
New in postopen if it's a new doc)
		Exit Sub
	End If
	
	Dim ses ... (cont.)
Creating a Canonical String with UrlCanonicalize (using: Visual Basic 6.0) [SHLWAPI.DLL, URL, Canonical String, Visual Basic, Tip] www.vbnet.com 27-Aug-2001 by Randy Birch
Creating a Canonical String with 
UrlCanonicalize	
	

 Prerequisites
Shlwapi.dll version 5.00 or greater, Windows 2000, Windows NT4 with IE 5 or 
later, Windows 98, or Windows 95 with IE 5 or later. 

Another of the Shell Lightweight Utility APIs, UrlCanonicalize takes a URL 
string and converts it into canonical form. The function will do such tasks as 
replacing unsafe characters with their escape sequences and collapsing 
sequences like "..\..." (as shown in the first three text boxes). The pszUrl 
member takes either a URL string, which must include a valid scheme such as 
"http://", or a remote or local file name. pszCanonicalized holds the returned 
null-terminated string for the URL. 
If a URL string contains '/../' or '/./', UrlCanonicalize will normally treat 
the characters as indicating navigation in the URL hierarchy. The function will 
simplify the URLs before combining them. For instance "/hello/cruel/../world" 
will be simplified to "/hello/world". If the URL_DONT_SIMPLIFY flag is set in 
dwFlags, the function will not simplify URLs. In this case, 
"/hello/cruel/../world" will be left as is.
Specific flags are provided to customize the behaviour of UrlCanonicalize: 



Flag

Description
URL_DONT_SIMPLIFY

Treat '/./' and '/../' in a URL string as literal characters, not as shorthand 
for navigation. See Remarks for further discussion. 
URL_ESCAPE_PERCENT 

Convert any occurrence of '%' to its escape sequence..
URL_ESCAPE_SPACES_ONLY

Replace only spaces with escape sequences. This flag takes precedence over 
URL_ESCAPE_UNSAFE, but does not apply to opaque URLs. 
URL_ESCAPE_UNSAFE 

Replace unsafe values with their escape sequences. This flag applies to all 
URLs, including opaque URLs.
URL_PLUGGABLE_PROTOCOL 

Combine URLs with client-defined pluggable protocols, according to the W3C 
specification. This flag does not apply to standard protocols such as ftp, 
http, gopher, and so on. If this flag is set, UrlCombine will not simplify 
URLs, so there is ... (cont.)
Encoding and Decoding URL Escape Characters (using: Visual Basic 6.0) [SHLWAPI.DLL, URL, Visual Basic, Tip, Escape Character] www.vbnet.com 27-Aug-2001 by Randy Birch
Encoding and Decoding URL Escape Characters	
  	  

 Prerequisites
Shlwapi.dll version 5.00 or greater, Windows 2000, Windows NT4 with IE 5 or 
later, Windows 98, or Windows 95 with IE 5 or later. 

Part of the Windows shell provides a series or Shell Lightweight Utility APIs 
to target specific shell functionality. UrlEscape and UrlUnescape are used to 
encode (and decode) a URL containing escape sequences, converting unsafe 
characters, such as spaces, into their corresponding escape sequences. Unsafe 
characters are those characters that may be altered during transport across the 
internet. UrlEscape converts unsafe characters into their equivalent "%xy" 
escape sequences; UrlUnescape converts them back. 
When a URL containing spaces or other escape characters is passed to UrlEscape, 
the returned string has the escape characters inserted into the string. A URL 
that might contain unsafe spaces, such as  "\vbnet code library\" is converted 
to the browser-kind "\vbnet%20code%20library\".  Passing an encoded string to 
UrlUnescape converts the escape characters back to user-friendly form.  
Several flags are provided to customize the behaviour of UrlEscape and 
UrlUnescape:  



Flag

Description

Applies To
URL_ESCAPE_SPACES_ONLY

Only escape space characters. This flag cannot be combined with 
URL_ESCAPE_PERCENT or URL_ESCAPE_SEGMENT_ONLY.

UrlEscape
URL_ESCAPE_PERCENT

Escape the % character. By default, this character is not escaped.

UrlEscape
URL_ESCAPE_SEGMENT_ONLY

Escape the sections following the server component, but not the extra 
information sections following a # or ? character.

UrlEscape
URL_DONT_ESCAPE_EXTRA_INFO

Don't convert the # or ? character, or any characters following them in the 
string.

UrlEscape, UrlUnescape
URL_UNESCAPE_INPLACE

Use pszURL to return the converted string instead of pszUnescaped.

UrlUnescape

The string passed to UrlEscape and UrlUnescape can be any URL or file string; 
they do not require a http:// or file ... (cont.)
Retrieving the Constituent Parts of a URL (using: Visual Basic 6.0) [SHLWAPI.DLL, URL, Visual Basic, Tip] www.vbnet.com 27-Aug-2001 by Randy Birch
Retrieving the Constituent Parts of a URL	
  	  
  	  

 Prerequisites
Shlwapi.dll version 5.00 or greater, Windows 2000, Windows NT4 with IE 5 or 
later, Windows 98, or Windows 95 with IE 5 or later. 

UrlGetPart takes a URL string and returns a portion of the string based on the 
parameter passed as the dwPart member of the call. The illustration shows the 
result of a series of calls to UrlGetPart. The Source URL contains pretty well 
the most you'll find in a single URL - a username and password, the host and 
port, the path too the data, and additional information as parameters - AKA the 
query portion. 
By calling UrlGetPart once for each part of interest, the separate parts making 
up the whole are returned. When the URL_PARTFLAG_KEEPSCHEME flag is specified, 
each part is returned prefaced by the scheme name for the URL.

 BAS Module Code
None.



 Form Code

To a form add a command button (Command1) and six text boxes (Text1 through 
Text6) along with the following code:

Option Explicit
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Copyright ©1996-2001 VBnet, Randy Birch, All Rights Reserved.
' Some pages may also contain other copyrights by the author.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' You are free to use this code within your own applications,
' but you are expressly forbidden from selling or otherwise
' distributing this source code without prior written consent.
' This includes both posting free demo projects made from this
' code as well as reproducing the code in text or html format.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Const MAX_PATH       As Long = 260
Private Const ERROR_SUCCESS  As Long = 0

Private Const URL_PART_SCHEME As Long = 1
Private Const URL_PART_HOSTNAME As Long = 2
Private Const URL_PART_USERNAME As Long = 3
Private Const URL_PART_PASSWORD As Long = 4
Private Const URL_PART_PORT As Long = 5
Private Const URL_PART_QUERY As Long = 6

Private Const  ... (cont.)
Creating a Local URL from a DOS Path (using: Visual Basic 6.0) [Path, SHLWAPI.DLL, Tip, URL, Visual Basic] www.vbnet.com 27-Aug-2001 by Randy Birch
Creating a Local URL from a DOS Path	

 Prerequisites
Shlwapi.dll version 5.00 or greater, Windows 2000, Windows NT4 with IE 5 or 
later, Windows 98, or Windows 95 with IE 5 or later. 

UrlCreateFromPath, one of the Shell Lightweight Utility APIs, takes a a DOS 
path and converts it to a canonicalized URL.  The function only works on paths 
that do not have an http:// prefix, returning strings suitable for use in a web 
page to access files on a specific machine. The DOS file path can reference a 
remote machine either by host name or by IP address. Where the file required 
conversion of spaces to escape characters, UrlCreateFromPath handles this chore 
automatically. 

 BAS Module Code
None.



 Form Code

To a form add a command button (Command1) and six text boxes (Text1 through 
Text6) along with the following code:

Option Explicit
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Copyright ©1996-2001 VBnet, Randy Birch, All Rights Reserved.
' Some pages may also contain other copyrights by the author.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' You are free to use this code within your own applications,
' but you are expressly forbidden from selling or otherwise
' distributing this source code without prior written consent.
' This includes both posting free demo projects made from this
' code as well as reproducing the code in text or html format.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Const MAX_PATH                   As Long = 260
Private Const ERROR_SUCCESS              As Long = 0

Private Declare Function UrlCreateFromPath Lib "shlwapi" _
   Alias "UrlCreateFromPathA" _
  (ByVal pszPath As String, _
   ByVal pszUrl As String, _
   pcchUrl As Long, _
   ByVal dwReserved As Long) As Long


Private Sub Form_Load()

   Text1.Text = "http://vbnet code lib/net code/../ip address.htm"
   Text1.Text = "c:\my documents\vbnet articles\random access.doc"
   Text2.Text = ""
   Text3.Text = "c ... (cont.)
I keep getting "undeclared identifier" compilation failures, even though I've included all necessary headers as far as I can see. (using: Visual C++ 6.0) [Compiler, VC_EXTRALEAN, stdafx.h, Precompiled Header, Visual C++, Tip] www.vbnet.com 27-Aug-2001 by Randy Birch
I keep getting "undeclared identifier" compilation failures, even though 
     I've included all necessary headers as far as I can see. Why ? 

	Reason #1
	Look at your STDAFX.H file. You will see the line
	#define VC_EXTRALEAN
	there. This excludes whole sections of Win32 functionality, including the 
serial comms stuff. Comment it out and rebuild.
	 
	Reason #2
	Certain functions are only included if the target operating system is WinNT, 
and even then only if it's NT4 (or later). Put the line
	#define _WIN32_WINNT 0x0400
	at the _top_ of your STDAFX.H to force the compiler to include the excluded 
functions.
	CreateWaitableTimer is a good example of the functions that behave like this, 
and it commonly comes up in this context on the newsgroups. You can see the 
exclusion if you look in WINBASE.H where it's declared.
	 
	Reason #3 (courtesy of Joseph Newcomer)
	You have done the following:
	#define _whatever
#include "stdafx.h"
	in some module, where the symbol _whatever is one of the symbols that causes 
certain names to be defined by including windows.h. But in spite of this, the 
symbols you want are still undefined. Why? Because of precompiled
headers. The symbols available to your compilation are made available based on 
the precompiled header which is in turn based on the compilation of stdafx.h. 
If the symbols were not visible at that compilation, changing the #define 
symbols in other modules will have no effect. Go back and add the #define to 
your compilation of stdafx.h.
Concatenating two arrays/strings with Trim and Unique option (using: Lotus Notes 5) [Array, Concatenate, Lotus Notes, LotusScript, String, Tip] www.searchdomino.com 27-Aug-2001 by Saravanan
Concatenating two arrays/strings with Trim and Unique option

Saravanan C 
27 Aug 2001, Rating 4.08 (out of 5) Hall of fame tip of the month winner

This function is used to concatenate two arrays or strings and returns the 
concatenated values based on the filter options specified. The filter options 
are 
1. Trim the null entries
2. Unique entry

The filter option specified can be any one them or both. If none of the above 
action is specified, then the concatenated values will be returned as it is. 
The 'ConcatArray' is the main function which in turn calls 2 other functions 
'TrimArray' and 'Unique'. 

A sample code to use this function:

Sub Click(Source As Button)
	Const PARAM_NULL = ""
	Const PARAM_TRIM = 1
	Const PARAM_UNIQUE = 2
	
	Dim Array1(3) As Variant
	Dim Array2(1) As Variant
	Dim array3 As Variant
	
	Array1(0) = "List1"
	Array1(1) = "List2"
	Array1(2) = ""
	Array1(3) = "List4"
	
	Array2(0) = "List1"
	Array2(1) = "List3"
	
	Array3 = ConcatArray(Array1, Array2, PARAM_TRIM + PARAM_UNIQUE)
	
	Forall item In Array3
		Msgbox Item, 0 , "ConcatArray"
	End Forall
	
	Array3 = ConcatArray("Hello", Array2, PARAM_TRIM)
	
	Forall item In Array3
		Msgbox Item, 0 , "ConcatArray"
	End Forall
	
	Array3 = ConcatArray("Hello", "World", PARAM_TRIM)
	
	Msgbox Array3, 0 , "ConcatArray"
End Sub 


Code


Function ConcatArray ( vArray1 As Variant, vArray2 As Variant , Byval iOption 
As Integer) As Variant 
	' Author:  C.Saravanan	
	' Purpose : This function is used to concatenate two arrays/strings. It 
has options to trim or unique the resultant value.
	Const PARAM_NULL = ""
	Const PARAM_TRIM = 1
	Const PARAM_UNIQUE = 2
	
	Dim vFinalList () As Variant 
	Dim iFListIdx As Integer
	Dim strValues As String
	
	ConcatArray = PARAM_NULL
	
	strValues = ""
	If Not Isarray(vArray1 )  And  Not Isarray(vArray2 ) Then
		ConcatArray = Cstr(vArray1) + Cstr(vArray2)
	Else
		If Not Isarray(vArray1) Then
			Redim vFinalList(Ubound(vArray2)+1)
			For iFListIdx = L ... (cont.)
How to syncronize your clock in Windows 2000 and how to add a custom time zone (using: Windows 2000) [Time, Time-zone, NTP, Windows 2000, Article] www.pinnaclepublishing.com 09-Aug-2001
If you use W2K, you can keep your system time always in 
sync with Universal Time by issuing the following at the 
command prompt:

"NET TIME /SETSNTP:" 

You then need to ensure that the Windows time service is 
set to automatically run on boot. See 
http://msdn.microsoft.com/library/en-us/dnw2kmag01/html/TimeWin2K.asp
for more details.

(Note: I use ntp.demon.co.uk for my public ntp server.)

* There are those of us who, for reasons best known only 
to ourselves, like to set the clocks around us 5 - 10 
minutes faster than the time that everybody else seems to 
use. My wife's bedside, kitchen, bathroom, watch, car, 
development computer, laptop, and PocketPC clocks all 
deliberately run at slightly different offsets to GMT -- 
and even to each other! Her rationale is presumably 
logical, but it confuses the heck out of me. However, as 
network administrator of the machines connected to our 
development network, I can't have machines with times all 
over the show, particularly when trying to resolve 
network issues in several eventlogs The solution that I 
found is to create new time zones for her, and so the 
displayed time on her machines comes from the regional 
settings applet, although the underlying clock is 
perfectly synced against a public NTP server as above. 
You can create new time zones using the time zone editor 
tool that comes with the various OS resource kits. 
Alternatively, you could look at 
http://support.microsoft.com/support/kb/articles/Q289/5/02.ASP 
and deduce all you need to know about how to create a new 
time zone. 

If you want/need to create a time zone that is 1-59 
minutes faster than GMT, you will probably need to resort 
to the Registry route even if you have the time zone 
editor tool as the tool will not directly let you create 
a zone faster than GMT by anything less than one hour 
faster. (This is only a limitation of the editing tool).

WARNING: TAKE EXTREME CARE WHEN MODIFYING THE REGISTRY. 
INVAL ... (cont.)
Change Time Zone Information Using Visual Basic (using: Visual Basic 6.0) [GetVersionEx(), OSVERSIONINFO, Registry, SYSTEMTIME, Time-zone, TIME_ZONE_INFORMATION, Visual Basic, Article] www.microsoft.com 09-Aug-2001


SUMMARY
It is sometimes necessary to programmatically change the time zone for the 
system where the application is running. This article demonstrates this 
technique. 

MORE INFORMATION
The way to implement this effect is as follows: 

1. Determine which time zone you would like to change to. 

2. Find the key in the registry that contains the information needed to fill 
the TIME_ZONE_INFORMATION structure. 

3. Read in that information and load the values into a variable of type 
TIME_ZONE_INFORMATION. 

4. Call the SetTimeZoneInformation API, passing it the TIME_ZONE_INFORMATION 
struct variable. 

The location in the registry that contains time zone information differs 
between Windows 9x and Windows NT/Windows 2000.

For Windows NT and Windows 2000, it is located at: 
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones
For Windows 9x, it is located at: 
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Time Zones
The Time Zone key names differ between Windows NT, Windows 2000, and Windows 9x 
as well because Windows NT and Windows 2000 append the string "Standard Time" 
to the different keys whereas Windows 9x does not.

For example:

In Windows NT and Windows 2000, you would see this key:
Pacific Standard Time
while in Windows 9x, you would see this key:
Pacific
The registry location where the current Date/Time settings can be found is: 
HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

Step-by-Step Example
The code sample below requires a form with a listbox. The listbox is loaded 
with the possible time zone values that the user can select with a double-click 
to change the time zone. It will show a messagebox that, once dismissed, will 
change the system settings back to their original values.

1. Create a new Standard EXE project. Form1 is created by default.

2. Add a Listbox control to Form1.

3. Add the following code to the General Declarations section of Form1:

Option Explicit

' Operating System version information declares ... (cont.)
How to Run Control Panel Tools by Typing a Command (using: Windows NT 4.0) [Control Panel Applet, RUNDLL32.EXE, Tip, Windows NT] www.microsoft.com 27-Jun-2001


To run a Control Panel tool in Windows, type the appropriate command in the 
Open box or at a command prompt. 

NOTE: If you want to run a command from a command prompt, you must do so from 
the Windows folder. Also, note that your computer may not have all of the tools 
listed in this article, as your Windows installation may not include all of 
these components. 
   Control panel tool             Command
   -----------------------------------------------------------------
   Accessibility Options          control access.cpl
   Add New Hardware               control sysdm.cpl add new hardware
   Add/Remove Programs            control appwiz.cpl
   Date/Time Properties           control timedate.cpl
   Display Properties             control desk.cpl
   FindFast                       control findfast.cpl
   Fonts Folder                   control fonts
   Internet Properties            control inetcpl.cpl
   Joystick Properties            control joy.cpl
   Keyboard Properties            control main.cpl keyboard
   Microsoft Exchange             control mlcfg32.cpl
      (or Windows Messaging)
   Microsoft Mail Post Office     control wgpocpl.cpl
   Modem Properties               control modem.cpl
   Mouse Properties               control main.cpl
   Multimedia Properties          control mmsys.cpl
   Network Properties             control netcpl.cpl
                                  NOTE: In Windows NT 4.0, Network
                                  properties is Ncpa.cpl, not Netcpl.cpl
   Password Properties            control password.cpl
   PC Card                        control main.cpl pc card (PCMCIA)
   Power Management (Windows 95)  control main.cpl power
   Power Management (Windows 98)  control powercfg.cpl
   Printers Folder                control printers
   Regional Settings              control intl.cpl
   Scanners and Cameras           control sticpl.cpl
   Sound Properties               control mmsys.cpl sounds
   System Properties              control sys ... (cont.)
Process Selected Documents in the Order They Are Sorted in a View (using: Lotus Notes 5) [Agent, Lotus Notes, Pager, Tip, View] www.searchdomino.com 14-Jun-2001 by Alan Lepofsky
Process Selected Documents in the Order They Are Sorted in a View

Alan Lepofsky 
14 Jun 2000, Rating --- (out of 5)

If you have several documents in a view, and you want to perform and action on 
a select few of them, in the order they appear in the view, what is the best 
way to go about it? 

 
 
 
In the R4 world an agent would process a document collection in the order of 
their UNID, not in the order they appeared in a view. In R5, the ViewEntry 
class was added that would allow you to process documents in the order they 
appeared in a view, but what if you do not want to process ALL the documents in 
the view, how do you process just a collection of selected documents? 

A technique I use a lot is to create a hidden folder named "temp", that is 
designed with the first column sorted in the same order as the view you are 
selecting documents from. (example: name or date) Then when the user selects 
the document this wish to perform some action on, the documents are moved into 
this folder, they are all placed in a collection, then the collection is acted 
upon in sorted order. When the agent completes, the document are removed from 
the hidden folder. 



Code


Sub Initialize
' Create a document collection from selected docs
' Move doc collection to a folder
' Process items in the folder as a view entry
' Remove from folder 

Dim ws As New NotesUIWorkspace 
Dim session As New NotesSession 

Set db = session.CurrentDatabase
If (db Is Nothing) Then Goto endofsub
Set dc = db.UnprocessedDocuments ' gets a handle on the documents you selected
Call dc.PutAllInFolder( "temp" ) ' moves those selected documents into a folder
Set view = db.GetView("temp")
Set vc = view.AllEntries ' gets a handle on all the documents in the folder
Set entry = vc.GetFirstEntry()
Set doc = entry.Document
....
.... 

' place the code for the action you want to take on each document here
... 
... 
Set entry = vc.GetNextEntry(entry)
If Not (entry Is Nothing) Then 
Set doc = entry.Do ... (cont.)
Universal change field agent (using: Lotus Notes 5) [Agent, Field, Lotus Notes, Tip] www.searchdomino.com 11-Jun-2001 by Sieward Bosch
Universal change field agent
Sieward Bosch 
11 Jun 2001, Rating 3.56 (out of 5)
This tip will perform the following functions:
-select one or more documents (same form) 
- agent gets all the fields in the form and presents them alphabetically in an 
inputbox
- choose a field
- enter the new value of that field
- agent changes the fieldvalue for all selected documents
Only a few errors are anticipated. In most cases when an error occurs the agent 
stops. It is imperative that you know what you are doing, otherwise this agent 
can do a lot of damage. 
Sub main
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim dc As NotesDocumentCollection
	Dim doc As NotesDocument
	Dim form As Notesform
	Dim formvariant As Variant
	Dim FieldCounter As Integer
	
	Set db=session.CurrentDatabase
	Set dc=db.UnprocessedDocuments 'select all selected documents
	FieldCounter = 0
	
	If dc.count=0 Then ' no documents selected
		Msgbox "No documents selected" 'display error message
		Exit Sub ' end script
	Else 'at least 1 document has been selected
		Set doc = dc.GetFirstDocument ' get first document from 
NotesDocumentCollection
		formvariant = doc.form(0) 'get the name of the form
		Set form = db.GetForm(formvariant) ' set form
	End If
	
	Dim itemType As Integer ' 768=numeric , 1024=datetime ,  
1280=text
	Dim item As NotesItem
	Dim Veldtype As String
	
	Forall field In form.Fields 'get all fields in the form
		FieldCounter = FieldCounter + 1
		Redim Preserve FieldGroup(FieldCounter-1) 'keep the values 
in the array
		Set item = doc.GetFirstItem( Field )
		itemType = item.Type ' 768=numeric , 1024=datetime ,  
1280=text
		
		Select Case itemType
		Case 768 : Veldtype="Num"
		Case 1024 : Veldtype="Dat"
		Case 1280 : Veldtype="Txt"
		Case Else : Veldtype="???" 
		End Select
		
		FieldGroup(FieldCounter-1) = Field + "   " + Veldtype ' 
example "FIELDNAME   Txt"
	End Forall
	
' sort the array alphabetically 
	Dim swapped As Integer
	Dim LoopCounter As Integer
	Dim tem ... (cont.)
Document tracking number based on date (using: Lotus Notes 5) [Document, Formula, Lotus Notes, Tip] www.searchdomino.com 04-May-2001 by Kamal AbdulHakim
Document tracking number based on date

Kamal AbdulHakim 
04 May 2001, Rating 3.36 (out of 5)

This formula will generate a unique number according to the exact time the form 
is created.

 
 
 
I take a few unique numbers and include a date/time set of numbers to make a 
fully unique set of number/date/time numbers.

The extra unique numbers are included to distinguish documents that are created 
at exactly the same time.

Example: KA4-54133723-CS7
KA4-(random set)
5(month)
4(day)
13(hour)
37(minutes)
23(seconds)
-CS7(another random set)

Add this code to a computed when composed field. Work on the web also.



Code


REM "ADD THIS CODE TO A COMPUTED WHEN COMPOSED FIELD"
un1 := @Text(@Left(@Unique;3));
un2 := @Text(@Right(@Unique;3));
m:=@Text(@Month(@Now));
d:=@Text(@Day(@Now));
h:=@Text(@Hour(@Now));
min:=@Text(@Minute(@Now));
s:=@Text(@Second(@Now));
un1+"-"+m+d+h+min+s+"-"+un2
Change field values from a view (using: Lotus Notes 5) [Document, Formula, Lotus Notes, Tip, View] www.searchdomino.com 13-Apr-2001 by Ken Pespisa
Change field values from a view

Ken Pespisa  
13 Apr 2001, Rating 2.05 (out of 5)

Ever need to change a few values in a document that can't be changed via the 
form because the fields are not there or are set to hidden or computed? Usually 
this means we have to open designer and write an agent to change the values. 
This tip explains how to setup a smart icon that lets you change any field's 
value right from the view without creating an agent.

 
 
Put the code below into a smart icon's action formula. When you have a document 
selected and click the smart icon, a dialog box will popup letting you choose 
from a list of fields inside the document. Select a field and the next dialog 
box shows you the current value, which you can then edit. As a bonus, if you 
type in @Delete as the value, the field will be removed from the document.

Note this always changes the value to a text field, so be careful not to change 
any number or time/date fields.

By the way, you can input multi-values by separating each value with a 
semicolon.


REM "Change Field Values From A View";

tmpFields := @DocFields;
tmpLastFieldChosen := @Environment("SI_LastFieldChosen");

tmpChangeField := @Prompt([OKCANCELLIST]; "Change Field"; "Please choose the 
field whose value you'd like to change"; tmpLastFieldChosen; tmpFields);

REM"Save State"; @SetEnvironment("SI_LastFieldChosen"; tmpChangeField);

tmpValue := @Prompt([OKCANCELEDIT]; "New Value"; "Please enter the new value 
for the field or type @Delete to delete the field."; @Abstract([TextOnly]; 200; 
""; tmpChangeField));

@If(tmpValue = "@Delete"; @SetField(tmpChangeField; @DeleteField); 
@SetField(tmpChangeField; @Trim(@Explode(tmpValue; ";"))))
How to remove the ReadOnly attribute from all the files in a directory and all the files in all of that directory's subdirectories (using: Visual Basic 6.0) [DOS, File Attribute, Visual Basic, Tip] www.pinnaclepublishing.com 06-Apr-2001
Reader Rick Rothstein writes: "A question came up 
recently on one of the newsgroups I volunteer answering 
question on which asked how to remove the ReadOnly 
attribute from all the files in a directory and all the 
files in all of that directory's subdirectories. The 
common answer from other volunteers offered either
direct code or advice on recursion routines to do the 
necessary subdirectory visitations. I chose a different 
path and offered to let DOS do all of the dirty work. The 
DOS Attrib command already has that functionality built 
in via the optional "/s" argument. Here's the code I 
posted:

Sub RemoveReadOnly(TopLevelDirectory As String, _
       Optional RecurseSubDirectories As Boolean)
  Dim Recurse As String
  If Right$(TopLevelDirectory, 1) <> "\" Then
    TopLevelDirectory = TopLevelDirectory & "\"
  End If
  On Error GoTo Whoops
  If (GetAttr(TopLevelDirectory) And _
       vbDirectory) = vbDirectory Then
    If RecurseSubDirectories Then
      Recurse = "*.*"" /s"
    Else
      Recurse = "*.*"""
    End If
    Shell Environ("comspec") & " /c attrib -r """ & _
            TopLevelDirectory & Recurse, vbHide
  End If
  Exit Sub
Whoops:
  MsgBox "That directory does not exist.", _
                 vbCritical, "Invalid Directory Name"
End Sub

Obviously, you must tell the subroutine the main 
directory you want to work in; hence, the first argument. 
You can include the trailing backslash on the path string 
you pass in to the Sub or not; the first If-Then block 
adjusts for it as necessary. The second argument is 
optional and addresses the recursing of this operation 
into all of the subdirectories of the main directory. By 
default, this argument is False, and the routine only 
operates on files in the specified main directory. 
However, if you pass True to this argument, the routine 
will remove the ReadOnly property throughout the 
directory tree rooted at the main directory. The On Error 
call is provided in case the main directory you spec ... (cont.)
Perl/Tk Pocket Reference [Perl, Tk, Book] Purchased 01-Feb-2001, $13.95

SQL Queries for Mere Mortals [Database, Query, SQL, Book] Purchased 23-Mar-2001, $59.95

Instant Perl Modules [Module, Perl, Book] Purchased 23-Mar-2001, $79.95

Programming Perl [Perl, Book] Purchased 13-Mar-2001, $72.95

How To Indicate That There Are More Than 9 Entries in a Views Row (using: Lotus Notes 5) [Formula, Lotus Notes, Tip, View, @Elements, @Subset] www.searchdomino.com 02-Mar-2001 by Ulrich Krause
How To Indicate That There Are More Than 9 Entries in a Views Row

Ulrich Krause  
02 Mar 2001, Rating 3.38 (out of 5)

As you know, you can show only 9 lines in a view. This small piece of code 
indicates that there are more than 9 lines in a row. 

 
Elements := @Elements(YourMultiValueField);
Display :=@If ( Elements <= 9 ; YourMultiValueField ; 
@Subset(YourMultiValueField; 8) : "..."); 
Open Source IDEs for Linux/Unix [Open Source, IDE, Unix, Linux, Article] C++ Users Journal 01-Mar-2001, vol. 19, no. 3 by Petr Sorfa
	Open Source IDEs for Linux/Unix
	 
	Petr Sorfa
	  
	You don’t have to give up a graphical environment to develop software 
under Linux. There are as many IDEs freely available on the Internet as there 
are definitions of the word 'free'.
	
Navigating Linux Source Code [Article, Linux] C++ Users Journal 01-Mar-2001, vol. 19, no. 3 by James Bonang
	Navigating Linux Source Code
	 
	James Bonang
	  
	With legacy code or large projects, navigation is a serious concern. 
Here are some tools that can help you find your way.
	
Documenting the Graphic Import Filter Interface [Graphic, Import Filter, C++, Visual C++, Article] C++ Users Journal 01-Mar-2001, vol. 19, no. 3 by Bret S Pehrson
	Documenting the Graphic Import Filter Interface
	 
	Bret S Pehrson
	  
	There is a fairly ‘‘standard’’ interface for importing diverse graphics 
formats into Windows applications. Only problem is, nobody bothered to document 
it - until now.
	
Using Template Functions to Customize Library Behavior [Template Function, Library, C++, Visual C++, Article] C++ Users Journal 01-Mar-2001, vol. 19, no. 3 by Michael B Yoder
	Using Template Functions to Customize Library Behavior
	 
	Michael B Yoder
	  
	If you’re writing code to be used by other programmers, you’ll want to 
make it customizable, and you’ll want to do it well. This article presents an 
approach that is both efficient and easy to manage.
	
Here Be Dragons (Learning Exception Safety) [Exception, C++, Visual C++, Article] C++ Users Journal 01-Mar-2001, vol. 19, no. 3 by Alan Griffiths
	Here Be Dragons (Learning Exception Safety)
	 
	Alan Griffiths
	  
	If learning exception safety may be likened to a journey, then Alan 
Griffiths is an excellent tour guide. He shows us several alternate routes, and 
he always keeps the trip interesting.
	
To New, Perchance To Throw (Part 1 of 2) [Overloading, new, C++, Visual C++, Article] C++ Users Journal 01-Mar-2001, vol. 19, no. 3 by Herb Sutter
	Herb Sutter
	 
	To New, Perchance To Throw (Part 1 of 2)
	 
	If you’re going to Overload operator new, make sure you get the right 
one, and that the compiler picks the right ones as well.
	
Streambufs and Streambuf Iterators [Streambuf, Iterator, C++, Visual C++, Article] C++ Users Journal 01-Mar-2001, vol. 19, no. 3 by Matt Austern
	Matt Austern
	 
	Streambufs and Streambuf Iterators
	 
	If you’ve ever used getc and putc, you need the C++ equivalents that 
reside in streambufs.
	
Disconnect From the User's ISP With WinInet (using: Visual C++ 6.0) [Dial-Up Network, Internet, WinInet, Visual C++, Tip] www.pinnaclepublishing.com 23-Feb-2001
Disconnect From the User's ISP With WinInet

As I promised in the last issue of the eXTRA, I'm going 
to discuss the InternetHangUp() function from WinInet, 
which hangs up the phone when the user wants to 
disconnect from the Internet. In order to use 
InternetHangUp(), though, your application must have been 
the one that called InternetDial() in the first place.

Here's an example of calling InternetHangUp():

int CInternetAutoDialApp::ExitInstance()
{
      int nResult = CWinApp::ExitInstance();

      if (!m_bConnected)
            return nResult;

      int nChoice = AfxMessageBox("Would you like to disconnect?",
            MB_YESNO|MB_ICONEXCLAMATION);

      if (nChoice == IDYES)
            ::InternetHangUp(m_dwConnection, 0);

      return nResult;
}

where m_dwConnection is a DWORD used to store an [out] 
parameter of InternetDial(). For more information, look 
up InternetDial() and InternetHangUp() in the 
documentation.
Length of a Media File (using: Visual Basic 6.0) [AVI File, MCI, Media Control Interface, MIDI, WAV, Visual Basic, Tip] www.pinnaclepublishing.com 23-Feb-2001
Length of a Media File

The easiest way to retrieve the length of WAV, AVI, MIDI, 
or other media files is to use MCI functions. Start by 
opening the file (supply your own FileName). Then 
retrieve the file length in milliseconds and close the 
file.

Declare Function mciSendString Lib "winmm" Alias _
"mciSendStringA" (ByVal lpstrCommand As String, ByVal _
lpstrReturnString As String, ByVal uReturnLength _
As Long, ByVal hwndCallback As Long) As Long
CommandString = "Open " & FileName" & " alias _
MediaFile" mciSendString CommandString, vbNullString, _
0,0&
Dim MediaLength as Long
Dim RetString As String * 256
Dim CommandString As String
CommandString = "Set MediaFile time format milliseconds"
mciSendString CommandString, vbNullString, 0, 0&
CommandString = "Status MediaFile length"
MciSendString CommandString, RetString, Len(RetString),0&
MediaLength = CLng(RetString)
CommandString = "Close MediaFile"
MciSendString CommandString, vbNullString, 0, 0&

This tip was adapted from a tip posted on VB2theMax.com. 
Thanks, VB2theMax team!
Registry Detective .... Read-only Registry search facility that works in conjunction with RegEdit [Registry, Delphi, EXE] PC Magazine 20-Feb-2001, vol. 20, no. 4 by Neil J Rubenking
If you need to search the Windows registry, Registry Detective can make the job 
a lot easier. Windows provides a Registry Editor (RegEdit) for locating and 
changing data, but its search facility is slow and limited. Registry Detective, 
a read-only registry search facility that works in conjunction with RegEdit, 
provides an alternative. You can specify multiple search criteria, search only 
specific portions of the registry, view all hits at once, examine detailed 
information for each hit, and then launch RegEdit with the hit selected so you 
can make changes. If you're using PC Magazine's Registry Editor Plus (a tool to 
make editing the registry safer), Registry Detective will launch it along with 
RegEdit. Registry Detective was written by Neil J. Rubenking, and first 
appeared in PC Magazine February 20, 2001 (v20n04). Source code is included.

System Requirements
Windows 9x, NT, 2000, or Me
Connect to the User's ISP with WinInet (using: Visual C++ 6.0) [Internet Explorer, Tip, Visual C++, WinInet] www.pinnaclepublishing.com 08-Feb-2001
Connect to the User's ISP with WinInet

Connecting the user to their Internet Provider from your 
software can be done, and you can also hang up the call 
for the user too! The InternetDial() and InternetHangUp() 
functions from WinInet do the trick.

Here's an example of how to call InternetDial() to pop up 
the Dial-Up Connection window that users see when they 
bring up Internet Explorer:

BOOL CInternetAutoDialApp::DoInternetConnect()
{
DWORD dwResult;
BOOL bResult; 

// Dial the user's modem
dwResult = ::InternetDial(AfxGetMainWnd()->GetSafeHwnd(),
"", INTERNET_AUTODIAL_FORCE_ONLINE,
&m_dwConnection, 0);

// If the connection went through, dwResult is 
// equal to ERROR_SUCCESS
bResult = (dwResult == ERROR_SUCCESS);

return bResult;
}

You can learn more about these functions by looking up 
InternetDial() and InternetHangUp() in the documentation 
that accompanies Visual C++.

Stay tuned for next issue, when I'll discuss the 
InternetHangUp() function.......

As I promised in the last issue of the eXTRA, I'm going 
to discuss the InternetHangUp() function from WinInet, 
which hangs up the phone when the user wants to 
disconnect from the Internet. In order to use 
InternetHangUp(), though, your application must have been 
the one that called InternetDial() in the first place.

Here's an example of calling InternetHangUp():

int CInternetAutoDialApp::ExitInstance()
{
      int nResult = CWinApp::ExitInstance();

      if (!m_bConnected)
            return nResult;

      int nChoice = AfxMessageBox("Would you like to disconnect?",
            MB_YESNO|MB_ICONEXCLAMATION);

      if (nChoice == IDYES)
            ::InternetHangUp(m_dwConnection, 0);

      return nResult;
}

where m_dwConnection is a DWORD used to store an [out] 
parameter of InternetDial(). For more information, look 
up InternetDial() and InternetHangUp() in the 
documentation.
What WinInet function tells you how the user connects to the Internet? (using: Visual C++ 6.0) [Internet, WinInet, Visual C++, Tip] www.pinnaclepublishing.com 08-Feb-2001
What WinInet function tells you how the user connects to 
the Internet? That is, what function tells you whether or 
not the user is currently connected to their provider, or 
whether the user connects with a modem or over a network?

The function to use for determining information about the 
user's Internet connection setup is the 
InternetGetConnectedState() function. It provides you 
with details such as whether the user is currently online 
and whether the computer connects using a modem. On 
computers that have both a network interface card (NIC) 
and a modem, this function will give unpredictable return 
values, however. Further information is available by 
searching the Visual C++ documentation for 
InternetGetConnectedState().

To use the InternetDial(), InternetGetConnectedState(), 
and InternetHangUp() functions, add these lines to 
STDAFX.H at the bottom:

#include 
#pragma comment(lib, "wininet.lib")

The #include line tells the compiler, of course, to 
include the declarations of the functions in your 
project, and the #pragma directive links your code with 
the WININET.LIB library statically.
ContextEdit .... Control which items appear on your context menu [Context Menu, Explorer, Visual C++, EXE] PC Magazine 06-Feb-2001, vol. 20, no. 3 by Gregory A Wolking
ContextEdit lets you control which items appear on your context menu--the menu 
that appears when you right-click on an item in Windows Explorer. The context 
menu often contains numerous rarely-used commands. These commands come from one 
of two places: shell commands stored within the system Registry, and context 
menu handlers. The source of the menu item is transparent to the end-user, but 
still has an impact. Windows Explorer lets you add or remove simple shell 
commands, but gives you no control over context menu handlers. ContextEdit lets 
you control both types of context menu items. It also allows you to disable 
context menu items without removing them entirely. Another unique feature is 
the ability to add shell commands to all files regardless of type, or to all 
files without an associated program. ContextEdit was written by Gregory A. 
Wolking, and first appeared in PC Magazine February 6, 2001 (v20n03). Source 
code is included.

System Requirements
Internet Explorer 4.0 or higher and Windows 9x, NT, 2000, or Me
Remove a stored form (using: Lotus Notes 5) [Formula, Lotus Notes, Tip, @DeleteField, Stored Form] www.searchdomino.com 06-Feb-2001 by Didrik Humblen
Remove a stored form

Didrik Humblen 
06 Feb 2001, Rating 3.14 (out of 5)
This formula may be run as an agent, button or Action button. 

FIELD Form := @If(!@IsAvailable(Form); @Trim($$ScriptName); Form);
FIELD $AUTOLAUNCH := @DeleteField;
FIELD $INFO := @DeleteField;
FIELD $$Script_O := @DeleteField;
FIELD $BODY := @DeleteField;
FIELD $Fonts := @DeleteField;
FIELD $Signature := @DeleteField;
FIELD $TITLE := @DeleteField;
FIELD $WINDOWTITLE := @DeleteField;
FIELD $$ScriptName := @DeleteField;
FIELD $SIG$Form := @DeleteField;
Exception Handling in Embedded C Programs [Exception Handling, Embedded C, Article, Visual C++] C++ Users Journal 01-Feb-2001, vol. 19, no. 2 by Yonatan Lehman
	Exception Handling in Embedded C Programs
	 
	Yonatan Lehman
	  
	The most common way to emulate exceptions in C is through its 
setjmp/longjmp facility. The approach presented here is less complicated, but 
with some surprisingly useful features, including a simple form of stack 
unwinding.
	
Debugging under GNU/Linux [Debugging, GNU, Linux, Article, Visual C++] C++ Users Journal 01-Feb-2001, vol. 19, no. 2 by Randy Zack
	Debugging under GNU/Linux
	 
	Randy Zack
	  
	Programmers from fields as diverse as enterprise computing to embedded 
systems are venturing into Linux. If you are one of them, here’s a tool that 
should be at the top of your download list.
	
Encapsulating CORBA Components with the Adapter and Bridge Patterns [CORBA, Component, Pattern, Article, Visual C++] C++ Users Journal 01-Feb-2001, vol. 19, no. 2 by Patrick May
	Encapsulating CORBA Components with the Adapter and Bridge Patterns
	 
	Patrick May
	  
	CORBA hides the details of invoking objects on remote machines. With a 
little more refactoring, we can hide the details of CORBA as well.
	
Callbacks Made Easy with the Observer/Mediator Design Patterns [Callback, Pattern, Article, Visual C++] C++ Users Journal 01-Feb-2001, vol. 19, no. 2 by Vladimir Batov
	Callbacks Made Easy with the Observer/Mediator Design Patterns
	 
	Vladimir Batov
	  
	Good software works; great software evolves. Here’s a variation on the 
Observer pattern that lets you update your code base with ease.
	
Integers, Part 3 [Article, Visual C++] C++ Users Journal 01-Feb-2001, vol. 19, no. 2 by Randy Meyers
	Randy Meyers
	 
	Integers, Part 3
	 
	At first glance, C99’s new integral types seem to threaten its 
portability. But a few added headers and typedefs improve the outlook 
dramatically.
	
Polymorphic Function Objects [Polymorphic, Function, Article, Visual C++] C++ Users Journal 01-Feb-2001, vol. 19, no. 2 by Steve Dewhurst
	Steve Dewhurst
	 
	Polymorphic Function Objects
	 
	It takes lots of skill, and maybe a design pattern or two, to turn a 
function pointer into a thing of beauty.
	
STL Containers [STL, Container, C++, Article, Visual C++] C++ Users Journal 01-Feb-2001, vol. 19, no. 2 by Thomas Becker
	Thomas Becker
	 
	STL Containers
	 
	Why does the Standard C++ library provide so many kinds of containers? 
To enable tradeoffs in efficiency in their infinite variety of uses.
	
C++ Made Easier: Programs That Work by Accident [C++, Article, Visual C++] C++ Users Journal 01-Feb-2001, vol. 19, no. 2 by Andrew Koenig, Barbara E Moo
	Andrew Koenig
	 & 
	Barbara E Moo
	 
	C++ Made Easier: Programs That Work by Accident
	 
	Avoiding undefined behavior is critically important in C++ programming. 
The authors show us some ways that don’t require memorizing the entire C++ 
Standard.
	
Visual Basic.NET: New Programming Model and Language Enhancements Boost Development Power [.NET, Visual Basic.NET, Article] MSDN Magazine 01-Feb-2001, vol. 16, no. 2 by Ted Pattison
	Visual Basic.NET: New Programming Model and Language Enhancements Boost 
Development Power
	
	Ted Pattison
	
Windows Forms: A Modern-Day Programming Model for Writing GUI Applications [Windows Forms, GUI, .NET, Article] MSDN Magazine 01-Feb-2001, vol. 16, no. 2 by Jeff Prosise
	Windows Forms: A Modern-Day Programming Model for Writing GUI 
Applications
	 
	Jeff Prosise
	
.NET Framework: Building, Packaging, Deploying, and Administering Applications and Types [Framework, .NET, Article] MSDN Magazine 01-Feb-2001, vol. 16, no. 2 by Jeffrey Richter
	.NET Framework: Building, Packaging, Deploying, and Administering 
Applications and Types
	 
	Jeffrey Richter
	
Web Services: Building Reusable Web Components with SOAP and ASP.NET [Web Services, Web Component, SOAP, .NET, ASP.NET, Article] MSDN Magazine 01-Feb-2001, vol. 16, no. 2 by David S Platt
	Web Services: Building Reusable Web Components with SOAP and ASP.NET
	 
	David S Platt
	
Security in .NET: Enforce Code Access Rights with the Common Language Runtime [Security, Code Access Rights, Common Language Runtime, .NET, Article] MSDN Magazine 01-Feb-2001, vol. 16, no. 2 by Keith Brown
	Security in .NET: Enforce Code Access Rights with the Common Language 
Runtime
	 
	Keith Brown
	
.NET P2P: Writing Peer-to-Peer Networked Apps with the Microsoft .NET Framework [Peer-to-Peer, Network, .NET, Article] MSDN Magazine 01-Feb-2001, vol. 16, no. 2 by Lance Olson
	.NET P2P: Writing Peer-to-Peer Networked Apps with the Microsoft .NET 
Framework
	 
	Lance Olson
	
Resources for Your Developer Toolbox [Resource, Visual C++, Article] MSDN Magazine 01-Feb-2001, vol. 16, no. 2 by Theresa W Carey
	Resources for Your Developer Toolbox
	 
	Theresa W Carey
	
Scripting Interoperability [Article, Visual C++] MSDN Magazine 01-Feb-2001, vol. 16, no. 2 by Robert Hess
	Scripting Interoperability
	 
	Robert Hess
	
Login Control on a Web Farm [Article, Visual C++] MSDN Magazine 01-Feb-2001, vol. 16, no. 2 by Robert Hess
	Login Control on a Web Farm
	 
	Robert Hess
	
Custom Refreshes [Article, Visual C++] MSDN Magazine 01-Feb-2001, vol. 16, no. 2 by Robert Hess
	Custom Refreshes
	 
	Robert Hess
	
App Servers [Article, Visual C++] MSDN Magazine 01-Feb-2001, vol. 16, no. 2 by Robert Hess
	App Servers
	 
	Robert Hess
	
Driving Visio 2000 from Visual Basic [Article, Visual Basic, Visio] MSDN Magazine 01-Feb-2001, vol. 16, no. 2 by Ken Spencer
	Driving Visio 2000 from Visual Basic
	 
	Ken Spencer
	
The Component Model in ASP.NET [Component Model, ASP.NET, Article] MSDN Magazine 01-Feb-2001, vol. 16, no. 2 by Dino Esposito
	The Component Model in ASP.NET
	 
	Dino Esposito
	
Assertions and Tracing in .NET [Assertion, Tracing, .NET, Article] MSDN Magazine 01-Feb-2001, vol. 16, no. 2 by John Robbins
	Assertions and Tracing in .NET
	 
	John Robbins
	
Special .NET Type Members [Article, .NET] MSDN Magazine 01-Feb-2001, vol. 16, no. 2 by Jeffrey Richter
	Special .NET Type Members
	 
	Jeffrey Richter
	
Prevent Users from Performing Normal GUI Operations [GUI, Visual C++, Article] MSDN Magazine 01-Feb-2001, vol. 16, no. 2 by Paul DiLascia
	Prevent Users from Performing Normal GUI Operations
	 
	Paul DiLascia
	
Using TRACERT to Troubleshoot TCP/IP Problems in Windows NT (using: Visual Basic 6.0) [TCP/IP, Windows NT, Tracert, Visual Basic, Tip] www.pinnaclepublishing.com 30-Jan-2001
As Q162326, "Using TRACERT to Troubleshoot TCP/IP 
Problems in Windows NT" 
(http://support.microsoft.com/support/kb/articles/Q162/3/26.asp) 
explains, the TRACERT (Trace Route) command is a route-
tracing utility used to determine the path that an IP 
packet has taken to reach a destination.

TRACERT determines the route taken to a destination by 
sending Internet Control Message Protocol (ICMP) echo 
packets with varying IP Time-To-Live (TTL) values to the 
destination. "Each router along the path is required to 
decrement the TTL on a packet by at least 1 before 
forwarding it, so the TTL is effectively a hop count. 
When the TTL on a packet reaches 0, the router should 
send an ICMP Time Exceeded message back to the source 
computer. TRACERT determines the route by sending the 
first echo packet with a TTL of 1 and incrementing the 
TTL by 1 on each subsequent transmission until the target 
responds or the maximum TTL is reached. The route is 
determined by examining the ICMP Time Exceeded messages 
sent back by intermediate routers. Note that some routers 
silently drop packets with expired TTLs and are invisible 
to TRACERT."  

TRACERT's output is an ordered list of the routers in the 
path that returned the ICMP Time Exceeded message. If the 
-d switch is used (telling TRACERT not to perform a DNS 
lookup on each IP address), the IP address of the near-
side interface of the routers is reported. Here's the 
syntax: 

tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name 

where 
   -d specifies to not resolve addresses to host names.
   -h maximum_hops specifies the maximum number of hops 
   to search for target.
   -j host-list specifies loose source route along the 
   host-list.
   -w timeout waits the number of milliseconds specified 
   by timeout for each reply.
   target_name is the name or IP address of the target 
   host. 

Related: "Performing a Visual Basic Tracert (Trace 
Route)" by Randy Birch and Jim Huff at 
http://www.mvps.or ... (cont.)
Using the CharacterCasing Property (using: Visual Basic 6.0) [VB.NET, Visual Basic, Tip] www.pinnaclepublishing.com 30-Jan-2001
The CharacterCasing Property
---------------------------------------------------------
VB MVP Mattias Sjögren (mailto:mattias@mvps.org -- 
see also http://www.msjogren.net/dotnet/) recently 
posted this code in response to a 
microsoft.public.dotnet/languages/vb newsgroup question 
about allowing only capital letters in a ComboBox or a 
TextBox, showing how to using VB.NET's CharacterCasing 
property:

Public Class UpperLowerCombo : Inherits System.WinForms.ComboBox
  Private m_CharacterCasing As CharacterCasing = _
    CharacterCasing.Normal
  Private Const CBS_UPPERCASE As Integer = &H2000
  Private Const CBS_LOWERCASE As Integer = &H4000
  Public Property CharacterCasing() As CharacterCasing
    Get
      Return m_CharacterCasing
    End Get
    Set
      If m_CharacterCasing <> Value Then
        m_CharacterCasing = Value
        RecreateHandle()
      End If
    End Set
  End Property
  Protected Overrides ReadOnly Property CreateParams() _ 
    As CreateParams
    Get
      Dim cp As CreateParams = MyBase.CreateParams
      If m_CharacterCasing = CharacterCasing.Lower Then
        cp.style = cp.style BitOr CBS_LOWERCASE
      ElseIf m_CharacterCasing = CharacterCasing.Upper Then
        cp.style = cp.style BitOr CBS_UPPERCASE
      End If
      Return cp
    End Get
  End Property
End Class

Thanks for the great sample, Matt. For other .NET and VB6 
samples, check out 
http://www.msjogren.net/dotnet/eng/samples/default.asp.
Dealing With CHARs and WCHARs (using: Visual C++ 6.0) [ATL, atlbase.h, BSTR, CHAR, LPCTSTR, WCHAR, Visual C++, Tip] www.pinnaclepublishing.com 25-Jan-2001
Dealing With CHARs and WCHARs

* Did you know that some classes provided by ATL make it 
really easy to form BSTRs from normal strings, and, vice-
versa, MFC's CString class makes it easy to turn BSTRs 
into normal strings (or CHAR or LPCTSTR) strings? Just 
use the two classes' copy constructors!

For example, if I want to pass information in a member 
variable of type LPCTSTR to a COM method, and it only 
takes arguments of type BSTR, I can wrap a CComBSTR 
constructor call around the member variable and then pass 
it in the method parameter:

/*pDialer points to an IDialer interface*/
/*m_pszPassword is a member variable of type LPCTSTR*/

// Dial the host computer. Tell the host the user's
// password.
pDialer->Authenticate(CComBSTR(m_pszPassword));

The use of CComBSTR's constructor here creates a BSTR 
whose string contents are those of the member variable.

To use the CComBSTR class, you need to add lines to 
include ATL in STDAFX.H. CComBSTR is declared in 
, and the #include directive for  
must be added to the bottom of STDAFX.H. This will work 
even in MFC programs!

Of course, CString's copy constructors or '=' or '+=' 
operators accept BSTRs as inputs. Just use them with BSTR 
variables are you would anything else!
Pager Alerts (using: Lotus Notes 5) [Agent, Lotus Notes, Pager, Tip, View] www.searchdomino.com 22-Jan-2001 by Karen Romano
Pager Alerts
Karen Romano 
22 Jan 2001, Rating 3.50 (out of 5)
This Agent allows the user to be notified via pager that they have an appt. It 
lets them set up their appt through their Notes calendar. If you want to be 
reminded 1/2 hour prior to meeting, now you can. 
DECLARATIONS
Const SUBJECT = "Calendar Entry"
Const DESTINATION_ADDRESS = "4079747099.4009308"@Pagenet.net" 
Const MAIL_SERVER = "OrlMail1/Orlando"
Const MAIL_FILE = "mailkromano.nsf"

INTIALIZE
Dim session As New NotesSession
	Dim mailDB As NotesDatabase
	Dim calendarView As NotesView
	Dim todaysDate As New NotesDateTime (Today)
	Dim docCol As NotesDocumentCollection
	Dim notificationDoc As NotesDocument
	Dim currentDoc As NotesDocument
	Dim chair As NotesName
	Dim itmDatetime As NotesItem
	Dim startDateTime As NotesDateTime
	Dim endDateTime As NotesDateTime
	Dim location As String
	Dim dtValue As NotesDateTime
	Dim ws As New notesuiworkspace
	Dim strHomeServer As String
	Dim iHour As Integer
	Print "Calendar --> SMS - Starting..."
	
	Set mailDB = New NotesDatabase (MAIL_SERVER, MAIL_FILE)
	Set calendarView = mailDB.GetView ("($Calendar)")
	
	Set docCol = calendarView.GetAllDocumentsByKey (todaysDate, False) 
	
	Set notificationDoc = New NotesDocument (session.CurrentDatabase) 
	
	For i = 1 To docCol.Count
		
		Set currentDoc = docCol.GetNthDocument(i)
		
		notificationDoc.SendTo = DESTINATION_ADDRESS
		notificationDoc.Subject = SUBJECT
		
		Set chair = New NotesName (currentDoc.From (0))
		
		Set itmDateTime = currentDoc.GetFirstItem ("StartDate") 
		Set startDateTime = itmDateTime.DateTimeValue
		Set itmDateTime = currentDoc.GetFirstItem ("EndDate")
		Set endDateTime = itmDateTime.DateTimeValue
		
		If Instr ( currentDoc.Location (0), "/") > 0 Then
			location = Trim (Left (currentDoc.Location (0), Instr
(currentDoc.Location (0), "/") - 1))
		Else
			location = currentDoc.Location (0)
		End If
	'Call TIMEGetFromitem("CalendarTimeSlotEnd", note, dtValue)
		
		If Not(dtValue Is Nothing) T ... (cont.)
Given a short, "eight-characters" style filename, return the full version (using: Visual Basic 6.0) [File, Visual Basic, Solution] www.pinnaclepublishing.com 18-Jan-2001 by Karl Moore
Karl Moore (http://www.karlmoore.com), UK-based senior 
editor at VB-World and host for a BBC Radio series on the 
Internet, has posted a handy tip at 
http://www.vbworld.com/files/tip511.html that, given a 
short, "eight-characters" style filename, will return the 
full version.

Public Function GetLongFileName(ByVal ShortFileName As String) As String
   Dim intPos As Integer
   Dim strLongFileName As String
   Dim strDirName As String
   'Format the filename for later processing
   ShortFileName = ShortFileName & "\"
   'Grab the position of the first real slash
   intPos = InStr(4, ShortFileName, "\")
   'Loop round all the directories and files
   'in ShortFileName, grabbing the full names
   'of everything within it.
   While intPos    
      strDirName = Dir(Left(ShortFileName, intPos - 1), _
         vbNormal + vbHidden + vbSystem + vbDirectory)
      If strDirName = "" Then
         GetLongFileName = ""
         Exit Function
      End If
      strLongFileName = strLongFileName & "\" & strDirName
      intPos = InStr(intPos + 1, ShortFileName, "\")
   Wend
   'Return the completed long file name
   GetLongFileName = Left(ShortFileName, 2) & _
      strLongFileName
End Function
Restricting text box input to numbers only and also allow the user to cut, copy, and paste (using: Visual Basic 6.0) [KeyPress Event, Textbox Control, Visual Basic, Solution] www.pinnaclepublishing.com 18-Jan-2001 by Peter Chamberlin
Peter Chamberlin, a UK-based programmer who's written 
some commercially available software in VB 
(http://www.internet-timer.co.uk), writes with yet 
another solution to the question about restricting text 
box input to numbers only. "I recently constructed the 
following code, which does just that and also allows the 
user to cut, copy, and paste, all the time still 
restricting input content to numbers only! Put the 
following into a text box's KeyPress event..."

' Ensure that only Numbers + Backspace Occur
If Not (KeyAscii > 47 And KeyAscii < 58) And Not _
(KeyAscii = 3 Or KeyAscii = 8 Or KeyAscii = 22 _
Or KeyAscii = 24 Or KeyAscii = 32 Or KeyAscii = 44)
Then
   ' Nullify Non-Numeric Character
   KeyAscii = 0
End If
' Remove non-digits from Ctrl-V
If KeyAscii = 22 Then
  PreStrip = Clipboard.GetText
  NewStrip = ""
  For J = 1 To Len(PreStrip)
    MidBit = Mid(PreStrip, J, 1)
    If Not (MidBit < "0" Or MidBit > "9") Then
      NewStrip = NewStrip & MidBit
    End If
  Next J
  Clipboard.SetText NewStrip
End If

"... and only numeric input to a text box will be 
allowed. Ctrl-X/C/V is possible, and the routine scans 
and removes non-numeric digits from incoming clipboard 
copy-n-pastes." Very nice, Peter! Thanks for sharing.
Smallest possible C# version of Hello, World (using: Visual C++ 6.0) [C#, Visual C++, Fact] www.pinnaclepublishing.com 18-Jan-2001
Dr. GUI.NET's #0 article proposes this as the smallest 
possible C# version of Hello, World:

class MyApp {
   public static void Main() {
      System.Console.WriteLine("Hello, world! (1)");
   }
}

BTW, Google reports "about 963,000 hits on "Hello World."
Guided tour of writing a Hello World program in VB.NET (using: Visual Basic) [VB.NET, Visual Basic, Solution] www.pinnaclepublishing.com 18-Jan-2001 by Gary Cornell, Gary Cornell
In the sixth issue of the .NET Developer eNewsletter, 
editor Gary Cornell (mailto:gary@thecornells.com) 
provided a really good guided tour of writing a Hello 
World program in VB.NET. I've reproduced it here. (If you 
don't already subscribe to Gary's free bi-weekly eXTRA, 
you can remedy the situation at 
http://www.FREEeNewsletters.com.)

Let's suppose (says Gary) that you've added a button to a 
form, and a click on that button is supposed to yield the 
string  "Hello world" in a text box. Here's the code that 
you'll get if you use the IDE and the toolbox to build 
the form. You'd then add the one line of code to change 
the contents of the text box. Note that while you have 
the option of hiding some of this automatically generated 
code, seeing it shows you how VB.NET works! Here are the 
first three lines you'd see in the "show all" setting:

Imports System.ComponentModel
Imports System.Drawing
Imports System.WinForms

These lines tell VB that you're using three "Namespaces" 
and are analogous to the Project|References section. Now 
we come to how one new feature of VB.NET is used in GUI 
applications: inheritance. Our form is a special case of 
a "Winform," so we say that we "Inherit" from this class:

Public Class Form1
VB.NET explicitly makes a form a class.
  Inherits System.WinForms.Form
  Public Sub New()
    MyBase.New
    Form1 = Me
    'This call is required by the Win Form Designer.
    InitializeComponent
    'TODO: Add any initialization after the
    'InitializeComponent() call
  End Sub

What's new is how you build a Constructor in VB.NET. 
Constructors go way beyond the old Initialize event in 
that they allow parameters (although none are used in 
this case).

'Form overrides Dispose to clean up the component list.
Overrides Public Sub Dispose()
  MyBase.Dispose
  components.Dispose
End Sub

Dispose is a user-supplied method that's used to clean up 
resources. Here you can see inheritance at work with the 
Overrides keyword. In this cas ... (cont.)
Network Programming with Perl [ftp, Network, Perl, Socket, TCP, Unix, Book] Purchased 12-Jan-2001, $60

NetPerSec .... Clock your internet connection speed [Internet, Visual C++, EXE] PC Magazine 16-Jan-2001, vol. 20, no. 2 by Gregory A Wolking
NetPerSec measures the real-time speed of your Internet connection. Different 
types of connections promise different communication speeds, but what are you 
actually getting? Due to network traffic, actual speeds are often slower than 
what is promised. Cable modems are fast unless many of your neighbors are 
sharing the line; such modems can slow down considerably with a heavy load. How 
do you know when it's time to switch to DSL? NetPerSec lets you check your 
connection speed in real time. It monitors all TCP/IP activity to and from the 
Internet or other networks, and graphs the communication speed. Its dynamic 
tray icon shows send and receive activity with a bar graph or a histogram. For 
details, open the program's main window to view current and average send and 
receive speeds in a configurable, graphical display. You can adjust the 
sampling rate and the amount of data used to compute the average. NetPerSec was 
written by Mark Sweeney, and first appeared in PC Magazine January 16, 2001 
(v20n02). Source code 
is included. 

Requirements: Windows 9x, NT, 2000, or Me
 
C++ Objects for making UNIX & WinNT Talk [Unix, Windows NT, Book] Purchased 05-Jan-2001, $74.95

CCreditsCtrl - An advanced About Box [Dialog, Windows Programming, Article, Visual C++] www.codeproject.com 08-Jan-2001 by Marc Richarme
	Dialog Windows Programming
	
	 
	CCreditsCtrl - An advanced About Box
	 
	Marc Richarme
	 
	Yet another fully stacked control for displaying scrolling credits...
	
'Copy To' & 'Move To' in Shell Context Menu [Shell Programming, Context Menu, Shell Extension, Article, Visual C++] www.codeproject.com 08-Jan-2001 by Mumtaz Zaheer
	Shell Programming
	
	 
	'Copy To' & 'Move To' in Shell Context Menu
	 
	Mumtaz Zaheer
	 
	This article is all about how to create a Context Menu Shell Extension. 
'Copy To' & 'Move To' will be added to the files/folder context menu.
	
A free Spell Checker with a dictionary editor program [C++, MFC, STL, Spell Checking, Article, Visual C++] www.codeproject.com 07-Jan-2001 by Peter Pearson
	C++ MFC STL
	
	 
	A free Spell Checker with a dictionary editor program
	 
	Peter Pearson
	 
	An article on adding a spell checker to your application
	
A Spell Checking Engine [C++, MFC, STL, Spell Checking, Article, Visual C++] www.codeproject.com 07-Jan-2001 by Matt Gullett
	C++ MFC STL
	
	 
	A Spell Checking Engine
	 
	Matt Gullett
	 
	A free spell checking engine for use in your C++ applications. Includes 
the current US English dictionary
	
CODBCRecordset class [Database, CRecordset Class, MFC, Article, Visual C++] www.codeproject.com 07-Jan-2001 by Stefan Chekanov
	Database
	
	 
	CODBCRecordset class
	 
	Stefan Chekanov
	 
	CODBCRecordset class is intended to be full replacement of all 
ClassWizard generated CRecordset derived classes in MFC projects.
	
Adding a Recent File List to an MFC dialog based application [Dialog, Windows Programming, Recent File List, MFC, Article, Visual C++] www.codeproject.com 07-Jan-2001 by Pablo Presedo
	Dialog Windows Programming
	
	 
	Adding a Recent File List to an MFC dialog based application
	 
	Pablo Presedo
	 
	This article demonstrates how to add a recent file list to a dialog 
based application
	
Persistent Frames [Document/View, MFC, Article, Visual C++] www.codeproject.com 07-Jan-2001 by Stefan Chekanov
	Document/View
	
	 
	Persistent Frames
	 
	Stefan Chekanov
	 
	A collection of classes that allows MFC SDI and MDI applications to 
remember the positions and sizes of their main frame and child frame windows.
	
Customizing the Common Find/Replace Dialog in RichEdit View [Rich Edit Control, Find/Replace Dialog, Article, Visual C++] www.codeproject.com 07-Jan-2001 by Kalai Kandasamy
	Rich Edit Control
	
	 
	Customizing the Common Find/Replace Dialog in RichEdit View
	 
	Kalai Kandasamy
	 
	This article explains how to customize the standard Find/Replace Dialog 
in RichEdit view.
	
Taking Advantage of the Winlogon Notification Package [System, Article, Visual C++] www.codeproject.com 07-Jan-2001 by Tony Truong
	System
	
	 
	Taking Advantage of the Winlogon Notification Package
	 
	Tony Truong
	 
	Taking advantage of the Winlogon Notification Package
	
A Case Study about InterProcess Synchronization [Thread, Process, Interprocess Communication, Synchronization, Article, Visual C++] www.codeproject.com 06-Jan-2001 by Gert Boddaert
	Thread Process Inter Process Communication
	
	 
	A Case Study about InterProcess Synchronization
	 
	Gert Boddaert
	 
	An application demonstrating process Synchronization and interprocess 
communication
	
CMenuEX - A bitmap menu class [Menu, Ownerdrawn, Article, Visual C++] www.codeproject.com 05-Jan-2001 by Norm Almond
	Menu
	
	 
	CMenuEX - A bitmap menu class
	 
	Norm Almond
	 
	Implementing an Ownerdrawn menu
	
How to do run-time (or explicit) linking of C++ plug-in components and objects [DLL, Article, Visual C++] www.codeproject.com 03-Jan-2001 by Gert Boddaert
	DLL
	
	 
	How to do run-time (or explicit) linking of C++ plug-in components and 
objects
	 
	Gert Boddaert
	 
	Extending the functionality of your programs using explicit linking
	
XML in .NET: .NET Framework XML Classes and C# Offer Simple, Scalable Data Manipulation [XML, .NET, C#, Visual Basic, Article, Visual C++] MSDN Magazine 01-Jan-2001, vol. 16, no. 1 by Aaron Skonnard
	XML in .NET: .NET Framework XML Classes and C# Offer Simple, Scalable 
Data Manipulation
	 
	Aaron Skonnard
	 
	
	
Digital Dashboards: Web Parts Integrate with Internet Explorer and Outlook to Build Personal Portals [Internet Explorer, Outlook, Article, Visual C++] MSDN Magazine 01-Jan-2001, vol. 16, no. 1 by Maarten Mullender
	Digital Dashboards: Web Parts Integrate with Internet Explorer and 
Outlook to Build Personal Portals
	 
	Maarten Mullender
	 
	
	
Windows CE: eMbedded Visual Tools 3.0 Provide a Flexible and Robust Development Environment [Windows CE, eMbedded Visual Tools, Article, Visual C++] MSDN Magazine 01-Jan-2001, vol. 16, no. 1 by Paul Yao
	Windows CE: eMbedded Visual Tools 3.0 Provide a Flexible and Robust 
Development Environment
	 
	Paul Yao
	 
	
	
Pocket PC: Migrating a GPS App from the Desktop to eMbedded Visual Basic 3.0 [eMbedded Visual Basic, Article, Visual C++] MSDN Magazine 01-Jan-2001, vol. 16, no. 1 by Joshua Trupin
	Pocket PC: Migrating a GPS App from the Desktop to eMbedded Visual 
Basic 3.0
	 
	Joshua Trupin
	 
	
	
XML Wrapper Template: Transform XML Docs into Visual Basic Classes [XML, Visual Basic, Article, Visual C++] MSDN Magazine 01-Jan-2001, vol. 16, no. 1 by Dave Grundgeiger, Patrick Escarcega
	XML Wrapper Template: Transform XML Docs into Visual Basic Classes
	 
	Dave Grundgeiger and Patrick Escarcega
	 
	
	
Printing from a Web Page [Web, Article, Visual C++] MSDN Magazine 01-Jan-2001, vol. 16, no. 1 by Robert Hess
	Printing from a Web Page
	 
	Robert Hess
	 
	
	
Screen Scraping [Screen Scraping, Article, Visual C++] MSDN Magazine 01-Jan-2001, vol. 16, no. 1 by Robert Hess
	Screen Scraping
	 
	Robert Hess
	 
	
	
Origin of an HTTP Request [HTTP Request, Article, Visual C++] MSDN Magazine 01-Jan-2001, vol. 16, no. 1 by Robert Hess
	Origin of an HTTP Request
	 
	Robert Hess
	 
	
	
Stored Procedure Wizard in Visual Basic Boosts Productivity [Stored Procedure Wizard, Visual Basic, Article, Visual C++] MSDN Magazine 01-Jan-2001, vol. 16, no. 1 by Ken Spencer
	Stored Procedure Wizard in Visual Basic Boosts Productivity
	 
	Ken Spencer
	 
	
	
Binary Behaviors in Internet Explorer 5.5 [Internet Explorer, Article, Visual C++] MSDN Magazine 01-Jan-2001, vol. 16, no. 1 by Dino Esposito
	Binary Behaviors in Internet Explorer 5.5
	 
	Dino Esposito
	 
	
	
Reduce EXE and DLL Size with LIBCTINY.LIB [EXE, DLL, LIBCTINY.LIB, Article, Visual C++] MSDN Magazine 01-Jan-2001, vol. 16, no. 1 by Matt Pietrek
	Reduce EXE and DLL Size with LIBCTINY.LIB
	 
	Matt Pietrek
	 
	
	
Advanced ASP.NET Server-side Controls [ASP, .NET, Control, Article, Visual C++] MSDN Magazine 01-Jan-2001, vol. 16, no. 1 by George Shepherd
	Advanced ASP.NET Server-side Controls
	 
	George Shepherd
	 
	
	
Browser Detection in the Registry [Registry, Article, Visual C++] MSDN Magazine 01-Jan-2001, vol. 16, no. 1 by Paul DiLascia
	Browser Detection in the Registry
	 
	Paul DiLascia
	 
	
	
Changing Cursors in Windows [Cursor, Article, Visual C++] MSDN Magazine 01-Jan-2001, vol. 16, no. 1 by Paul DiLascia
	Changing Cursors in Windows
	 
	Paul DiLascia
	 
	
	
Avoiding Resource ID Collision [Resource, Article, Visual C++] MSDN Magazine 01-Jan-2001, vol. 16, no. 1 by Paul DiLascia
	Avoiding Resource ID Collision
	 
	Paul DiLascia
	 
	
	
JNI-C++ Integration Made Easy [JNI, C++, Integration, Article, Visual C++] C++ Users Journal 01-Jan-2001, vol. 19, no. 1 by Evgeniy Gabrilovich, Lev Finkelstein
	JNI-C++ Integration Made Easy
	 
	Evgeniy Gabrilovich
	 and 
	Lev Finkelstein
	  
	Extremely versatile interfaces like the Java JNI also tend to be 
extremely cumbersome, as a rule. The authors have found a way to break that 
rule.
	
Working with SOAP, the Simple Object Access Protocol [SOAP, Simple Object Access Protocol, Distributed Computing, XML, Article, Visual C++] C++ Users Journal 01-Jan-2001, vol. 19, no. 1 by Chris Dix
	Working with SOAP, the Simple Object Access Protocol
	 
	Chris Dix
	  
	SOAP makes Distributed Computing possible in a multiplicity of forms, 
with XML as a communication medium. Little wonder it’s generating so much 
excitement.
	
Exchanging Data between Java and C/C++ Windows Programs [Java, C++, Article, Visual C++] C++ Users Journal 01-Jan-2001, vol. 19, no. 1 by He Lingsong
	Exchanging Data between Java and C/C++ Windows Programs
	 
	He Lingsong
	  
	The notorious ‘‘endian’’ problem shows up in all sorts of places — in 
this case, between different programming languages.
	
A C/C++ Comment Macro [C++, Macro, Article, Visual C++] C++ Users Journal 01-Jan-2001, vol. 19, no. 1 by Mark Timperley
	Mark Timperley
	 
	A C/C++ Comment Macro
	 
	For a non-intrusive debugging macro, this one-liner is hard to beat.
	
Using Library Algorithms [Algorithm, STL, Article, Visual C++] C++ Users Journal 01-Jan-2001, vol. 19, no. 1 by Andrew Koenig
	Andrew Koenig
	 
	Using Library Algorithms
	 
	If you’re struggling with complicated loops and off-by-one errors, you 
might be doing things the hard way. Andy shows us how easy it can be, with a 
little help from the standard library.
	
The New C: Integers, Part 2 [Article, Visual C++] C++ Users Journal 01-Jan-2001, vol. 19, no. 1 by Randy Meyers
	Randy Meyers
	 
	The New C: Integers, Part 2
	 
	The new C Standard has a novel idea: just accept that machine-word 
sizes will grow. Randy explains C’s proactive strategy for accommodating the 
inevitable.
	
Containers in Memory: How Big Is Big? [Container, Memory, Article, Visual C++] C++ Users Journal 01-Jan-2001, vol. 19, no. 1 by Herb Sutter
	Herb Sutter
	 
	Containers in Memory: How Big Is Big?
	 
	If you are basing your selection of standard containers on memory 
requirements, then Herb has some bad news and some good news.
	
Sorting through Quicksort, Part 1 [Sorting, Quicksort, Article, Visual C++] C++ Users Journal 01-Jan-2001, vol. 19, no. 1 by Pete Becker
	Pete Becker
	 
	Sorting through Quicksort, Part 1
	 
	Pete uses the popular quicksort algorithm as a mini-laboratory for 
exploring algorithm design and analyzing algorithm performance problems.
	
Defining Iterators and Const Iterators [Iterator, C++, Article, Visual C++] C++ Users Journal 01-Jan-2001, vol. 19, no. 1 by Matt Austern
	Matt Austern
	 
	Defining Iterators and Const Iterators
	 
	Writing an iterator isn’t hard, and it’s a natural way to extend the 
C++ Standard library. But if you want to do it right, there are a few wrinkles 
you ought to know about.
	
Secure Your Applications With Active Directory [Active Directory, Security, Windows NT, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2001, vol. 11, no. 1 by Michiel de Bruijn
	Secure Your Applications With Active Directory
	 
	Michiel de Bruijn
	 
	Windows 2000's Active Directory (AD) lets you add Security features to 
your apps, making the process easier than ever before. Here’s how to use AD to 
implement security and application extensibility.
	
Make Passwords Secure With the Crypto API [Password, Crypto API, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2001, vol. 11, no. 1 by Daniel Appleman
	Make Passwords Secure With the Crypto API
	 
	Daniel Appleman
	 
	Add true secure functionality to your password-protected VB 
applications and components by tapping Microsoft’s Crypto API.
	
Create an Enterprise Reporting System [Reporting, Excel, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2001, vol. 11, no. 1 by Tony Sidera, Brian Kosienski, Dan Golden
	Create an Enterprise Reporting System
	 
	Tony Sidera
	, 
	Brian Kosienski
	, and 
	Dan Golden
	 
	Without an enterprise reporting system, your company will flail about 
blindly, unable to deal intelligently with data. Discover how to implement a 
reporting architecture in Excel that schedules reports of transactional data.
	
Get a Handle on Errors [Error, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2001, vol. 11, no. 1 by Stan Schultes
	Get a Handle on Errors
	 
	Effective error handling in VB isn't just an art that only experienced 
programmers can grasp. Learn how error handling works, and develop strategies 
for handling your own error conditions.
	 
	Stan Schultes
	
Good Procedures Call Themselves [Procedure, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2001, vol. 11, no. 1 by Ron Schwarz
	Good Procedures Call Themselves
	 
	When a task looks impossible, the best solution is sometimes to write 
code that works like multiple brains. Learn the basics of writing procedures 
that call themselves to accomplish a lot with less code than you thought.
	 
	Ron Schwarz
	
Handle Concurrent Web Data Access [Web, Data Access, Concurrency, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2001, vol. 11, no. 1 by Yasser Shohoud
	Handle Concurrent Web Data Access
	 
	Managing concurrent data access in a Web application is different from 
doing so with a client/server application. Learn how to implement optimistic 
Concurrency in your Web applications.
	 
	Yasser Shohoud
	
Do OO in "Web Time" [Web, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2001, vol. 11, no. 1 by Deborah Kurata
	Do OO in "Web Time"
	 
	Project timeframes are compressing more and more. These six techniques 
will help you minimize your design and development time.
	 
	Deborah Kurata
	
Add a Window to the Taskbar [Taskbar, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2001, vol. 11, no. 1 by Karl E Peterson
	Add a Window to the Taskbar
	 
	Learn how to force the addition of a window to the taskbar
	 
	Karl E Peterson
	
How to obtain the name of the domain controller [Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2001, vol. 11, no. 1 by Karl E Peterson
	How to obtain the name of the domain controller
	. 
	Karl E Peterson
	
Simplify Data Transformations [Data Transformation, SQL Server, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2001, vol. 11, no. 1 by Mary V Hooke
	Simplify Data Transformations
	 
	Explore the new features of SQL Server 2000's Data Transformation 
Services. Master the power and flexibility to make your life a lot easier. 
Learn how to handle errors, data pumps, package logs, and more.
	 
	Mary V Hooke
	
Manage Class Attributes [Class Attribute, Add-in, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2001, vol. 11, no. 1 by Francesco Balena
	Manage Class Attributes
	 
	Displaying class attributes that are usually hidden can make your 
programming tasks easier. Discover how to create an Add-in that helps you work 
with these attributes.
	 
	Francesco Balena
	
Execute Stored Procedures in ADO [Stored Procedure, ADO, ActiveX Data Objects, Database, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2001, vol. 11, no. 1 by William R Vaughn
	Execute Stored Procedures in ADO
	 
	Using ActiveX Data Objects (ADO) to execute stored procedures can make 
your Database apps faster, more scalable, and more reusable. Take a look at the 
top techniques.
	 
	William R Vaughn
	
Add C++ to Your VB Apps [C++, DLL, Encryption, String, Visual C++, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2001, vol. 11, no. 1 by Jonathan Morrison
	Add C++ to Your VB Apps
	 
	When you take time to learn the basics of C++, you can write more 
efficient functions that bring huge performance gains to your VB apps. Here you 
can learn how to create a C++ DLL that performs Encryption on a character 
String.
	 
	Jonathan Morrison
	
Improve Database Look-Up Time [Article, Lotus Notes] Notes Advisor 01-Jan-2001 by Mark Eich
Notes Development - Lotus Notes & Domino Advisor - January 2001 
	Improve Database Look-Up Time
	 
	Mark Eich
	
Apply iNotes' Enhanced Features in Microsoft Internet Explorer [Internet Explorer, Article, Lotus Notes] Notes Advisor 01-Jan-2001 by Terrance A Crow
Web Development - Lotus Notes & Domino Advisor - January 2001 
	Apply iNotes' Enhanced Features in Microsoft Internet Explorer
	 
	Terrance A Crow
	
Integrate Domino 5.0.5 and WebSphere 3.5 [Domino, WebSphere, Article, Lotus Notes] Notes Advisor 01-Jan-2001 by Dennis Rot
Web Development - Lotus Notes & Domino Advisor - January 2001 
	Integrate Domino 5.0.5 and WebSphere 3.5
	 
	Dennis Rot
	
Let Windows NT Services Access Domino Objects [NT Service, Domino Object, Article, Lotus Notes] Notes Advisor 01-Jan-2001 by Michael Thomas Mohen
Technology Integration - Lotus Notes & Domino Advisor - January 2001 
	Let Windows NT Services Access Domino Objects
	 
	Michael Thomas Mohen
	
Add Notes Ease of Use to a Web Project Management Application [Article, Lotus Notes] Notes Advisor 01-Jan-2001 by Scot Fithen
Web Development - Lotus Notes & Domino Advisor - January 2001 
	Add Notes Ease of Use to a Web Project Management Application
	 
	Scot Fithen
	
Building a Five-Layer Portal [Article, Lotus Notes] Notes Advisor 01-Jan-2001 by Paul N McMahon, and Robert Albritton
Knowledge Management - Lotus Notes & Domino Advisor - January 2001 
	Building a Five-Layer Portal
	 
	Paul N McMahon and and Robert Albritton
	
Development Techniques [Article, Lotus Notes] Notes Advisor 01-Jan-2001 by Ken Schweda
Advisor Tips - Lotus Notes & Domino Advisor - January 2001 
	Development Techniques
	 
	Ken Schweda
	
MFC Grid control 2.22 [Control, MFC, Grid Control, Article, Visual C++] www.codeproject.com 01-Jan-2001 by Chris Maunder
	Control
	
	 
	MFC Grid control 2.22
	 
	Chris Maunder
	 
	A fully featured MFC Grid Control for displaying tabular data. The grid 
is a custom control derived from CWnd
	
Component Best Practices: Creating a Property Editor [Component, Property, Article, Delphi] Delphi Developer 01-Jan-2001, vol. 7, no. 1 by Peter Morris
	Component Best Practices: Creating a Property Editor
	 
	Peter Morris
	 
	In Part 3 of his component series (see the December 2000 issue of 
Delphi Developer), Peter Morris presented a thorough investigation of component 
editors. In this installment, he extends that discussion to property editors. 
click here for full article (free)
	
Optimizing Object Pascal: Short Strings vs. Long Strings [Optimizing, Object Pascal, Short String, Long String, String, Article, Delphi] Delphi Developer 01-Jan-2001, vol. 7, no. 1 by Charles Appel
	Optimizing Object Pascal: Short Strings vs. Long Strings
	 
	Charles Appel
	 
	In the July 2000 issue of Delphi Developer (see "Optimizing Object 
Pascal"), Charles Appel demonstrated some techniques for optimizing your Object 
Pascal code by using a simple poker library as an example. One of those 
optimizations involved replacing long strings with the older Pascal-type short 
strings, a trick Charles discovered while making the library compatible with 
16-bit Delphi. In this article, he shows why this worked by comparing the 
speeds of long and short strings in simpler code. He also demonstrates some of 
the problems with benchmarking under Windows. (online subscribers only) 
subscribe now
	
QuickSort: Classic Algorithms and Data Structures, Part 2 [QuickSort, Algorithm, Data Structure, Article, Delphi] Delphi Developer 01-Jan-2001, vol. 7, no. 1 by Fernando Vicaria
	QuickSort: Classic Algorithms and Data Structures, Part 2
	 
	Fernando Vicaria
	 
	In this second part of Fernando Vicaria's series (see the November 2000 
issue of Delphi Developer for Part 1, "Classic Algorithms and Data Structures: 
Sorting Algorithms"), he describes one more very important sort algorithm. In 
Part 1, he demonstrated the Insertion sort—an intuitive if somewhat slow 
sorting algorithm. Now you'll find out what speed is all about with a little 
algorithm called QuickSort. (online subscribers only) subscribe now
	
DBGrid Images, etc. [DBGrid, Image, Taskbar, Environment Variable, Justifying, Article, Delphi] Delphi Informant 01-Jan-2001, vol. 7, no. 1 by Bruno Sonnino
Features 
	DBGrid Images, etc.
	 - 
	Bruno Sonnino
	 
	Bruno Sonnino provides us with Delphi tips, including: displaying 
images in a DBGrid, Windows Taskbar tips, accessing Environment Variables, and 
Justifying text.
	
Easy Pivot Tables [Pivot Table, Microsoft Office Web Components, Article, Delphi] Delphi Informant 01-Jan-2001, vol. 7, no. 1 by Alex Fedorov, Natalia Elmanova
	Easy Pivot Tables
	 - 
	Alex Fedorov
	 and 
	Natalia Elmanova
	 
	Alex Fedorov and Natalia Elmanova demonstrate the power and flexibility 
of PivotTable, one of the Microsoft Office Web Components, when used from 
Delphi.
	
Pretty Good Privacy [Privacy, PGP, Article, Delphi] Delphi Informant 01-Jan-2001, vol. 7, no. 1 by Mike Riley
	Pretty Good Privacy
	 - 
	Mike Riley
	 
	Mike Riley provides an introduction to PGP for the Delphi developer, 
from its installation and requirements, to a demonstration program, to 
suggestions for its use.
	
Surfing from Delphi: Part I [Automation, IWebBrowser2 Interface, Internet Explorer, Article, Delphi] Delphi Informant 01-Jan-2001, vol. 7, no. 1 by Bill Todd
	Surfing from Delphi: Part I
	 - 
	Bill Todd
	 
	Bill Todd shows us how to use IE as an Automation server, and - just to 
make it really easy - provides a wrapper for many of the methods in the 
IWebBrowser2 Interface.
	
The Life and Death of TButton [TButton, Kylix, Article, Delphi] Delphi Informant 01-Jan-2001, vol. 7, no. 1 by Robert Kozak
	The Life and Death of TButton
	 - 
	Robert Kozak
	 
	Borland's Robert Kozak begins his regular Kylix column. Focusing on CLX 
(pronounced "clicks"), the cross-platform component library, he begins with the 
humble TButton.
	
Astra 2100U Scanner [Scanner, Product, Owned By BDP, Daily Task, Educational, Entertainment, Equipment, CD-ROM] Purchased 26-Dec-2000, $89.99
	The Life and Death of TButton
	 - 
	Robert Kozak
	 
	Borland's Robert Kozak begins his regular Kylix column. Focusing on CLX 
(pronounced "clicks"), the cross-platform component library, he begins with the 
humble TButton.
	
Windows Millenium [Operating System, Product, Owned By BDP, Daily Task, System Support, CD-ROM] Purchased 26-Dec-2000, $69.99
	The Life and Death of TButton
	 - 
	Robert Kozak
	 
	Borland's Robert Kozak begins his regular Kylix column. Focusing on CLX 
(pronounced "clicks"), the cross-platform component library, he begins with the 
humble TButton.
	
Windows 2000 Programming for Dummies [MFC, SDK Programming, Visual C++, Windows Development, Book] Purchased 15-Dec-2000, $37.99

Windows Programming Programmer's Notebook [C++, MFC, SDK Programming, Visual C++, Windows Development, Book] Purchased 23-Dec-2000, $59.95

UNIX for Dummies [Unix, Book] Purchased 23-Dec-2000, $21.99

Intro to the Delphi Programming Glossary [Article, Delphi] delphi.about.com 26-Dec-2000
	26-Dec-2000
	 
	26-Dec-2000
	 
	Intro to the Delphi Programming Glossary
	 
	An introduction to the Delphi Programming Glossary, a cross-referenced 
collection of Object Pascal Programming definitions.
	
Using DDX and DDV with WTL [ATL, COM, ActiveX, DDX, DDV, WTL, MFC, Article, Visual C++] www.codeguru.com 20-Dec-2000 by Less P Wright II
	ATL COM ActiveX
	
	 
	Using DDX and DDV with WTL
	 
	Less P Wright II
	 
	Illustrates how to incorporate the MFC feature of DDX/DDV into your WTL 
applications!
	
Generalizing Custom-Draw [Programming, MFC, Article, Visual C++] www.codeguru.com 20-Dec-2000 by Roger Onslow
	Programming
	
	 
	Generalizing Custom-Draw
	 
	Roger Onslow
	 
	[Updated: Added demo project] Combines the lessons learned in the 
previous articles to create a generic custom-draw mechanism for all MFC custom 
control classes.
	
Searching for Delphi [Article, Delphi] delphi.about.com 19-Dec-2000
	19-Dec-2000
	 
	19-Dec-2000
	 
	Searching for Delphi
	 
	Where and how to search for Delphi and Object Pascal programming 
related materials on the Net.
	
Custom Items For the Folder Options Dialog Box [Shell, Dialog, Explorer, Folder, Shell Extension, Article, Visual C++] www.codeguru.com 19-Dec-2000 by Dino Esposito
	Shell
	
	 
	Custom Items For the Folder Options Dialog Box
	 
	Dino Esposito
	 
	Shows an undocumented way to modify the Explorer Folder Options dialog 
to make your Shell Extension settings persistent.
	
Streams and .NET [.NET, Article, Visual C++] www.codeguru.com 19-Dec-2000 by Richard Grimes
	.NET
	
	 
	Streams and .NET
	 
	Richard Grimes
	 
	In his first article for CodeGuru, Richard explores the ins and outs of 
streaming in .NET
	
Containment and Aggregation [Template, Containment, Aggregation, ATL, Article, Visual C++] www.codeguru.com 19-Dec-2000 by Andrew Whitechapel
	Template
	
	 
	Containment and Aggregation
	 
	Andrew Whitechapel
	 
	Illustrates the underlying mechanics of aggregation vs containment in 
ATL and why you'd want to choose one technique over the other.
	
Optimize Your Meetings [Programming, Article, Visual C++] www.codeguru.com 19-Dec-2000 by Christopher Duncan
	Programming
	
	 
	Optimize Your Meetings
	 
	Christopher Duncan
	 
	Tips on getting maximum productivity out of your meetings in a minimum 
amount of time.
	
Paint Shop Pro 7.0 Professional [Image, Product, Owned By BDP, Daily Task, Development, Entertainment, CD-ROM] Purchased 16-Nov-2000, $59
	Programming
	
	 
	Optimize Your Meetings
	 
	Christopher Duncan
	 
	Tips on getting maximum productivity out of your meetings in a minimum 
amount of time.
	
MFC DLLs : Extension DLLs [Article, Visual C++] www.mindcracker.com 13-Dec-2000 by Mahesh Chand
	MFC DLLs : Extension DLLs
	 
	This tutorial covers how to create an extension dll and use it from a 
C++ client application.
	 
	Mahesh Chand
	 
	13-Dec-2000
	 
	13-Dec-2000
	
MFC DLLs: Regular DLLs [Article, Visual C++] www.mindcracker.com 12-Dec-2000 by Mahesh Chand
	MFC DLLs: Regular DLLs
	 
	This tutorial covers how to create a regular dll and use it from a C++ 
client application.
	 
	Mahesh Chand
	 
	12-Dec-2000
	 
	12-Dec-2000
	
Decompiling Delphi [Article, Delphi] delphi.about.com 12-Dec-2000
	12-Dec-2000
	 
	12-Dec-2000
	 
	Decompiling Delphi
	 
	Whispering about reverse engineering Delphi applications: 'I have a 
Delphi program's .exe, can I decompile it and get the source?'
	
Document Synopsis (using: Lotus Notes 5) [Agent, Document, Lotus Notes, Tip] www.searchdomino.com 12-Dec-2000 by Mike Cunningham
Document Synopsis 
Mike Cunningham 
12 Dec 2000, Rating 3.62 (out of 5)
This agent creates a new document based off the document whose items you wish 
to examine. All item names and text values are compiled in a report.
It is coded as an agent to work with your mail d.b. and triggered off selected 
documents in a view. The report document is then placed in your inbox. You can 
tweek a few lines and use the code in any d.b. you wish. 
Code: Sub Initialize 
        Dim session As New NotesSession 
        Dim db As NotesDatabase 
        Dim dc As NotesDocumentCollection 
        Dim doc As NotesDocument 
        Dim testdoc As NotesDocument 
        Dim Body As NotesRichTextItem 
        Dim tempRTitem As NotesRichTextItem 
        Dim getItem As NotesItem 
        Dim theSub As String 
        Dim itemname As String 
        Dim itemType As Integer 
        Dim rtitemText As String 
        Dim richStyle As NotesRichTextStyle 
        Dim richStyle2 As NotesRichTextStyle 
        
        Set db = session.CurrentDatabase 
        Set dc = db.UnprocessedDocuments 
        
        Set richStyle = session.CreateRichTextStyle 
        richStyle.NotesFont = FONT_COURIER 
        richStyle.FontSize = 10 
        richStyle.Bold = True 
        
        Set richStyle2 = session.CreateRichTextStyle 
        richStyle2.NotesFont = FONT_COURIER 
        richStyle2.FontSize = 8 
        richStyle2.Bold = False 
        
        NumSel = dc.Count   
        
        For j = 1 To NumSel 
                Set doc = dc.GetNthDocument(j) 
                theSub = doc.GetItemValue("Subject")(0) 
                Set testdoc = New NotesDocument(db) 
                testdoc.Form = "Memo" 
                Set Body = New NotesRichTextItem(testdoc,"Body") 
                testdoc.Subject = ("Document Synopsis for: " & theSub) 
                Forall i In doc.items 
                        itemType = i.Type 
'                       itemValues(Ucase(i.Name)) = i.Text 
                       ... (cont.)
MFC DLLs : Basics [Article, Visual C++] www.mindcracker.com 11-Dec-2000 by Mahesh Chand
	MFC DLLs : Basics
	 
	Are you a beginner in VC++ programming and wondering what are dlls and 
how to create them? This article covers some basics.
	 
	Mahesh Chand
	 
	11-Dec-2000
	 
	11-Dec-2000
	
Call CoInitialize() Only Once (using: Visual C++ 6.0) [CoInitialize(), COM, CoInitializeEx(), Visual C++, Tip] www.pinnaclepublishing.com 08-Dec-2000
Call CoInitialize() Only Once
---------------------------------------------------------
The Microsoft documentation can sometimes be unclear, and 
in this case it is. Microsoft says that CoInitialize() 
should be called for once per thread in a process, but 
this can be misleading if you're writing a single-
threaded program.

The thing to remember with CoInitialize (and, of course, 
CoInitializeEx()) is to make sure that either of them is 
only called once in your entire program. A good place to 
call CoInitialize(), then, is when your program begins, 
in either InitInstance() or, better yet, 
CWinApp::InitApplication(). And just when you thought 
there was no need to override that function!
High-performance (or time-efficient) way to make sure the vector has enough space? (using: Visual C++ 6.0) [STL, vector, Visual C++, Tip] www.pinnaclepublishing.com 08-Dec-2000
Let's say that I have a vector of ints in STL code, and I 
know in advance that I want to add 100 integers to the 
vector. What's the most high-performance (or time-
efficient) way to make sure the vector has enough space?

It must just be me, but I seem to be fixated on STL. 
Anyway, let me demonstrate the answer to the Pop Quiz 
with a code snippet:

#include 
#include 
#include 

using namespace std;

int main()
{
      // Allocate a vector of integers
      vector  vec;

      // We need space for 100 integers.
      // Call vector::reserve() to do just that.
      vec.reserve(100);

      // The call above preallocates any memory we need
      // to make sure there's space for 100 entries.
      for (int i=0;i < 100;i++)
      {
            // Add the integers 1, 2, ..., 100 to the
            // vector
            vec.push_back(i + 1);
      }
}

Now, reserve() does *not* change the size of the vector, 
as the size is simply analogous to the count of how many 
elements are in the vector. If I have a count of 5 
elements in a vector, then its size is 5. However, if I 
call vec.reserve(10); it guarantees that I can add 10 
more elements onto the end of the vector, vec. Be aware 
that any calls to vector< >::reserve() may allocate 
memory, and if that should happen, any iterators may 
be invalidated. It's best to re-obtain iterators to 
vector elements after vector< >::reserve() has been 
called, since there's never any guarantee that 
vector< >::reserve() didn't allocate more memory.
Repair an access database using DAO [Article, Visual C++] www.mindcracker.com 08-Dec-2000 by Mahech Chand
	Repair an access database using DAO
	 
	See how you can repair a corrupted access database by using 
CDaoWorkspace's RepairDatabase method.
	 
	Mahech Chand
	. 
	08-Dec-2000
	 
	08-Dec-2000
	
Compacting a Database [Article, Visual C++] www.mindcracker.com 08-Dec-2000 by Mahech Chand
	Compacting a Database
	 
	Compacting is a regular activity for a Jet database. This article 
explains how to use DAO class CDaoWorkspace and ADO to compact a Jet database.
	 
	Mahech Chand
	. 
	08-Dec-2000
	 
	08-Dec-2000
	
ODBC Data Source Administration [Article, Visual C++] www.mindcracker.com 07-Dec-2000 by Mahesh Chand
	ODBC Data Source Administration
	 
	An overview of ODBC Admin.
	 
	Mahesh Chand
	 
	07-Dec-2000
	 
	07-Dec-2000
	
Report Control - An Outlook 2000-Style SuperGrid Control [Article, Visual C++] www.earthweb.com 07-Dec-2000 by Maarten Hoeben
	Report Control - An Outlook 2000-Style SuperGrid Control
	 
	Maarten Hoeben
	 
	7-Dec-2000
	 
	7-Dec-2000
	 
	This ReportCtrl control is an Outlook 98/2000 style SuperGrid control
	
Report Control - An Outlook 2000-Style SuperGrid Control [Listview, Update, Outlook, Article, Visual C++] www.codeguru.com 07-Dec-2000 by Maarten Hoeben
	List View Update
	
	 
	Report Control - An Outlook 2000-Style SuperGrid Control
	 
	Maarten Hoeben
	 
	Maarten's at it again with about 30 fixes and mods to the best 
Outlook-like grid on the net!
	
Changing Contents of a Property Page with a ComboBox [Dialog, Property Page, Article, Visual C++] www.codeguru.com 07-Dec-2000 by Peter Spooner
	Dialog
	
	 
	Changing Contents of a Property Page with a ComboBox
	 
	Peter Spooner
	 
	Technique for creating VS-style property pages where controls 
appear/disappear based on selected combo box options
	
Add ODBC Support to an Existing Application [Article, Visual C++] www.mindcracker.com 06-Dec-2000 by Mahesh Chand
	Add ODBC Support to an Existing Application
	 
	Do you have an application and want to use ODBC MFC classes to access a 
database. This tutorial guides to step by step to do so.
	 
	Mahesh Chand
	. 
	06-Dec-2000
	 
	06-Dec-2000
	
Dynamic Data Exchange (DDX) [Programming, Article, Visual C++] www.codeguru.com 06-Dec-2000 by Roger Onslow
	Programming
	
	 
	Dynamic Data Exchange (DDX)
	 
	Roger Onslow
	 
	What is it, how does it work, and how can we improve it
	
Dispinterface vs. Events and Runtime Sinks [Template, DISPID, ATL, Article, Visual C++] www.codeguru.com 06-Dec-2000 by Andrew Whitechapel
	Template
	
	 
	Dispinterface vs. Events and Runtime Sinks
	 
	Andrew Whitechapel
	 
	If your object wants to expose multiple interfaces to such clients, one 
solution is DISPID Encoding. This article shows how to do it with the ATL.
	
[Update] Custom Draw ListView Controls - Part II [Programming, ListView Control, MFC, Article, Visual C++] www.codeguru.com 06-Dec-2000 by Roger Onslow
	Programming
	
	 
	[Update] Custom Draw ListView Controls - Part II
	 
	Roger Onslow
	 
	Combines the lessons learned in the previous articles to create a 
generic custom-draw mechanism for all MFC custom control classes.
	
Finding Display Size of Dialog From Resource [Dialog, Resource, Article, Visual C++] www.codeguru.com 06-Dec-2000 by Shridhar Guravannavar
	Dialog
	
	 
	Finding Display Size of Dialog From Resource
	 
	Shridhar Guravannavar
	 
	Very useful information if you need to arrange position and size of 
other windows based upon the dialog size before the dialog gets displayed.
	
Launching NT Applications From Your Code [System, Article, Visual C++] www.codeguru.com 06-Dec-2000 by Michel Yossef David
	System
	
	 
	Launching NT Applications From Your Code
	 
	Michel Yossef David
	 
	Two utilities for launching NT application synchronously or 
asynchronously
	
Add ODBC CRecordView support to your SDI Application [Article, Visual C++] www.mindcracker.com 05-Dec-2000 by Mahesh Chand
	Add ODBC CRecordView support to your SDI Application
	 
	Are you creating a new SDI application? Do you want to provide ODBC MFC 
support to this application? See a step by step tutorial.
	 
	Mahesh Chand
	. 
	05-Dec-2000
	 
	05-Dec-2000
	
Holiday Gift Ideas for Delphi Coders [Article, Delphi] delphi.about.com 05-Dec-2000
	05-Dec-2000
	 
	05-Dec-2000
	 
	Holiday Gift Ideas for Delphi Coders
	 
	Everything you need to know about what every Delphi programmer desires, 
needs, wants ...
	
Persisting Data - A Guide to the Windows Registry - Part 1 [Article, Visual Basic] visualbasic.about.com 04-Dec-2000
	04-Dec-2000
	 
	04-Dec-2000
	  
	Persisting Data - A Guide to the Windows Registry - Part 1
	 
	Almost all modern apps now need to store settings or information 
between program sessions. In this article, your Visual Basic Guide introduces 
you to a couple of built in Visual Basic functions that make it easy to store 
and retrieve information from the Windows Registry.
	
How to change color of static button or other controls of a dialog? [Article, Visual C++] www.mindcracker.com 04-Dec-2000 by Mahesh Chand
	How to change color of static button or other controls of a dialog?
	 
	Sample project attached.
	 
	
	Mahesh Chand
	
	 
	04-Dec-2000
	 
	04-Dec-2000
	
Add DAO support to an existing application [Article, Visual C++] www.mindcracker.com 03-Dec-2000 by Mahesh Chand
	Add DAO support to an existing application
	 See how you can add DAO MFC support to an existing application. 
	Mahesh Chand
	. 
	03-Dec-2000
	 
	03-Dec-2000
	
Seting output directory of your project files [Article, Visual C++] www.mindcracker.com 03-Dec-2000 by Jeniffer P Walker
	Seting output directory of your project files
	 
	See how you can set output directory for your project files.
	 
	Jeniffer P Walker
	 
	03-Dec-2000
	 
	03-Dec-2000
	
Removing Image Noise with Adaptive Filters [Image Noise, Adaptive Filter, Article, Visual C++] C++ Users Journal 01-Dec-2000, vol. 18, no. 12 by Dwayne Phillips
	Removing Image Noise with Adaptive Filters
	 
	Dwayne Phillips
	  
	There is no such thing as a universal filter, but we can get close by 
building one that adapts to the local noise. Dwayne Phillips walks us through 
the math to make a filter look a little bit smart.
	
Effective Contour Creation with OpenGL Texture Mapping [OpenGL, Graphic, Article, Visual C++] C++ Users Journal 01-Dec-2000, vol. 18, no. 12 by Wenfei Wu
	Effective Contour Creation with OpenGL Texture Mapping
	 
	Wenfei Wu
	  
	In Graphics applications, ‘‘let the hardware do it’’ is generally good 
advice. Today’s graphics hardware keeps getting better and better, and OpenGL 
knows how to exploit its capabilities. Even producing contour plots can be a 
fairly painless operation.
	
A Class Template for N-Dimensional Generic Resizable Arrays [Class Template, N-Dimensional, Array, Dynamic Array, Article, Visual C++] C++ Users Journal 01-Dec-2000, vol. 18, no. 12 by Giovanni Bavestrelli
	A Class Template for N-Dimensional Generic Resizable Arrays
	 
	Giovanni Bavestrelli
	  
	Need Dynamic Arrays that are efficient and intuitive? Try a little 
template recursion and specialization.
	
Self Destructing Threads [Thread, Article, Visual C++] C++ Users Journal 01-Dec-2000, vol. 18, no. 12 by Mark Peterson
	Self Destructing Threads
	 
	Mark Peterson
	 
	A way to make threads easier to manage.
	
Fungible Control Structures [Control Structure, Article, Visual C++] C++ Users Journal 01-Dec-2000, vol. 18, no. 12 by Steve Dewhurst
	Steve Dewhurst
	 
	Fungible Control Structures
	 
	Steve presents some effective but unorthodox methods for controlling 
flow of execution - including one that looks downright weird.
	
STL & Generic Programming: Introduction to the STL [STL, C++, Article, Visual C++] C++ Users Journal 01-Dec-2000, vol. 18, no. 12 by Thomas Becker
	Thomas Becker
	 
	STL & Generic Programming: Introduction to the STL
	 
	Here’s a very brief history of the C++ Standard library, and a call to 
abandon the naive view that the STL is ‘‘just a bunch of containers.’’
	
Writing IDE Add-Ins in VB [IDE, Add-In, Visual Basic, Docking Window, Article, Visual C++] Windows Developer's Journal 01-Dec-2000, vol. 11, no. 12 by Jason Fisher
	Writing IDE Add-Ins in VB
	 
	Jason Fisher
	 
	The Visual Basic IDE is extendible in a number of ways, but why not 
write your extensions in Visual Basic? This article walks you through the 
process, and provides an add-in that displays the current project's 
dependencies in a Dockable Window.
	
Rebasing Win32 DLLs [Rebasing, Win32, DLL, Article, Visual C++] Windows Developer's Journal 01-Dec-2000, vol. 11, no. 12 by Thiadmer Riemersma
	Rebasing Win32 DLLs
	 
	Thiadmer Riemersma
	 
	The "D" in DLL stands for "Dynamic", and that refers in part to the 
fact that the operating system may have to load your DLL at a different base 
address than it was linked for. This article explains why that's an event worth 
avoiding, and provides a utility that tries to automatically base your DLL at 
an address that won't require dynamic relocation every time the DLL is loaded.
	
Understanding NT [Windows NT Embedded, Peformance Counter, Article, Visual C++] Windows Developer's Journal 01-Dec-2000, vol. 11, no. 12 by Paula Tomlinson
	Understanding NT
	 
	Paula Tomlinson
	 
	Lester Memmott asks about missing column code. Christoffer Schmiterlöw 
inquires whether Windows NT Embedded treats ATA flash memory as a hard drive. 
Finally, Art Cherubini writes about the travails of locating perfmon in various 
versions of Windows, and Paula supplies the world's simplest Peformance Counter 
DLL - a useful starting point that helps you ensure you can get your 
performance counters installed correctly.
	
User Interface Programming: Autocompletion and Autosuggestion [Autocompletion, Auto Suggest, Explorer, Article, Visual C++] Windows Developer's Journal 01-Dec-2000, vol. 11, no. 12 by Petter Hesselberg
	User Interface Programming: Autocompletion and Autosuggestion
	 
	Petter Hesselberg
	 
	Last month's column examined the new autocompletion and autosuggestion 
features for lists. This month's column explores the detailed features for 
filename autocompletion, and supplies an example of what you have to do to make 
an edit field a drop target for files dragged from Explorer.
	
COM Custom Categories Registration with ATL 3.0 [COM, Registration, ATL, Custom Category, Article, Visual C++] Windows Developer's Journal 01-Dec-2000, vol. 11, no. 12 by Antonello Salvatucci
	COM Custom Categories Registration with ATL 3.0
	 
	Antonello Salvatucci
	 
	A little code to automate the process of getting custom categories 
registered.
	
Selecting A Value for InitAtomTable() [Article, Visual C++] Windows Developer's Journal 01-Dec-2000, vol. 11, no. 12 by Ron Burk
	Selecting A Value for InitAtomTable()
	 
	Ron Burk
	 
	InitAtomTable() claims to work better when passed a prime; here's a 
small table that makes it easy to select the "right" prime number at runtime.
	
Identifying the Calling Function [Function, Article, Visual C++] Windows Developer's Journal 01-Dec-2000, vol. 11, no. 12 by Francois Leblanc
	Identifying the Calling Function
	 
	Francois Leblanc
	 
	For most programs, a small amount of inline assembly can get you the 
address of the function that called you.
	
A LoadImage() Bug [LoadImage(), Bug, Button, Bitmap, Transparent Color, Article, Visual C++] Windows Developer's Journal 01-Dec-2000, vol. 11, no. 12 by Chris Branch
	A LoadImage() Bug
	 
	Chris Branch
	 
	If you want a Button with a Bitmap face that contains a Transparent 
Color, you may run into this bug.
	
Fancy Menus, etc. [Menu, Article, Delphi] Delphi Informant 01-Dec-2000, vol. 6, no. 12 by Bruno Sonnino
	Fancy Menus, etc.
	 
	Bruno Sonnino
	 
	Bruno Sonnino begins his new tips column by showing us how to rotate 
text, create special lines, and customize menus with various fonts, bitmaps, 
shapes, and colors.
	
Implementing COM+ Events [COM+, Event, Event Publisher, Event Subscriber, Article, Delphi] Delphi Informant 01-Dec-2000, vol. 6, no. 12 by Binh Ly
	Implementing COM+ Events
	 
	Binh Ly
	 
	Binh Ly introduces the COM+ loosely-coupled event (LCE) system, and 
demonstrates its three core concepts: the event class, the Event Publisher, and 
the Event Subscriber.
	
New List Objects [Contnrs Unit, TObjectList, TComponentList, Article, Delphi] Delphi Informant 01-Dec-2000, vol. 6, no. 12 by Jeremy Merrill
	New List Objects
	 
	Jeremy Merrill
	 
	Jeremy Merrill demonstrates classes from the new Contnrs Unit, such as 
TObjectList and TComponentList, which can manipulate objects and components 
without additional code.
	
Two Office Web Components [Office, Web, Office Web Component, OWC, Excel, Article, Delphi] Delphi Informant 01-Dec-2000, vol. 6, no. 12 by Alex Fedorov
	Two Office Web Components
	 
	Alex Fedorov
	 
	Alex Fedorov puts two of the Office Web Components (OWC) through their 
paces, to easily add - for example - a bit of Microsoft Excel functionality to 
your Delphi applications.
	
Make Web Browsing Easier [Web, Web Server, Article, Visual C++] Visual C++ Developers Journal 01-Dec-2000, vol. 3, no. 11 by Dan Wahlin
	Make Web Browsing Easier
	 
	Dan Wahlin
	 
	Tired of an overloaded Web Server? Learn to create a hierarchical menu 
system that streamlines how users access your site.
	
Build a Shopping Cart Page With C# [Shopping Cart, Web, ASP+, C#, .NET, Article, Visual C++] Visual C++ Developers Journal 01-Dec-2000, vol. 3, no. 11 by Bob Lair, Jason Lefebvre
	Build a Shopping Cart Page With C#
	 
	Bob Lair and Jason Lefebvre
	 
	Build sophisticated Web forms for your commerce app, including a 
shopping cart ASP+ page you’ll write in C#. Check out the second of this 
three-part series on building a commerce app from the ground up using C# and 
.NET.
	
Unleash RosettaNet on Muddled Communications [Article, Visual C++] Visual C++ Developers Journal 01-Dec-2000, vol. 3, no. 11 by Cal Caldwell
	Unleash RosettaNet on Muddled Communications
	 
	Cal Caldwell
	 
	Use RosettaNet PIPs to raze the Tower of Babel that prevents 
business-to-business communication.
	
7 Tips for Mastering the Debugger [Debugger, Article, Visual C++] Visual C++ Developers Journal 01-Dec-2000, vol. 3, no. 11 by Bill Wagner
	7 Tips for Mastering the Debugger
	 
	Bill Wagner
	 
	Learn techniques instrumental in harnessing the elusive debugger - 
helpful even for the most accomplished programmer.
	
Build a Web Service With SOAP [Web Services, SOAP, ATL, COM, Article, Visual C++] Visual C++ Developers Journal 01-Dec-2000, vol. 3, no. 11 by Alan Gordon
	Build a Web Service With SOAP
	 
	Alan Gordon
	 
	SOAP can be tough to use from Visual C++. Here's how to create a Web 
service with an ATL-based COM object and make calls from a VC++ application.
	
To Precompile Or Not to precompile? [COM, IDL, Header File, Article, Visual C++] Visual C++ Developers Journal 01-Dec-2000, vol. 3, no. 11 by Andy Harding
	To Precompile Or Not to precompile?
	 
	Andy Harding
	 
	Discover why COM uses IDL - rather than C++ Header Files - to describe 
its interfaces, and explore the benefits (and dangers) of precompiling.
	
Is ATL Dead? [ATL, .NET, COM, Article, Visual C++] Visual C++ Developers Journal 01-Dec-2000, vol. 3, no. 11 by Richard Grimes
	Is ATL Dead?
	 
	Richard Grimes
	 
	.NET promises much for future versions of Windows, but will it be the 
grim reaper of COM and ATL?
	
Use Property Bags to Grasp COM Persistence [Property Bag, COM, Persistence, Article, Visual C++] Visual C++ Developers Journal 01-Dec-2000, vol. 3, no. 11 by George Shepherd
	Use Property Bags to Grasp COM Persistence
	 
	George Shepherd
	 
	Save and retrieve named values one at a time using COM property bags - 
a flexible, version-independent random-access means of reading and writing 
individual named values.
	
Design Fast and Scalable Apps [Scalability, Performance, MTS, COM+, XML, Article, Visual Basic] Visual Basic Programmer's Journal 01-Dec-2000, vol. 10, no. 14 by Ash Rofail
	Design Fast and Scalable Apps
	 
	Ash Rofail
	 
	Scalability and Performance are competing priorities when you develop 
enterprise applications, but you don’t need to sacrifice one to achieve the 
other. Learn how to satisfy both goals with techniques involving MTS/COM+ and 
XML.
	
Web Services Come of Age [Web Services, Article, Visual Basic] Visual Basic Programmer's Journal 01-Dec-2000, vol. 10, no. 14 by Don Dugdale
	Web Services Come of Age
	 
	Don Dugdale
	 
	Application service providers are now offering Web-hosted services for 
developers - a harbinger of things to come.
	
10 Ways to Prepare for VB.NET [VB.NET, .NET, Article, Visual Basic] Visual Basic Programmer's Journal 01-Dec-2000, vol. 10, no. 14 by Billy Hollis
	10 Ways to Prepare for VB.NET
	 
	Billy Hollis
	 
	The way you code in VB.NET will differ from how you code in VB now. 
Start using these 10 coding practices today to ease your migration to VB.NET.
	
Take Control of Your Build Cycle [Article, Visual Basic] Visual Basic Programmer's Journal 01-Dec-2000, vol. 10, no. 14 by LJ Johnson
	Take Control of Your Build Cycle
	 
	LJ Johnson
	 
	Take the pain out of your build process by creating components to 
automate the cycle. Here’s how to design your own compile-cycle code.
	
Build Your Own ActiveX Control [ActiveX Control, Article, Visual Basic] Visual Basic Programmer's Journal 01-Dec-2000, vol. 10, no. 14 by Stan Schultes
	Build Your Own ActiveX Control
	 
	Stan Schultes
	 
	Hyperlink is a labeled URL control you can reuse in your own projects 
and use as a model for building your own ActiveX controls. Learn the basics of 
ActiveX control creation with a sample Hyperlink control.
	
Handle File I/O [File, Article, Visual Basic] Visual Basic Programmer's Journal 01-Dec-2000, vol. 10, no. 14 by Ron Schwarz
	Handle File I/O
	 
	Ron Schwarz
	 
	Learn the ins and outs of file I/O to write fast, compact, and 
efficient VB code.
	
Manage Application Settings With XML [XML, INI File, ActiveX, Article, Visual Basic] Visual Basic Programmer's Journal 01-Dec-2000, vol. 10, no. 14 by A Russell Jones
	Manage Application Settings With XML
	 
	A Russell Jones
	 
	Say goodbye to the drawbacks of INI files by using an XML format 
instead. Learn how to translate INI files to XML and use ActiveX to update the 
files.
	
Avoid Writing Tedious, Boring Code [Collection Class, Iterator, Article, Visual Basic] Visual Basic Programmer's Journal 01-Dec-2000, vol. 10, no. 14 by Marc D'Aoust
	Avoid Writing Tedious, Boring Code
	 
	Marc D'Aoust
	 
	Learn how to create class templates based on object-oriented patterns, 
while replacing the wizard-generated Collection Class with a flexible template 
based on the Iterator pattern.
	
Manipulate Your Message Boxes [Article, Visual Basic] Visual Basic Programmer's Journal 01-Dec-2000, vol. 10, no. 14 by Karl E Peterson
	Manipulate Your Message Boxes
	 
	Karl E Peterson
	 
	Learn to control the position of a message box or uncover an obscured 
message box. Also, discover how to create an object clone.
	
Get Your Sort in Order [Sort, SQL Server, Article, Visual Basic] Visual Basic Programmer's Journal 01-Dec-2000, vol. 10, no. 14 by Michael Kaplan
	Get Your Sort in Order
	 
	Michael Kaplan
	 
	How you order your data can be crucial to your customers, no matter 
what their preferred language. The author shows how you can use the new SQL 
Server 2000 COLLATE keyword to help support multilingual sorting.
	
Cache ASP Recordsets the "Exstream" Way [ASP, Recordset, Article, Visual Basic] Visual Basic Programmer's Journal 01-Dec-2000, vol. 10, no. 14 by Jonathan Goodyear
	Cache ASP Recordsets the "Exstream" Way
	 
	Jonathan Goodyear
	 
	Caching recordsets using the new ADO stream object helps keep your Web 
apps scalable and more flexible.
	
Apply Data Mining to Your DBs [SQL Server, OLAP, Article, Visual Basic] Visual Basic Programmer's Journal 01-Dec-2000, vol. 10, no. 14 by Andrew J Brust
	Apply Data Mining to Your DBs
	 
	Andrew J Brust
	 
	Use SQL Server 2000’s data mining instead of, or in addition to, OLAP 
to analyze and determine data patterns.
	
Juice Up Controls With Windows API [SendMessage(), Article, Visual Basic] Visual Basic Programmer's Journal 01-Dec-2000, vol. 10, no. 14 by Andrew J Marshall
	Juice Up Controls With Windows API
	 
	Andrew J Marshall
	 
	Understand the SendMessage() API function and you’ll open the door to a 
wealth of control enhancement opportunities.
	
COM+ and Windows 2000: Ten Tips and Tricks for Maximizing COM+ Performance [COM+, Windows 2000, Performance, Article, Visual C++] MSDN Magazine 01-Dec-2000, vol. 15, no. 12 by David S Platt
	COM+ and Windows 2000: Ten Tips and Tricks for Maximizing COM+ 
Performance
	 
	David S Platt
	 
	
	
Garbage Collection - Part 2: Automatic Memory Management in the Microsoft .NET Framework [Garbage Collection, Automatic Memory Management, .NET, Article, Visual C++] MSDN Magazine 01-Dec-2000, vol. 15, no. 12 by Jeffrey Richter
	Garbage Collection - Part 2: Automatic Memory Management in the 
Microsoft .NET Framework
	 
	Jeffrey Richter
	 
	
	
Custom Debugging - Active Scripting APIs: Add Powerful Custom Debugging to Your Script-Hosting App [Debugging, Active Scripting, Article, Visual C++] MSDN Magazine 01-Dec-2000, vol. 15, no. 12 by Mike Pellegrino
	Custom Debugging - Active Scripting APIs: Add Powerful Custom Debugging 
to Your Script-Hosting App
	 
	Mike Pellegrino
	 
	
	
Visual Basic: Inspect COM Components Using the TypeLib Information Object Library [COM, Component, TypeLib Information Object Library, Visual Basic, Article, Visual C++] MSDN Magazine 01-Dec-2000, vol. 15, no. 12 by Jason Fisher
	Visual Basic: Inspect COM Components Using the TypeLib Information 
Object Library
	 
	Jason Fisher
	 
	
	
ActiveX and Visual Basic: Enhance the Display of Long Text Strings in a Combobox or Listbox [ActiveX, Combobox, Listbox, Visual Basic, Article, Visual C++] MSDN Magazine 01-Dec-2000, vol. 15, no. 12 by John Calvert
	ActiveX and Visual Basic: Enhance the Display of Long Text Strings in a 
Combobox or Listbox
	 
	John Calvert
	 
	
	
MMC: Designing TView, a System Information Viewer MMC Snap-in [MMC, Snap-in, Article, Visual C++] MSDN Magazine 01-Dec-2000, vol. 15, no. 12 by Tom Boldt
	MMC: Designing TView, a System Information Viewer MMC Snap-in
	 
	Tom Boldt
	 
	
	
Client-side Cookies [Cookie, Article, Visual C++] MSDN Magazine 01-Dec-2000, vol. 15, no. 12 by Robert Hess
	Client-side Cookies
	 
	Robert Hess
	 
	
	
Unchecking Checkboxes [Checkbox, Article, Visual C++] MSDN Magazine 01-Dec-2000, vol. 15, no. 12 by Robert Hess
	Unchecking Checkboxes
	 
	Robert Hess
	 
	
	
Microsoft.com Toolbar [Toolbar, Article, Visual C++] MSDN Magazine 01-Dec-2000, vol. 15, no. 12 by Robert Hess
	Microsoft.com Toolbar
	 
	Robert Hess
	 
	
	
WebBrowser Control [WebBrowser Control, Article, Visual C++] MSDN Magazine 01-Dec-2000, vol. 15, no. 12 by Robert Hess
	WebBrowser Control
	 
	Robert Hess
	 
	
	
Element Behaviors in Internet Explorer 5.5 [Internet Explorer, Article, Visual C++] MSDN Magazine 01-Dec-2000, vol. 15, no. 12 by Dino Esposito
	Element Behaviors in Internet Explorer 5.5
	 
	Dino Esposito
	 
	
	
Is COM Dead? [COM, Article, Visual C++] MSDN Magazine 01-Dec-2000, vol. 15, no. 12 by Don Box
	Is COM Dead?
	 
	Don Box
	 
	
	
.NET - Type Fundamentals [.NET, Type, Article, Visual C++] MSDN Magazine 01-Dec-2000, vol. 15, no. 12 by Jeffrey Richter
	.NET - Type Fundamentals
	 
	Jeffrey Richter
	 
	
	
Improving Runtime Performance with the Smooth Working Set Tool - Part 2 [Performance, Working Set Tuner, Article, Visual C++] MSDN Magazine 01-Dec-2000, vol. 15, no. 12 by John Robbins
	Improving Runtime Performance with the Smooth Working Set Tool - Part 2
	 
	John Robbins
	 
	
	
Sending Messages in Windows, Adding Hot Keys to your Application [Message, Hot Key, Article, Visual C++] MSDN Magazine 01-Dec-2000, vol. 15, no. 12 by Paul DiLascia
	Sending Messages in Windows, Adding Hot Keys to your Application
	 
	Paul DiLascia
	 
	
	
Add DAO support to your SDI Application [Article, Visual C++] www.mindcracker.com 01-Dec-2000 by Mahesh Chand
	Add DAO support to your SDI Application
	 
	This tutorial explains step by step how to add DAO support to your SDI 
application.
	 
	Mahesh Chand
	. 
	01-Dec-2000
	 
	01-Dec-2000
	
A Directory Picker Class [Article, Visual C++] www.mindcracker.com 01-Dec-2000 by Mahesh Chand
	A Directory Picker Class
	 
	A class which let you pick a directory. similar to CFileDialog.
	 
	Mahesh Chand
	. 
	01-Dec-2000
	 
	01-Dec-2000
	
Using Delphi 5's ActiveX Data Objects [ActiveX Data Objects, ADO, Article, Delphi] Delphi Developer 01-Dec-2000, vol. 6, no. 12 by Bob Swart
	Using Delphi 5's ActiveX Data Objects
	 
	Bob Swart
	 
	One of the great new features of Delphi 5 is support for Microsoft's 
ActiveX Data Objects (ADO). In this article, Bob Swart takes a closer look at 
this support and shows how it's similar to—and different from—the good old 
Borland Database Engine (BDE) you've worked with in the past.
	
Component Best Practices: Creating a Component Editor [Component, Article, Delphi] Delphi Developer 01-Dec-2000, vol. 6, no. 12 by Peter Morris
	Component Best Practices: Creating a Component Editor
	 
	Peter Morris
	 
	This article is the third part of a series on components. Part 1 
covered component basics and some best practices advice, and Part 2 covered how 
to write advanced properties and how to write custom streaming for those 
properties and sub-properties. In this installment, Peter Morris explains 
component editors.
	
Jazz Up Your User Interface with Flashy Borders [Border, Article, Delphi] Delphi Developer 01-Dec-2000, vol. 6, no. 12 by Keith Wood
	Jazz Up Your User Interface with Flashy Borders
	 
	Keith Wood
	 
	Want to add a bit of spice to your user interface? How about some 
attention-grabbing borders around certain areas? In this article, Keith Wood 
shows you not only how to do it, but also how to make a component out of it so 
it's easy to use!
	
Creating a TMemo That Saves its Text with Unique Filenames [TMemo, Filename, Article, Delphi] Delphi Developer 01-Dec-2000, vol. 6, no. 12 by Mark Meyer
	Creating a TMemo That Saves its Text with Unique Filenames
	 
	Mark Meyer
	 
	Mark Meyer presents a nice little tool that allows your users to write 
all of the text of a TMemo, or just the selected text, to a file. It also gives 
users the ability to derive a series of unique filenames by setting an initial 
sequence number to the specified base Filename property, and more.
	
Why Choose Lotus Notes Domino Over Microsoft Exchange 2000? [Domino, Exchange, Article, Lotus Notes] Notes Advisor 01-Dec-2000 by Terrance A Crow
EDITOR'S VIEW - Lotus Notes & Domino Advisor - December 2000 
	Why Choose Lotus Notes Domino Over Microsoft Exchange 2000?
	 
	Terrance A Crow
	
Import E-Mail into any Notes Application [E-Mail, Article, Lotus Notes] Notes Advisor 01-Dec-2000 by Michael Sobczak
Notes Development - Lotus Notes & Domino Advisor - December 2000 
	Import E-Mail into any Notes Application
	 
	Michael Sobczak
	
Open Your Applications [Article, Lotus Notes] Notes Advisor 01-Dec-2000 by Shahir A Daya
Notes Development - Lotus Notes & Domino Advisor - December 2000 
	Open Your Applications
	 
	Shahir A Daya
	
Use Lists in Your LotusScript [List, LotusScript, Article, Lotus Notes] Notes Advisor 01-Dec-2000 by Martin Leon
Notes Development - Lotus Notes & Domino Advisor - December 2000 
	Use Lists in Your LotusScript
	 
	Martin Leon
	
Take Advantage of the C++ API [C++, API, Article, Lotus Notes] Notes Advisor 01-Dec-2000 by Colin Judge, Brad Balassaitis
Notes Development - Lotus Notes & Domino Advisor - December 2000 
	Take Advantage of the C++ API
	 
	Colin Judge and Brad Balassaitis
	
Use Frames to Control Content and Navigation [Article, Lotus Notes] Notes Advisor 01-Dec-2000 by Graham Kerswell
Notes Development - Lotus Notes & Domino Advisor - December 2000 
	Use Frames to Control Content and Navigation
	 
	Graham Kerswell
	
Use Notes URLs as a Navigation Solution [URL, Article, Lotus Notes] Notes Advisor 01-Dec-2000 by Hans van der Burg
Notes Development - Lotus Notes & Domino Advisor - December 2000 
	Use Notes URLs as a Navigation Solution
	 
	Hans van der Burg
	
How To Get IP Address Of A Machine [C#, IP Address, DNS, Article, Visual C++] www.codeproject.com 01-Dec-2000 by Naveen K Kohli
	C#
	
	 
	How To Get IP Address Of A Machine
	 
	Naveen K Kohli
	 
	Tip on how to use DNS class and get IP address of a machine
	
Resizing Controls at run time [Control, Article, Visual C++] www.codeproject.com 01-Dec-2000 by Amit Nabarro
	Control
	
	 
	Resizing Controls at run time
	 
	Amit Nabarro
	 
	A method to allow the user to visually resize and position any control 
at run time
	
Time to Complete Progress Control [Control, Progress Control, Article, Visual C++] www.codeproject.com 01-Dec-2000 by Craig Henderson
	Control
	
	 
	Time to Complete Progress Control
	 
	Craig Henderson
	 
	A progress control that tells the user how long an operation has left 
to complete
	
Redmond Again - Part 4 [Article, Article, Visual C++] www.codeproject.com 01-Dec-2000 by Chris Maunder
	Article
	
	 
	Redmond Again - Part 4
	 
	Chris Maunder
	 
	CodeProject, again, Does Redmond.
	
Smart Translator [Tool, Article, Visual C++] www.codeproject.com 01-Dec-2000 by Mike Walter
	Tool
	
	 
	Smart Translator
	 
	Mike Walter
	 
	Application to aid in the language translation of another application's 
resources.
	
Custom Drawn Controls using WTL [Windows Template Library, WTL, Article, Visual C++] www.codeproject.com 01-Dec-2000 by Billy Leverington
	Windows Template Library
	
	 
	Custom Drawn Controls using WTL
	 
	Billy Leverington
	 
	How to use WTL to create custom controls
	
CINI Class [Article, Visual C++] www.mindcracker.com 30-Nov-2000 by Mike Shoemaker
	CINI Class
	 
	A class for reading/writing data from/to an ini file.
	 
	Mike Shoemaker
	. 
	30-Nov-2000
	 
	30-Nov-2000
	
Embed OpenGL inside Java AWT Canvas [Java, AWT, OpenGL, Article, Visual C++] www.codeproject.com 30-Nov-2000 by Davanum Srinivas
	Java
	
	 
	Embed OpenGL inside Java AWT Canvas
	 
	Davanum Srinivas
	 
	This article shows how to use OpenGL calls inside Java AWT Canvas using 
JDK1.3's JAWT interface
	
Redmond Again - Part 3 [Article, Article, Visual C++] www.codeproject.com 30-Nov-2000 by Chris Maunder
	Article
	
	 
	Redmond Again - Part 3
	 
	Chris Maunder
	 
	CodeProject, again, Does Redmond.
	
Transparency without Source Code [Windows 2000, Transparency, Article, Visual C++] www.codeproject.com 30-Nov-2000 by Bernhard Hammer
	Windows 2000
	
	 
	Transparency without Source Code
	 
	Bernhard Hammer
	 
	Adding transparency to any window, even if you don't have its source
	
Debugging Windows Programs [Debugging, Tool, Visual C++, Windows Development, Book] Purchased 28-Nov-2000, $68

Transferring data using MFC DAO classes [Article, Visual C++] www.mindcracker.com 29-Nov-2000 by Mahesh Chand
	Transferring data using MFC DAO classes
	... 
	This article explains how to transfer data from one database to another 
by using MFC ADO classes.
	 
	Mahesh Chand
	 
	29-Nov-2000
	 
	29-Nov-2000
	
Quick and Dirty Collection Class Notes [C++, MFC, STL, Collection Class, MFC, Article, Visual C++] www.codeproject.com 29-Nov-2000 by Joe Harleman
	C++ MFC STL
	
	 
	Quick and Dirty Collection Class Notes
	 
	Joe Harleman
	 
	An article describing MFC Collection Classes
	
Writing Customizable AboutBox Component [C#, Article, Visual C++] www.codeproject.com 29-Nov-2000 by Naveen K Kohli
	C#
	
	 
	Writing Customizable AboutBox Component
	 
	Naveen K Kohli
	 
	Shows how to write a component using C#.
	
Redmond Again - Part 2 [Article, Article, Visual C++] www.codeproject.com 29-Nov-2000 by Chris Maunder
	Article
	
	 
	Redmond Again - Part 2
	 
	Chris Maunder
	 
	CodeProject, again, Does Redmond.
	
Your first MP3 Delphi player [Article, Delphi] delphi.about.com 28-Nov-2000
	28-Nov-2000
	 
	28-Nov-2000
	 
	Your first MP3 Delphi player
	 
	See how to build a full-blown mp3 player with Delphi in just a few 
seconds. Even more: get the ID3 tag information from a mp3 file and change it!
	
Asynchronous Windows Socket Class [Network, Socket, Article, Visual C++] www.codeguru.com 28-Nov-2000 by Roman Ukhov
	Network
	
	 
	Asynchronous Windows Socket Class
	 
	Roman Ukhov
	 
	Great class that is much more flexible than CAsyncSocket since it uses 
overlapped I/O instead of a message queue
	
Internet Explorer-Style Options Panel [Dialog, Internet Explorer, Property Page, Article, Visual C++] www.codeguru.com 28-Nov-2000 by Andy Brown
	Dialog
	
	 
	Internet Explorer-Style Options Panel
	 
	Andy Brown
	 
	This class implements a control that is designed to have the look and 
feel of the Internet Explorer 'Advanced Options' Property Page.
	
CButtonST v2.6 (MFC Flat buttons) [Button Control, MFC, Article, Visual C++] www.codeproject.com 28-Nov-2000 by Davide Calabro
	Button Control
	
	 
	CButtonST v2.6 (MFC Flat buttons)
	 
	Davide Calabro
	 
	A fully featured owner-draw button class - it's got the lot!
	
CSS For Beginners [HTML, CSS, Article, Visual C++] www.codeproject.com 28-Nov-2000 by Nongjian Zhou
	HTML CSS
	
	 
	CSS For Beginners
	 
	Nongjian Zhou
	 
	Add CSS to your HTML files.
	
Customising your website's Icon in IE5 [HTML, CSS, Article, Visual C++] www.codeproject.com 28-Nov-2000 by Chris Maunder
	HTML CSS
	
	 
	Customising your website's Icon in IE5
	 
	Chris Maunder
	 
	Replace the boring IE logo in your readers browser with an icon 
customised for your site.
	
HTML For Beginners [HTML, CSS, Article, Visual C++] www.codeproject.com 28-Nov-2000 by Nongjian Zhou
	HTML CSS
	
	 
	HTML For Beginners
	 
	Nongjian Zhou
	 
	A tutorial for those who want to learn HTML in a quick and easy way.
	
Set a fixed text size in your HTML [HTML, CSS, Article, Visual C++] www.codeproject.com 28-Nov-2000 by Nongjian Zhou
	HTML CSS
	
	 
	Set a fixed text size in your HTML
	 
	Nongjian Zhou
	 
	A very useful tip. How to keep your fonts a fixed size so your readers 
cannot can change it in their browser, ensuring your page always has the same 
look.
	
Create Dynamic Banners By Using JavaScript [JavaScript, Article, Visual C++] www.codeproject.com 28-Nov-2000 by Nongjian Zhou
	JavaScript
	
	 
	Create Dynamic Banners By Using JavaScript
	 
	Nongjian Zhou
	 
	This article show how to use JavaScript to dynamically display banners, 
very usful!
	
Create Templates using JavaScript [Javascript, Article, Visual C++] www.codeproject.com 28-Nov-2000 by Nongjian Zhou
	Javascript
	
	 
	Create Templates using JavaScript
	 
	Nongjian Zhou
	 
	There are many ways to create a web page templete. Using JavaScript is 
one of easiest ways
	
Redmond Again - Part 1 [Article, Article, Visual C++] www.codeproject.com 28-Nov-2000 by Chris Maunder
	Article
	
	 
	Redmond Again - Part 1
	 
	Chris Maunder
	 
	CodeProject, again, Does Redmond.
	
WTL bugs [Windows Template Library, WTL, ATL, Article, Visual C++] www.codeproject.com 28-Nov-2000 by Paul Bludov
	Windows Template Library
	
	 
	WTL bugs
	 
	Paul Bludov
	 
	Known WTL & ATL bugs
	
Context Menu Shell Extension AppWizard [ATL, Context Menu, Shell Extension, Article, Visual C++] www.codeproject.com 27-Nov-2000 by Maxime Labelle
	Context Menu Shell Extension AppWizard
	 
	Maxime Labelle
	 
	A wizard to ease implementing a context menu shell extension
	
The Complete Idiot's Guide to Writing Shell Extensions [Shell Programming, Shell Extension, Article, Visual C++] www.codeproject.com 27-Nov-2000 by Michael Dunn
	The Complete Idiot's Guide to Writing Shell Extensions
	 
	Michael Dunn
	 
	An index of all the articles in the Idiot's Guide
	
The Complete Idiot's Guide to Writing Shell Extensions, Part IX [Shell Programming, Shell Extension, Icon, File, Article, Visual C++] www.codeproject.com 27-Nov-2000 by Michael Dunn
	The Complete Idiot's Guide to Writing Shell Extensions, Part IX
	 
	Michael Dunn
	 
	A tutorial on writing an extension to customize the Icons displayed for 
a File type.
	
Getting Started Reverse Engineering (using: Visual C++ 6.0) [Debugging, Article, Visual C++] www.codeguru.com 27-Nov-2000 by John Robbins
	Getting Started Reverse Engineering
	 
	John Robbins,
	 
	John discusses how to get started thinking about reverse engineering so 
you can figure out how things work.
	
Generalizing Custom-Draw to other MFC Custom Control Classes [Windows Programming, Article, Visual C++] www.codeguru.com 27-Nov-2000 by Roger Onslow
	Generalizing Custom-Draw to other MFC Custom Control Classes
	 
	Roger Onslow
	 
	Combines the lessons learned in the previous articles to create a 
generic custom-draw mechanism for all MFC custom control classes.
	
Pocket Scribble, Part II [CE Programming, Article, Visual C++] www.codeguru.com 27-Nov-2000 by Christian Skovdal Andersen
	Pocket Scribble, Part II
	 
	Christian Skovdal Andersen
	 
	Second part of great tutorial on porting MFC Scribble sample to Windows 
CE
	
Writing Windows Form Application For .NET Framework Using C# [C#, .NET, Article, Visual C++] www.codeproject.com 25-Nov-2000 by Naveen K Kohli
	Writing Windows Form Application For .NET Framework Using C#
	 
	Naveen K Kohli
	 
	A tutorial on writing Windows Forms application using C#
	
How to Implement Drag and Drop Between Your Program and Explorer [Shell Programming, Drag and Drop, File, Explorer, Article, Visual C++] www.codeproject.com 25-Nov-2000 by Michael Dunn
	How to Implement Drag and Drop Between Your Program and Explorer
	 
	Michael Dunn
	 
	A step-by-step description of how to drag and drop Files between your 
application and Explorer windows.
	
AutoText Class Module [Class Module, Validation, Textbox Control, Event, Article, Visual Basic] www.vb2themax.com 25-Nov-2000 by Jaroslaw Zwierz
	AutoText Class Module
	  
	25-Nov-2000
	 
	25-Nov-2000
	 
	Jaroslaw Zwierz
	 
	This class can help in simplifying most of the Validation chores in 
your UI-intensive apps. The class "wraps" around a Textbox Control and traps 
most of its Events, to automatically handle the most common cases: numeric 
fields, all uppercase fields, fields that should be highlighted on entry, or 
formatted on exit. A little, nice addition to your programming toolbox.
	
MFC Client for ATL Server: explains how to use an ATL server from your MRC client [MFC, ATL Server, ATL, Article, Visual C++] www.mindcracker.com 25-Nov-2000 by Pat Watten
	MFC Client for ATL Server: explains how to use an ATL server from your 
MRC client
	 
	Pat Watten
	 
	25-Nov-2000
	 
	25-Nov-2000
	 
	This article explains how to use ATL Server in MFC client.
	 
	MyServer is an ATL COM server object DLL called MyServr. It implements 
a custom interface, IMyServer, which exposes a method called MyMethod.
	 
	There are four steps to use an ATL server from an MFC client.
	 
	1. Initializing the COM Libraries
	 
	Calling AfxOleInit function, which initializes the COM libraries is in 
the InitInstance function of the application class is the best way to 
initialize COM.
	 
 //Init OLE libraries and support
 if (!AfxOleInit())
 {
 AfxMessageBox("COM initialization failed");
 return FALSE;
 }
  
	OR you call
	 
 InitializeCOM(NULL);
  
	2. Obtaining the CLSID of a COM Object
	 
	If you know the Program ID of the object, CLSIDFromProgID function can 
be used to convert ProgID to CLSID.
	 
 CLSID clsID;
 HRESULT hr;
 
 hr= CLSIDFromProgID(OLESTR("MyServr.Object1"), &clsID);
 if(FAILED(hr))
 {
 AfxMessageBox("CLSID Conversion From ProgID failed");
 return FALSE;
 }
  
	MyServr.Object1 is the program ID of the server.
	 
	3. Creating the COM Object
	 
	Using import directive is the simplest method to create an object.
	 
 #import"D:\VS\MyProjects\MySvr\MyServr.tlb" no_namespace
  
	Now call CreateInstance to create an instance of the object.
	 
 CLSID clsID;
 HRESULT hr;
 //declare smart pointer
 IMyServerPtr m_pMyObj;
 
 hr= CLSIDFromProgID(OLESTR("MyServr.Object1"), &clsID);
 if(FAILED(hr))
 {
 AfxMessageBox("CLSID Conversion From ProgID failed");
 return FALSE;
 }
 m_pMyObj.CreateInstance(clsID); //does the work of CoCreateInstance
  
	4. Using the COM Object
	 
	Now call interface's method MyMethod.
	 
 m_pMyObj->MyMethod();
  
	5. Uninitializing the COM Libraries
	 
	In the case of the smart pointer implementation, the cleanup is handled 
automatically.
	 
	OR
	 
 Call UnInitialize(); if you have call ... (cont.)
Searching for a string in a multi line edit box [Article, Visual C++] www.mindcracker.com 25-Nov-2000 by Mahesh Chand
	Searching for a string in a multi line edit box
	 
	Attached sample code explains how to search for a string in a multi 
line edit box and more
	 
	Mahesh Chand
	 
	25-Nov-2000
	 
	25-Nov-2000
	
Limit of a text box [Article, Visual C++] www.mindcracker.com 25-Nov-2000 by Jeniffer P Walker
	Limit of a text box
	 
	An article which tells you about limit of number of characters for an 
edit box
	 
	Jeniffer P Walker
	 
	25-Nov-2000
	 
	25-Nov-2000
	
COM+ Tutorial From Scratch: Part 1 [Article, Visual C++] www.mindcracker.com 25-Nov-2000 by Mahesh Chand
	COM+ Tutorial From Scratch: Part 1
	 
	Part 1 of COM+ tutorial tells you about COM+ and its components and how 
these components fit in real world applications.
	 
	Mahesh Chand
	 
	25-Nov-2000
	 
	25-Nov-2000
	
Default Printing Support for MDI/SDI using AppWizard [Article, Visual C++] www.mindcracker.com 25-Nov-2000 by Mahesh Chand
	Default Printing Support for MDI/SDI using AppWizard
	 
	MFC AppWizard provides default printing supports to an MDI/SDI MFC 
application.
	 
	Mahesh Chand
	 
	25-Nov-2000
	 
	25-Nov-2000
	
Sex At Noon Taxes [Sample, Article, Visual C++] www.codeproject.com 24-Nov-2000 by Colin Davies
	Sex At Noon Taxes
	 
	Colin Davies
	 
	Very basic implementation of Microphone to record sound using mmsystem
	
FTP Client for Pocket PC [CE Programming, Article, Visual C++] www.codeguru.com 24-Nov-2000 by Waseem Anis
	FTP Client for Pocket PC
	 
	Waseem Anis
	 
	Single-threaded, CSocket-based class that illustrates the functionality 
offered by the PocketPC device for socket data transfer
	
File Searcher Edit Control with Browse Button [File, Folder, Update, Article, Visual C++] www.codeguru.com 24-Nov-2000 by Pete Arends
	File Searcher Edit Control with Browse Button
	 
	Pete Arends
	 
	Single control that contains both an edit control to type in a file 
name and an "ellipses" button to browse
	
CDR.EXE, Open/Close CD Drive(s) Programmatically [System, Article, Visual C++] www.codeguru.com 24-Nov-2000 by Chris Morse Sebrell
	CDR.EXE, Open/Close CD Drive(s) Programmatically
	 
	Chris Morse Sebrell
	 
	Tool (and source code) that uses MCI commands to control the opening 
and closing of the CD-ROM drive door
	
Completely Customizable Properties Window [Listview, Update, Article, Visual C++] www.codeguru.com 24-Nov-2000 by Brett R Mitchell
	Completely Customizable Properties Window
	 
	Brett R Mitchell
	 
	Properties window with combo boxes that communicates with owner when 
properties are changed
	
A Gradient Title Bar for modal and modeless dialog [Dialog, Windows Programming, Title Bar, Article, Visual C++] www.codeproject.com 23-Nov-2000 by Amit Dey
	A Gradient Title Bar for modal and modeless dialog
	 
	Amit Dey
	 
	This article shows you how to give your Win95/NT4 modeless dialogs a 
Win98/W2K like gradient title bar.
	
CResizableDialog [Dialog, Windows Programming, CDialog Class, MFC, Article, Visual C++] www.codeproject.com 23-Nov-2000 by Paolo Messina
	CResizableDialog
	 
	Paolo Messina
	 
	A CDialog derived class to implement resizable dialogs with MFC
	
Active Comments 1.2 [Macro, Add-in, Article, Visual C++] www.codeproject.com 23-Nov-2000 by Andrei Levin
	Active Comments 1.2
	 
	Andrei Levin
	 
	This addin allows your source code to have references to external 
files, MSDN articles, voice comments etc.
	
Adding a custom search feature to CHtmlViews [Control, HTML, CHTMLView Class, Article, Visual C++] www.codeproject.com 23-Nov-2000 by Marc Richarme
	Adding a custom search feature to CHtmlViews
	 
	Marc Richarme
	 
	Could be used to create a Visual C++ like search combo for 
CHtmlViews...Update: Now you can highlight all matching words!
	
Report control - an Outlook 2000 style [Control, Outlook, Article, Visual C++] www.codeproject.com 23-Nov-2000 by Maarten Hoeben
	Report control - an Outlook 2000 style
	 
	Maarten Hoeben
	 
	An Outlook 98/2000 Style SuperGrid Report Control
	
Smart Translator [Tool, Article, Visual C++] www.codeproject.com 22-Nov-2000 by Mike Walter
	Smart Translator
	 
	Mike Walter
	 
	Application to aid in the language translation of another application's 
resources.
	
Pocket Scribble [CE Programming, Article, Visual C++] www.codeguru.com 22-Nov-2000 by Christian Skovdal Andersen
	Pocket Scribble
	 
	Christian Skovdal Andersen
	 
	Complete tutorial porting the famous MFC Scribble example to Windows CE
	
Compression and decompression using the Crypto++ library [C++, MFC, STL, Compression, Article, Visual C++] www.codeproject.com 21-Nov-2000 by Shaun Wilde
	Compression and decompression using the Crypto++ library
	 
	Shaun Wilde
	 
	Using the Crypto++ library to compress and decompress data
	
Hex Encoder and Decoder using Crypto++ [C++, MFC, STL, Article, Visual C++] www.codeproject.com 21-Nov-2000 by Shaun Wilde
	Hex Encoder and Decoder using Crypto++
	 
	Shaun Wilde
	 
	Encode binary data to and from hexadecimal format using the Crypto++ 
library
	
Your first C# Control [C#, Control, .NET, Article, Visual C++] www.codeproject.com 21-Nov-2000 by Troy Marchand
	Your first C# Control
	 
	Troy Marchand
	 
	A very simple introduction to writing your first .NET control
	
Completely Customizable Properties Window [Listview, Article, Visual C++] www.codeguru.com 21-Nov-2000 by Brett R Mitchell
	Completely Customizable Properties Window
	 
	Brett R Mitchell
	 
	Properties window with combo boxes that communicates with owner when 
properties are changed
	
Ping Utility for Windows CE [CE Programming, Article, Visual C++] www.codeguru.com 21-Nov-2000 by Arkady Frankel
	Ping Utility for Windows CE
	 
	Arkady Frankel
	 
	Uses the HPC PRO SDK in order to prove basic "ping" abilities on 
HPC/PPC devices
	
Mysterious Delphi [Article, Delphi] delphi.about.com 21-Nov-2000
	21-Nov-2000
	 
	21-Nov-2000
	 
	Mysterious Delphi
	 
	Uncovering hidden Delphi features. See how to set up some secret 
registry settings that change the standard behavior of the Delphi IDE.
	
Delegates And Events - The Uncensored Story, Part 1 [C#, Delegate, Event, Article, Visual C++] www.codeproject.com 20-Nov-2000 by A Abdul Azeez
	Delegates And Events - The Uncensored Story, Part 1
	 
	A Abdul Azeez
	 
	This is a part of a series of articles that aims at fully understanding 
delegates and events
	
Auto html help generator [WinHelp, HTML Help, Help, Article, Visual C++] www.codeproject.com 20-Nov-2000 by Jack zhang
	Auto html help generator
	 
	Jack zhang
	 
	Create your flex html help by a few clicks within a few minutes!
	
Variables in C++ [Article, Visual C++] cplus.about.com 20-Nov-2000
	20-Nov-2000
	 
	20-Nov-2000
	  
	Variables in C++
	 
	A tutorial on variables in C++
	
Cascading Menus [Shell Programming, Article, Visual C++] www.codeguru.com 20-Nov-2000 by Dino Esposito
	Cascading Menus
	 
	Dino Esposito
	 
	Dino demonstrates a context menu shell extension which mimics the 
SendTo menu in order to illustrate how to create cascading child menus with 
images
	
Browse IIS Directory Structures [ISAPI, Article, Visual C++] www.codeguru.com 20-Nov-2000 by Christian Haindl
	Browse IIS Directory Structures
	 
	Christian Haindl
	 
	ISAPI Extension that displays (in an HTML Web page) the directory 
structure of an IIS Web Server
	
HexConvertor [COM, Article, Visual C++] www.mindcracker.com 20-Nov-2000 by Mukesh Gupta
	HexConvertor
	 
	COM object that converts binary/text data to hex format.
	 
	Mukesh Gupta
	 
	20-Nov-2000
	 
	20-Nov-2000
	
ADONowCombo Control [Control, Combobox, Database, Article, Visual Basic] www.vb2themax.com 18-Nov-2000 by Maurizio Baldi
	ADONowCombo Control
	  
	18-Nov-2000
	 
	18-Nov-2000
	 
	Maurizio Baldi
	 
	The NowCombo control is a multi-columns Combobox that expands on the 
DBCombo control. You can use it to select and copy an item from another table 
in the Database. For example, it allows to select an employee choosing it from 
an Employees table and to memorize his name in the Products Sales table. The 
ComboBox allows searches among the available names. The demo program comes with 
a sample MDB database.
	
Accessing database at runtime using DAO MFC Classes [Article, Visual C++] www.mindcracker.com 18-Nov-2000 by Mahesh Chand
	Accessing database at runtime using DAO MFC Classes
	 
	This article explains how to get data from an access database at 
runtime using MFC DAO classes. Useful for beginners.
	 
	Mahesh Chand
	 
	18-Nov-2000
	 
	18-Nov-2000
	
Circular Linked List Simulation [Article, Visual C++] www.mindcracker.com 18-Nov-2000 by Bulent Ozkir
	Circular Linked List Simulation
	
	Available code shows Circular Linked List Simulation with CList class.
	 
	Bulent Ozkir
	 
	18-Nov-2000
	 
	18-Nov-2000
	
Accessing database at runtime using ODBC MFC Classes [Article, Visual C++] www.mindcracker.com 18-Nov-2000 by Mahesh Chand
	Accessing database at runtime using ODBC MFC Classes
	 
	This article explains how to get data from an access database at 
runtime using MFC ODBC classes. Useful for beginners.
	 
	Mahesh Chand
	 
	18-Nov-2000
	 
	18-Nov-2000
	
Application Launcher [Article, Visual C++] www.mindcracker.com 18-Nov-2000 by Mahesh Chand
	Application Launcher
	 
	An article explains how to launch an application using CreateProcess. 
Sample code attached.
	 
	Mahesh Chand
	 
	18-Nov-2000
	 
	18-Nov-2000
	
Using the CComboBox control [Combobox, List Control, CComboBox Class, Article, Visual C++] www.codeproject.com 17-Nov-2000 by Wolfram Steinke
	Using the CComboBox control
	 
	Wolfram Steinke
	 
	An entry level tutorial on using the CComboBox control
	
Using the CListBox control [Combobox, List Control, CListBox Class, Article, Visual C++] www.codeproject.com 17-Nov-2000 by Wolfram Steinke
	Using the CListBox control
	 
	Wolfram Steinke
	 
	An entry level tutorial on using the CListBox control
	
Using the CEdit control [Edit Control, CEdit Class, Article, Visual C++] www.codeproject.com 17-Nov-2000 by Wolfram Steinke
	Using the CEdit control
	 
	Wolfram Steinke
	 
	An entry level tutorial on using the CEdit control
	
Adding controls to a Dialog [Control, Dialog, Common Control, Article, Visual C++] www.codeproject.com 17-Nov-2000 by Wolfram Steinke
	Adding controls to a Dialog
	 
	Wolfram Steinke
	 
	An entry level tutorial on using one of the Windows Common Controls in 
a dialog
	
Feature Creature [Windows Programming, Article, Visual C++] www.codeguru.com 17-Nov-2000 by Christopher Duncan
	Feature Creature
	 
	Christopher Duncan
	 
	Christopher illustrates some tips and techniques to help you avoid your 
application becoming yet another victim of the Feature Creature.
	
Using WinInet functions Asynchronously [Internet, Network, WinInet, Article, Visual C++] www.codeproject.com 16-Nov-2000 by Benjamin Mayrargue
	Using WinInet functions Asynchronously
	 
	Benjamin Mayrargue
	 
	Using WinInet functions Asynchronously is a nightmare since no Sample 
exists. Here's one !
	
Tutorial 3 [COM, DCOM, Article, Visual C++] www.codeproject.com 15-Nov-2000 by Amin Patel
	Tutorial 3
	 
	Amin Patel
	 
	This tutorial has been made to give an introduction to new c++ 
programmers. Unfortunately their are many great minds out there but they don't 
have access to free and quality c++ tutorials. So this is the third lesson
	
Tutorial 1 [C++, MFC, STL, Article, Visual C++] www.codeproject.com 15-Nov-2000 by Amin Patel
	Tutorial 1
	 
	Amin Patel
	 
	This tutorial has been made to give an introduction to new c++ 
programmers. Unfortunately their are many great minds out there but they don't 
have access to free and quality c++ tutorials. So this is the first lesson.
	
Tutorial 2 [C++, MFC, STL, Article, Visual C++] www.codeproject.com 15-Nov-2000 by Amin Patel
	Tutorial 2
	 
	Amin Patel
	 
	This tutorial has been made to give an introduction to new c++ 
programmers. Unfortunately their are many great minds out there but they don't 
have access to free and quality c++ tutorials. So this is the second lesson
	
Grid Control Showing Association [Control, Grid Control, Article, Visual C++] www.codeproject.com 15-Nov-2000 by Daniel Larocque
	Grid Control Showing Association
	 
	Daniel Larocque
	 
	Grid control with vertical column headers.
	
ATL DISPID Encoding [ATL, Template, Article, Visual C++] www.codeguru.com 15-Nov-2000 by Andrew Whitechapel
	ATL DISPID Encoding
	 
	Andrew Whitechapel
	 
	A simple technique to allow scripting clients to transparently access 
multiple interfaces on an object
	
Hex Converter [COM, DCOM, Article, Visual C++] www.codeproject.com 14-Nov-2000 by Mukesh Gupta
	Hex Converter
	 
	Mukesh Gupta
	 
	Converts a lump of binary/text data to hex format.
	
A Thread-safe timed message box [Dialog, Windows Programming, Thread Safe, Article, Visual C++] www.codeproject.com 14-Nov-2000 by Markus Loibl
	A Thread-safe timed message box
	 
	Markus Loibl
	 
	The system Message Box that is closed atuomatically after some time
	
Set A Fixed Text Size [Tip, Article, Visual C++] www.codeproject.com 14-Nov-2000 by Nongjian Zhou
	Set A Fixed Text Size
	 
	Nongjian Zhou
	 
	A very useful tip. How to keep your fonts a fixed size , so none one 
can change it in his browser. No more to worry how to always keep your page the 
same look.
	
Circular File [C++, MFC, Article, Visual C++] www.codeguru.com 14-Nov-2000 by Ibrar Ahmad
	Circular File
	 
	Ibrar Ahmad
	 
	Generic C++ circular file implementation
	
Deleting Locked Files [File, Folder, Article, Visual C++] www.codeguru.com 14-Nov-2000 by Zoltan Csizmadia
	Deleting Locked Files
	 
	Zoltan Csizmadia
	 
	Command line utility (with source code) for closing and deleting locked 
files
	
CWaitableTimer [System, Article, Visual C++] www.codeguru.com 14-Nov-2000 by Jay Wheeler
	CWaitableTimer
	 
	Jay Wheeler
	 
	64-bit waitable timer class with 100 nSec resolution
	
Examine Information on Windows NT System Level Primitives [System, Update, Article, Visual C++] www.codeguru.com 14-Nov-2000 by Zoltan Csizmadia
	Examine Information on Windows NT System Level Primitives
	 
	Zoltan Csizmadia
	 
	Two low level utilities to examine Windows NT information such as 
processes, threads, windows, modules and objects.
	
Help RTF files from Resource RC Files [Help, Article, Visual C++] www.codeguru.com 14-Nov-2000 by William Heitler
	Help RTF files from Resource RC Files
	 
	William Heitler
	 
	Topic generator that read RC files and generates skeleton RTF files for 
the menus and dialogs
	
MyZoomIn (MFC ZoomIn w/Additional Features) [Tool, Article, Visual C++] www.codeguru.com 14-Nov-2000 by Corey Cason
	MyZoomIn (MFC ZoomIn w/Additional Features)
	 
	Corey Cason
	 
	Great new extensions (absolute x/y coordinates displayed, RGB of pixel 
under mouse, etc.) added to ZoomIn application
	
Association Grid Control [Control, Article, Visual C++] www.codeguru.com 14-Nov-2000 by Daniel Larocque
	Association Grid Control
	 
	Daniel Larocque
	 
	Very cool grid control with vertical labels! Great for representing any 
two-dimensional data.
	
Size and Speed: Top Tricks [Article, Delphi] delphi.about.com 14-Nov-2000
	14-Nov-2000
	 
	14-Nov-2000
	 
	Size and Speed: Top Tricks
	 
	Useful tips to make your Delphi programs run faster.
	
Using Templates for initialization [Tip, Template, Article, Visual C++] www.codeproject.com 13-Nov-2000 by Paul Westcott
	Using Templates for initialization
	 
	Paul Westcott
	 
	Use templates to initialize structures or simple member variables
	
Inheritance [Article, Visual C++] cplus.about.com 13-Nov-2000
	13-Nov-2000
	 
	13-Nov-2000
	  
	Inheritance
	 
	A tutorial on this core concept.
	
WinHelp Uncovered [Article, Visual Basic] visualbasic.about.com 13-Nov-2000
	13-Nov-2000
	 
	13-Nov-2000
	  
	WinHelp Uncovered
	 
	Even if your amazing application is designed to be incredibly 
intuitive, there will be times when your users will require a helping hand. In 
this article, your Visual Basic Guide explains how to integrate help files with 
your VB application.
	
NowCombo Control [Control, Combobox, Article, Visual Basic] www.vb2themax.com 11-Nov-2000 by Maurizio Baldi
	NowCombo Control
	  
	11-Nov-2000
	 
	11-Nov-2000
	 
	Maurizio Baldi
	 
	The NowCombo control is a multi-columns Combobox that expands on the 
DBCombo control. You can use it to select and copy an item from another table 
in the database. For example, it allows to select an employee choosing it from 
an Employees table and to memorize his name in the Products Sales table. The 
ComboBox allows searches among the available names. The demo program comes with 
a sample MDB database.
	
A generic IDropTarget COM class for dropped text [Clipboard, IDropTarget, COM, Article, Visual C++] www.codeproject.com 10-Nov-2000 by Thomas Blenkers
	A generic IDropTarget COM class for dropped text
	 
	Thomas Blenkers
	 
	Simple step by step article explaining how to implement a drop target 
using OLE.
	
Implementing a Drag Source [Clipboard, Drag Source, Article, Visual C++] www.codeproject.com 10-Nov-2000 by Thomas Blenkers
	Implementing a Drag Source
	 
	Thomas Blenkers
	 
	Simple step by step article explaining how to implement a drag source.
	
Implementing a Drop Target [Clipboard, Drop Target, Article, Visual C++] www.codeproject.com 10-Nov-2000 by Thomas Blenkers
	Implementing a Drop Target
	 
	Thomas Blenkers
	 
	Simple step by step article explaining how to implement a drop target.
	
The Drag and Drop interface Sample [Clipboard, Drag and Drop, Article, Visual C++] www.codeproject.com 10-Nov-2000 by Thomas Blenkers
	The Drag and Drop interface Sample
	 
	Thomas Blenkers
	 
	A series of articles that resulted from experimenting with adding Drag 
and Drop features to my existing application.
	
Create a Modeless Dialog box as child window [Dialog, Windows Programming, Modeless Dialog, Article, Visual C++] www.codeproject.com 10-Nov-2000 by Thomas Blenkers
	Create a Modeless Dialog box as child window
	 
	Thomas Blenkers
	 
	Simple step by step article explaining how to create a modeless dialog 
box as child window.
	
Create a Modeless Dialog box as sibling of the app's main window [Dialog, Windows Programming, Modeless Dialog, Article, Visual C++] www.codeproject.com 10-Nov-2000 by Thomas Blenkers
	Create a Modeless Dialog box as sibling of the app's main window
	 
	Thomas Blenkers
	 
	Simple step by step article explaining how to create a modeless dialog 
box as sibling of the app's main window.
	
Office 2000 style File Dialogs for Win 95/98/NT/Me [Dialog, Windows Programming, File Dialog, Office, File, Article, Visual C++] www.codeproject.com 10-Nov-2000 by David Wulff
	Office 2000 style File Dialogs for Win 95/98/NT/Me
	 
	David Wulff
	 
	Ever wanted to use the new Office 2000 file dialogs on Win 95/98/NT/Me, 
including the File previewing? Well now you can.
	
VC6 flat toolbar support [Toolbar, Docking Window, MFC, Article, Visual C++] www.codeproject.com 10-Nov-2000 by Thomas Blenkers
	VC6 flat toolbar support
	 
	Thomas Blenkers
	 
	When you are porting your MFC application to MSVC 6.0 you'd probably 
like to use the build-in support for the flat toolbar and kick that third-party 
solution out of you project to reduce size.
	
GraphFX: A graph framework [Document/View, Article, Visual C++] www.codeproject.com 10-Nov-2000 by Norm Almond
	GraphFX: A graph framework
	 
	Norm Almond
	 
	A Doc/View framework for displaying graphical data
	
Serializing Data to / from an ASCII-File [Document/View, Serializing, File, Drag and Drop, Article, Visual C++] www.codeproject.com 10-Nov-2000 by Thomas Blenkers
	Serializing Data to / from an ASCII-File
	 
	Thomas Blenkers
	 
	A series of articles that resulted from experimenting with adding Drag 
and Drop features to my existing application.
	
Colorz: RGB Assistant: Aids developers with color intensities (using: Visual C++ 6.0) [Font, GDI, GUI, Color, RGB, Article, Visual C++] www.codeproject.com 10-Nov-2000 by Jeremy Falcon
	Colorz
	 
	The RGB Assistant: Aids developers with color intensities
	 
	Jeremy Falcon
	
Create, Position, Show and Hide Controls at Runtime using the RollOut Window [Dialog, Windows Programming, Control, Article, Visual C++] www.codeproject.com 09-Nov-2000 by Masoud Samimi
	Create, Position, Show and Hide Controls at Runtime using the RollOut 
Window
	 
	Masoud Samimi
	 
	A neat way to show/hide groups of related controls
	
Adding Behavior, Resizing Dialogs and Property Pages [Windows Programming, Article, Visual C++] www.codeguru.com 09-Nov-2000 by Roger Onslow
	Adding Behavior, Resizing Dialogs and Property Pages
	 
	Roger Onslow
	 
	Roger adds resizing to dialogs and property pages, using the techniques 
discussed in his previous article. Not only is this an example of these 
techniques but it is a useful class as well.
	
List Control with OLE Drag and Drop [Listview, Article, Visual C++] www.codeguru.com 09-Nov-2000 by Jean Claude Dauphin
	List Control with OLE Drag and Drop
	 
	Jean Claude Dauphin
	 
	This extended list control allow OLE drag and drop between multiple 
list controls
	
Determines the number of words in a text string (using: Visual Basic 6.0) [Replace Function, Solution, Split Function, String, Visual Basic] www.pinnaclepublishing.com 08-Nov-2000 by Rick Rothstein
The routine determines the number of words in a text 
string (the text string could of course be loaded in from 
a text file, so think of it as the core code for a text 
file word counter). Is it perfect? No, I'll make no such 
claim. As a matter of fact, I haven't even tested it 
extensively (read that as "not at all"). Rather, the 
person whose question I answered wrote back to tell me it 
matched the word count that Microsoft Word gave for six 
of his own text files... exactly. But I repeat, it hasn't 
been tested, so consider it a core piece of code that you 
can improve upon as needed. 

Function WordCount(ByVal TextString As String) As Long
  'Collapse multiple newlines down into single newlines
  Do While TextString Like "*" & vbNewLine & vbNewLine _
    & "*"
    TextString = Replace$(TextString, vbNewLine & _
      vbNewLine, vbNewLine)
  Loop
  'Assume a hyphen at end of line is signals a hyphenated
  'word and combine the two parts back into a whole word
  TextString = Trim$(Replace$(TextString, "-" & _
    vbNewLine, ""))
  'Replace newline sequences with a single blank space
  TextString = Trim$(Replace$(TextString, vbNewLine, _
    " "))
  'Collapse multiple spaces down into single spaces
  Do While TextString Like "*  *"
    TextString = Replace$(TextString, "  ", " ")
  Loop
  'Split the string at the blank spaces and count them
  WordCount = 1 + UBound(Split(TextString, " "))
End Function
Make Form Views Fit Their Forms (using: Visual C++ 6.0) [CFormView Class, MFC, OnInitialUpdate(), Visual C++, Tip] www.pinnaclepublishing.com 08-Nov-2000
Make Form Views Fit Their Forms!

I have a CFormView, and I display it in a window, 
either in my SDI or MDI program, people ask. How do I 
resize the window that the form is in so that the size of 
the window matches (or at least resembles) the size of 
the dialog template?

The answer lies in executing some code in the 
OnInitialUpdate() override. Follow these steps to 
override your form view's OnInitialUpdate() function, if 
there isn't one there already:

1. Open ClassWizard and select the class for your form 
view.

2. Select OnInitialUpdate in the Messages List, and 
double-click it. Then, click the function when it's added 
to the Member Functions list, and then click Edit Code.

3. You're ready to rumba! Once you've added an 
OnInitialUpdate() override to your code and jumped to 
where the function is located, add the code marked with 
an '>' on the left below:

void CMyView::OnInitialUpdate()
{
      CFormView::OnInitialUpdate();

>     GetParentFrame()->RecalcLayout();
>     ResizeParentToFit(FALSE);
}

And voila! Mission accomplished. This should work for 
views in both SDI and MDI programs.
How do you change a window's styles at runtime? (using: Visual C++ 6.0) [CWindow::ModifyStyleEx(), CWindow::ModifyStyle(), MFC, ModifyStyleEx(), ModifyStyle(), SetWindowPos(), Style, Tip, Visual C++] www.pinnaclepublishing.com 08-Nov-2000
How do you change a window's styles at runtime?

The ModifyStyle() and ModifyStyleEx() functions are great 
for hot-swapping window styles on the fly, should you 
need to.

The first argument is the style(s) you want to remove 
from the window, and the second is the style(s) you want 
to add to the window. If an argument doesn't apply, pass 
0. The third argument is a code to be passed to 
SetWindowPos(). I usually pass SWP_DRAWFRAME in this 
argument, which refreshes the window's appearance. 

ModifyStyle() changes normal styles, and ModifyStyleEx() 
changes extended styles. They're available either as CWnd 
member functions or as API functions---the Windows API 
versions take an HWND as the first argument, and the 
other arguments are the same as their CWnd cousins.
The Ultimate (DLL) Header File [DLL, File, Article, Visual C++] www.codeproject.com 08-Nov-2000 by Joseph M Newcomer
	The Ultimate (DLL) Header File
	 
	Joseph M Newcomer
	 
	Here is the ultimate header file that makes multiple declaration 
compiler errors a thing of the past.
	
FavOrg .... Helps clean Up Your Favorites [EXE, Favorites Menu, Internet Explorer, Visual C++] PC Magazine 07-Nov-2000, vol. 19, no. 19 by Patrick Philippot
FavOrg scans the Web sites in your Favorites list for favicons--custom icons 
provided by the Web site. The icons are displayed on the Favorites bar, the 
Favorites menu, and the Address bar. Custom icons make the Favorites list 
easier to scan, letting you locate a given shortcut faster. Microsoft added the 
custom icon feature to IE5; FavOrg brings this functionality to IE4 as well. 
Favicons are usually lost when you delete your Temporary Internet Files, but 
FavOrg preserves them. The program also lets you associate any icon you choose 
with a given shortcut, even if no favicon is provided. Since FavOrg must check 
the validity of an Internet shortcut before attempting to download the favicon, 
it automatically flags dead links as it goes through your Favorites list. If 
you like, it can update redirected links or reset dead links to the site’s 
root. FavOrg was written by Patrick Phillipot, and first appeared in PC 
Magazine November 7, 2000 (v19n19). Source code is included. 
Automatic Wallpaper Changer (using: Visual Basic 6.0) [SystemParametersInfo(), Wallpaper, Visual Basic, Solution] visualbasic.about.com 07-Nov-2000
Automatic Wallpaper Changer  

Over the last few weeks I've been examining a few handy API functions designed 
to retrieve technical information about the underlying operating system and 
hardware. This week, let's take a break from all the boring techy stuff to 
create a mini application designed to change the desktop wallpaper 
automatically every time Windows is started.

Firstly, let's examine the API call that allows you to change the wallpaper 
with one line of code!

SystemParametersInfo 

To change the desktop wallpaper, we're going to be harnessing the 
SystemParametersInfo function that's buried within the User32 DLL. Add the 
following code to your form's declarations section:

Private Declare Function SystemParametersInfo _
Lib "user32" Alias "SystemParametersInfoA" (ByVal _
uAction As Long, ByVal uParam As Long, ByRef lpvParam _
As Any, ByVal fuWinIni As Long) As Long

Now, add the following code to the Click event of a command button:

Call SystemParametersInfo(ByVal 20, vbNull, ByVal _
"c:\windows\clouds.bmp", &H1)

Run the program, and click the button. Your desktop wallpaper should change to 
the standard "clouds.bmp" image that's included in the Windows distribution.

Next, let's take a look at the code required to select a random image from the 
Windows directory to assign to the desktop every time the program is launched.

FileList 

In order for the application to select an image from the Windows directory for 
display on the desktop, add a FileListBox control to your form. Change the name 
of this control to "filWallpaper", and add the following code to the Form_Load 
event:

Dim intRand As Integer

filWallpaper.Path = "c:\windows\"
filWallpaper.Pattern = "*.bmp"

intRand = Int(filWallpaper.ListCount * Rnd) - 1

Call SystemParametersInfo(ByVal 20, vbNull, ByVal _
"c:\windows\" & filWallpaper.List(intRand), &H1)

Let's take a quick look at this code... the first couple of filWallpaper lines 
sets the FileListBox control up to contain all bmp  ... (cont.)
System Tray Icons: Minimize Your Application To Tray [System, System Tray, Icon, Taskbar, Article, Visual C++] www.codeproject.com 07-Nov-2000 by Daniel Zilcsak
	System Tray Icons: Minimize Your Application To Tray
	 
	Daniel Zilcsak
	 
	Minimize your application to system tray instead of normal Taskbar
	
Zip and Unzip, the MFC Way [C++, MFC, Article, Visual C++] www.codeguru.com 07-Nov-2000 by Tadeusz Dracz
	Zip and Unzip, the MFC Way
	 
	Tadeusz Dracz
	 
	MFC-based library that enables the creation, modification and 
extraction of PKZIP and WinZip archives
	
Locking the Keyboard and Mouse at Scheduled Times [System, Article, Visual C++] www.codeguru.com 07-Nov-2000 by Arthur Boynagryan
	Locking the Keyboard and Mouse at Scheduled Times
	 
	Arthur Boynagryan
	 
	Code that enables you to schedule down-time for both keyboard and mouse 
input
	
File Searcher Edit Control with Browse Button [File, Folder, Article, Visual C++] www.codeguru.com 07-Nov-2000 by Pete Arends
	File Searcher Edit Control with Browse Button
	 
	Pete Arends
	 
	Single control that contains both an edit control to type in a file 
name and an "ellipses" button to browse
	
CommandUI Message Handling with Popup Menus [Menu, Article, Visual C++] www.codeguru.com 07-Nov-2000 by Santhosh Cheeran
	CommandUI Message Handling with Popup Menus
	 
	Santhosh Cheeran
	 
	Illustrates how to overcome message handling Issues with popup menus 
that are owned by a non-CFrameWnd derived classes
	
Wrapper for AVICap Window [Multimedia, Update, Article, Visual C++] www.codeguru.com 07-Nov-2000 by Vadim Gorbatenko
	Wrapper for AVICap Window
	 
	Vadim Gorbatenko
	 
	Wrapper and extension for AVICap windows which enables it to work with 
real-time videoprocessing applications
	
Class Wrapper for Video Compression Manager (VCM) [Multimedia, Article, Visual C++] www.codeguru.com 07-Nov-2000 by Vadim Gorbatenko
	Class Wrapper for Video Compression Manager (VCM)
	 
	Vadim Gorbatenko
	 
	Wraps the library (VCM) that provides access to the interface used by 
installable compressors to handle real-time data
	
Listening to the Clipboard [Article, Delphi] delphi.about.com 07-Nov-2000
	07-Nov-2000
	 
	07-Nov-2000
	 
	Listening to the Clipboard
	 
	Extending the clipboard's flexibility and functionality from Delphi. 
Taking control over the Clipboard with custom formats. Coding Delphi to receive 
clipboard change notifications.
	
Perl Script for uploading modified Files to a FTP-Server [Perl, File, FTP, Access, Database, Article, Visual C++] www.codeproject.com 06-Nov-2000 by Uwe Keim
	Perl Script for uploading modified Files to a FTP-Server
	 
	Uwe Keim
	 
	Simple Perl Script that uses a local MS-Access Database to store 
modification dates of files and uploads modified files to a FTP-Server
	
Tech Workshop - Automatic Wallpaper Changer [Article, Visual Basic] visualbasic.about.com 06-Nov-2000
	06-Nov-2000
	 
	06-Nov-2000
	  
	Tech Workshop - Automatic Wallpaper Changer
	 
	This week your Visual Basic Guide takes a break from all things boring 
and techy to create a fun utility that will change your desktop wallpaper 
automatically every time Windows is started.
	
Overview of the BCL Collection Types [.NET, Article, Visual C++] www.codeguru.com 06-Nov-2000 by Jeffrey Richter
	Overview of the BCL Collection Types
	 
	Jeffrey Richter
	 
	Jeffrey illustrates how the .NET Framework builds on the concepts 
presented last month to offer a consistent programming paradigm for working 
with collections, lists, and dictionaries.
	
Using MS Office in an MFC Application [COM, DCOM, Office, MFC, Office, ActiveX Document, Article, Visual C++] www.codeproject.com 05-Nov-2000 by Igor Tkachev
	Using MS Office in an MFC Application
	 
	Igor Tkachev
	 
	Integrating MS Office in your MFC Application using ActiveX Document 
mode.
	
EZOptionsDlg: Netscape Preferences like dialog (using: Visual C++ 6.0) [Dialog, Windows Programming, Article, Visual C++] www.codeproject.com 05-Nov-2000
	EZOptionsDlg
	 
	Netscape Preferences like dialog
	 
	
	
A Modified Property Sheet with the Tree Control replacing the Tabs (using: Visual C++ 6.0) [Dialog, Windows Programming, Property Sheet, Control, Article, Visual C++] www.codeproject.com 05-Nov-2000 by V Lakshmi Narasimhan
	V.Lakshmi Narasimhan
	 
	A Modified Property Sheet with the Tree Control replacing the Tabs
	 
	
	
Class to check Strings for invalid characters [String, MFC, Article, Visual C++] www.codeproject.com 05-Nov-2000 by Thomas Hauth
	Class to check Strings for invalid characters
	 
	Thomas Hauth
	 
	An MFC Class which offers you the abbility to check Strings for invalid 
characters
	
A Validating Edit Control [Edit Control, Validation, Article, Visual C++] www.codeproject.com 04-Nov-2000 by Joseph M Newcomer
	A Validating Edit Control
	 
	Joseph M Newcomer
	 
	A very informative, user-oriented Validation edit control
	
Using the CStatic control [Static Control, CStatic Class, Article, Visual C++] www.codeproject.com 04-Nov-2000 by Wolfram Steinke
	Using the CStatic control
	 
	Wolfram Steinke
	 
	An entry level tutorial on using the CStatic control
	
LogNTEvent Class [Class, NT Event Log, Article, Visual Basic] www.vb2themax.com 04-Nov-2000 by Edward Mason
	LogNTEvent Class
	  
	4-Nov-2000
	 
	4-Nov-2000
	 
	Edward Mason
	 
	LogNTEvent is a class that lets a VB app write directly to the NT Event 
Log. The zip file includes a demo project and a sample DLL that contains the 
messages to be logged.
	
basRichTextFunctions .... Routine to calculate the word that the mouse is hovering over in a rich text box control [RichTextBox Control, Visual Basic, VB Code Module] www.codeoftheweek.com 04-Nov-2000, no. 132
Requirements

Visual Basic 4.0 32-bit or higher.

Microsoft Rich Text Box Control.

This issue introduces a routine to calculate the word that the
mouse is hovering over in a rich text box control.

If you have any questions about using this module, let us know at
questions@codeoftheweek.com


basRichTextFunctions

This module is useful for a variety of reasons.  One great use is
to allow a right-click to perform some particular action on that
particular word (such as a spell check or deletion).  It can also
be used to change the formatting of the highlighted word.

There is also a bonus routine in this issue which determines if a
character is AlphaNumeric.  Our definition of alphanumeric is any
letter from A to Z, any number from 0 to 9 or an underscore.

Functions

Public Function IsAlphaNumeric(sChar As String) As Boolean

Returns True if sChar is alpha numeric.  Our definition is A-Z,
0-9 and _ (underscore).

Public Function MouseOverWord(oRichTextBox As RichTextBox, X As Single, Y As 
Single) As String

This routine does all the work.  oRichTextBox is the rich text
box control that is on the form.  X and Y are the current mouse
positions (such as what is returned in the MouseMove event of the
RichTextBox.  The MouseOverWord routine will return the
alphanumeric word that the mouse is currently located over.

If there is no word the mouse is over it will return a blank
string.


Sample Usage

This sample shows how to use the MouseOverWord routine.  It
assumes you have a form with a RichTextBox control on it.

Private Sub RTControl_MouseMove(Button As Integer, Shift As Integer, X As 
Single, Y As Single)
    Dim sWord As String
    
    sWord = MouseOverWord(RTControl, X, Y)
    ' sWord will contain the "highlighted" word.
End Sub


Dynamic toolbar has fixed size when docked [Toolbar, Docking Window, Article, Visual C++] www.codeproject.com 03-Nov-2000 by Darren S Gonzales
	Dynamic toolbar has fixed size when docked
	 
	Darren S Gonzales
	 
	How to ensure that your docking toolbars are of a particular size when 
docked
	
Project Line Counter Add-In [Macro, Add-in, Article, Visual C++] www.codeproject.com 03-Nov-2000 by Oz Solomonovich
	Project Line Counter Add-In
	 
	Oz Solomonovich
	 
	Get statistics about your source code with a click of a button
	
Issues with popup menu owned by a non CFrameWnd derived class [Menu, CFrameWnd Class, UpdateCommandUI, Article, Visual C++] www.codeproject.com 03-Nov-2000 by Santhosh Cheeran
	Issues with popup menu owned by a non CFrameWnd derived class
	 
	Santhosh Cheeran
	 
	How to handle UpdateCommandUI messages for menus not owned by CFrameWnd 
windows
	
SoftwarePROTECTOR protects your VC++ Apps from Piracy [Tool, License, Control, Article, Visual C++] www.codeproject.com 03-Nov-2000 by Rolando E Cruz-Marshall
	SoftwarePROTECTOR protects your VC++ Apps from Piracy
	 
	Rolando E Cruz-Marshall
	 
	Implement software License Control within your VC++ apps
	
Farther, Faster, Higher [Windows Programming, Article, Visual C++] www.codeguru.com 03-Nov-2000 by Christopher Duncan
	Farther, Faster, Higher
	 
	Christopher Duncan
	 
	Great story that for all of you reaching for the brass ring and trying 
to push technology to its limits in the face of petty politics and shortsighted 
people.
	
Programmatically Retrieves the Members of a DLL Class (using: Visual Basic 6.0) [TLBINF32.DLL, Type Library, Visual Basic, Solution] www.pinnaclepublishing.com 02-Nov-2000
Programmatically Retrieves the Members of a DLL Class 

SUMMARY

This article shows you how to programmatically retrieve the class names and 
members of a dll or ActiveX file that contains a type library. You can get this 
information by using the Object Browser in Visual Basic or you can 
programmatically retrieve this information. The sample program uses an 
unsupported file Tlbinf32.dll to retrieve some of the type library information, 
but is not a complete substitute for the Object Browser. 

NOTE: The file Tlbinf32.dll is not supported by Microsoft Technical Support 
either electronically or via telephone. This file is subject to change without 
notice. 

A Visual Basic project that demonstrates how to use this file to get the class 
names and members from a dll or ActiveX controls is available for download from 
the Microsoft Download Center: The following file is available for download 
from the Microsoft Download Center. Click the file name below to download the 
file:

Clsnmmbr.exe

For additional information about how to download Microsoft Support files, click 
the article number below to view the article in the Microsoft Knowledge Base: 
Q119591 How to Obtain Microsoft Support Files from Online Services 
Microsoft used the most current virus detection software available on the date 
of posting to scan this file for viruses. Once posted, the file is housed on 
secure servers that prevent any unauthorized changes to the file. 

MORE INFORMATION

The Object Browser in Visual Basic shows you the collections and member names 
of a dll class. You may want to develop an add-in for use in other development 
environments that has the same functionality as the object browser and to add 
some automation capabilities. This sample shows you how to retrieve this 
information programmatically by using the file tlbinf32.dll. This file is 
stored in the OS\System directory of your installation disk and is copied to 
your computer's system folder during the Visual Basic installatio ... (cont.)
Class to Auto-Position Controls on Window Resize [Dialog, Article, Visual C++] www.codeguru.com 02-Nov-2000 by Paul Wendt
	Class to Auto-Position Controls on Window Resize
	 
	Paul Wendt
	 
	Add auto-sizing to your dialogs (and views) in four steps
	
std::ostream Implementation for Text Output with CWnd-derived Controls [C++, MFC, Article, Visual C++] www.codeguru.com 02-Nov-2000 by G Makulik
	std::ostream Implementation for Text Output with CWnd-derived Controls
	 
	G Makulik
	 
	Enables you to do text output to MFC CWnd controls in a portable 
fashion!
	
Extracting Data from X-Y Plots [X-Y Plot, Article, Visual C++] C++ Users Journal 01-Nov-2000, vol. 18, no. 11 by Rainer Thierauf
	Extracting Data from X-Y Plots
	 
	Rainer Thierauf
	 
	Scanners now input text with reasonable accuracy - why not graphical 
data as well?
	
Creating Truly Maintainable Class Factories [Class Factory, Article, Visual C++] C++ Users Journal 01-Nov-2000, vol. 18, no. 11 by Early Ehlinger
	Creating Truly Maintainable Class Factories
	 
	Early Ehlinger
	  
	It is usually best to recycle code already written, particularly if 
it’s easy to get wrong.
	
A Portable ‘typeof’ Operator [typeof, Template, Article, Visual C++] C++ Users Journal 01-Nov-2000, vol. 18, no. 11 by Bill Gibbons
	A Portable ‘typeof’ Operator
	 
	Bill Gibbons
	  
	Here’s a not-so-stupid Template trick that mostly meets the need for a 
typeof operator.
	
Secure Web-Based Licensing [Web, Licensing, Article, Visual C++] C++ Users Journal 01-Nov-2000, vol. 18, no. 11 by Mike Scanlon
	Secure Web-Based Licensing
	 
	Mike Scanlon
	  
	If you want to protect your software from misuse, you have to outsmart 
potential thieves and still not annoy your legitimate customers. This is not as 
easy as you might at first think.
	
Creating an Index Table in STL, Take 2 [Index Table, STL, Article, Visual C++] C++ Users Journal 01-Nov-2000, vol. 18, no. 11 by Sol Foster
	Creating an Index Table in STL, Take 2
	 
	Sol Foster
	 
	Pointers seldom sort the way you intend, but STL offers a handy way to 
say what you really mean.
	
IOStreams and Stdio [IOStream, Stdio, C++, I/O, Article, Visual C++] C++ Users Journal 01-Nov-2000, vol. 18, no. 11 by Matt Austern
	Matt Austern
	 
	IOStreams and Stdio
	 
	You can mix C and C++ I/O operations, but you have to be careful if you 
don’t want garbled streams.
	
Basic Stream I/O [Stream I/O, Java, Article, Visual C++] C++ Users Journal 01-Nov-2000, vol. 18, no. 11 by Chuck Allison
	Chuck Allison
	 
	Basic Stream I/O
	 
	Java supports input/output of streams with a gazillion combinations of 
options.
	
Constructor Failures (or, The Objects That Never Were) [Constructor, Object, Exception, Article, Visual C++] C++ Users Journal 01-Nov-2000, vol. 18, no. 11 by Herb Sutter
	Herb Sutter
	 
	Constructor Failures (or, The Objects That Never Were)
	 
	Exceptions thrown during object construction must be handled with 
extreme care.
	
Multiple domains on a single IP [Active Server Pages, ASP, Article, Visual C++] www.codeproject.com 01-Nov-2000 by Alex Marbus
	Multiple domains on a single IP
	 
	Alex Marbus
	 
	How to set multiple domains one a single IP-address with ASP.
	
Component Best Practices: Advanced Properties and Custom Streaming [Component, Article, Delphi] Delphi Developer 01-Nov-2000, vol. 6, no. 11 by Peter Morris
	Component Best Practices: Advanced Properties and Custom Streaming
	 
	Peter Morris
	 
	Quite often it's necessary to write components that perform more 
advanced functions. These components often need to either reference other 
components, have custom property data formats, or have a property that owns a 
list of values rather than a single value. In this article, Peter Morris will 
guide you through various examples that demonstrate these techniques.
	
Enhancing the To-Do Item List [Wizard, Article, Delphi] Delphi Developer 01-Nov-2000, vol. 6, no. 11 by Bob Swart
	Enhancing the To-Do Item List
	 
	Bob Swart
	 
	In this article, Bob Swart examines To-Do items and notices a minor 
problem with them. Of course, he solves the problem by implementing his own 
version of the Add To-Do Item Wizard.
	
Classic Algorithms and Data Structures: Sorting Algorithms [Algorithm, Data Structure, Sorting, Article, Delphi] Delphi Developer 01-Nov-2000, vol. 6, no. 11 by Fernando Vicaria
	Classic Algorithms and Data Structures: Sorting Algorithms
	 
	Fernando Vicaria
	 
	Fernando Vicaria introduces a new series on practical uses of 
algorithms and data structures by discussing sorting algorithms.
	
Use a Simple Component to Make Database Connections Easier [Component, Database, Connection, Article, Delphi] Delphi Developer 01-Nov-2000, vol. 6, no. 11 by Mark Meyer
	Use a Simple Component to Make Database Connections Easier
	 
	Mark Meyer
	 
	One of the great things about Delphi is that it allows you to quickly 
create utility components that save time and cut down on errors. Mark Meyer 
presents a component that allows you to connect any number of tables and 
queries on a form with just one Connect method.
	
Persistent Field Name Troubles [Persistent, Article, Delphi] Delphi Developer 01-Nov-2000, vol. 6, no. 11 by Goran Milenkovic
	Persistent Field Name Troubles
	 
	Goran Milenkovic
	 
	
	
Using the Pocket Outlook Object Model [Pocket Outlook Object Model, Windows CE, Outlook, POOM, Article, Visual C++] Windows Developer's Journal 01-Nov-2000, vol. 11, no. 11 by Tapani J Otala
	Using the Pocket Outlook Object Model
	 
	Tapani J Otala
	 
	If you want to alter or integrate with Microsoft’s Windows CE version 
of Outlook, you need to dig in to the Pocket Outlook Object Model (POOM) SDK. 
This article demonstrates just such an expedition, by constructing a tiny 
utility that lets you conveniently move appointments from the current city to 
another city in the Pocket Outlook Calendar.
	
Easier Popup Menus in VB [Pop-up Menu, Visual Basic, Article, Visual C++] Windows Developer's Journal 01-Nov-2000, vol. 11, no. 11 by William R Epp
	Easier Popup Menus in VB
	 
	William R Epp
	 
	The visual method of creating and handling popup menus in VB is a lot 
of work if you just have a menu with a few simple selections on it. Here’s a 
component that lets you just type a few lines of code to define, invoke, and 
handle a popup menu.
	
A Multi-Page, Single-Document UI for MFC [MFC, Article, Visual C++] Windows Developer's Journal 01-Nov-2000, vol. 11, no. 11 by Zuoliu Ding
	A Multi-Page, Single-Document UI for MFC
	 
	Zuoliu Ding
	 
	Excel is part of Microsoft’s move back to SDI (Single Document 
Interface). However, Excel still lets you open more than one file in more than 
one child window, so it’s really sort of an amalgam. This article provides a 
framework you can use to build Excel-style, multiple-page, single document user 
interfaces in MFC.
	
User Interface Programming: Autosuggest and Autocomplete [Auto Suggest, Autocompletion, SHELL32.DLL, Article, Visual C++] Windows Developer's Journal 01-Nov-2000, vol. 11, no. 11 by Petter Hesselberg
	User Interface Programming: Autosuggest and Autocomplete
	 
	Petter Hesselberg
	 
	The latest SHELL32.DLL gives you some new features for saving users 
some typing: autosuggest and autocomplete features. This column demonstrates 
both features, pointing up some warts in the documentation and implementation 
along the way.
	
Launching Explorer from Visual C++ [Explorer, IDE, Article, Visual C++] Windows Developer's Journal 01-Nov-2000, vol. 11, no. 11 by Bret Pehrson
	Launching Explorer from Visual C++
	 
	Bret Pehrson
	 
	When you spawn Explorer from the IDE, why not have it know what 
directory and file you’re currently using?
	
IDC_STATIC Problems in Dialog Resources [Dialog Resource, GetDlgItemID(), Article, Visual C++] Windows Developer's Journal 01-Nov-2000, vol. 11, no. 11 by Brad Litterell
	IDC_STATIC Problems in Dialog Resources
	 
	Brad Litterell
	 
	-1 may equal 65535 if you’re calling GetDlgItemID().
	
VB Object Initialization Error Handling [Object, Error Handling, Visual Basic, Article, Visual C++] Windows Developer's Journal 01-Nov-2000, vol. 11, no. 11 by Darin Higgins
	VB Object Initialization Error Handling
	 
	Darin Higgins
	 
	Microsoft’s recommendation for trapping errors during class 
initialization doesn’t quite cut it.
	
Optimizing DLLs with DisableThreadLibraryCalls() [Optimizing, DLL, DisableThreadLibraryCalls(), DllMain(), Article, Visual C++] Windows Developer's Journal 01-Nov-2000, vol. 11, no. 11 by Paula Tomlinson
	Optimizing DLLs with DisableThreadLibraryCalls()
	 
	Paula Tomlinson
	 
	A cheap potential speedup for DLLs is to turn off some DllMain() 
notifications.
	
Validating C++ Objects [C++, Object, Article, Visual C++] Windows Developer's Journal 01-Nov-2000, vol. 11, no. 11 by Steve Hanov
	Validating C++ Objects
	 
	Steve Hanov
	 
	A little C++ wrapper can help catch references to deleted objects.
	
Understanding NT: Connect to a Share [Share, Windows NT, Article, Visual C++] Windows Developer's Journal 01-Nov-2000, vol. 11, no. 11 by Paula Tomlinson
	Understanding NT: Connect to a Share
	 
	Paula Tomlinson
	 
	This month’s column revisits the topic of figuring out that a path is 
inaccessible because the user isn’t connected to the right share, and then 
giving the user a chance to connect to that share. The additional case that 
needs handling is caused by the subst command.
	
A Practical Guide to ADO Extensions: Part II [ADO, OLAP, Data Warehousing, Multidimensional Data Storage, Article, Delphi] Delphi Informant 01-Nov-2000, vol. 6, no. 11 by Alex Fedorov, Natalia Elmanova
	A Practical Guide to ADO Extensions: Part II
	 
	Alex Fedorov and Natalia Elmanova
	 
	Mr Fedorov and Ms Elmanova discuss OLAP, Data Warehousing, and 
Multidimensional Data Storage, then demonstrate ADO Multidimensional 
programming with Delphi.
	
Children of Threadmare [Thread, Multi-Threaded, Article, Delphi] Delphi Informant 01-Nov-2000, vol. 6, no. 11 by Nikolai Sklobovsky
	Children of Threadmare
	 
	Nikolai Sklobovsky
	 
	Having demystified Multi-Threading at the abstract level, Mr Sklobovsky 
shares a multi-purpose Progress dialog box component, and some other concrete 
tools and techniques.
	
Moving Data via COM [COM, Article, Delphi] Delphi Informant 01-Nov-2000, vol. 6, no. 11 by Bill Todd
	Moving Data via COM
	 
	Bill Todd
	 
	What do you do when you need to move data between a COM server and a 
COM client? Mr Todd demonstrates how to simply stuff it in a variant, and pass 
it as a parameter.
	
Polymorphic Programming [Polymorphic, VCL, Article, Delphi] Delphi Informant 01-Nov-2000, vol. 6, no. 11 by Jeremy Merrill
	Polymorphic Programming
	 
	Jeremy Merrill
	 
	Unfortunately, we often run into barriers that prevent us from using 
common forms of polymorphism. Mr Merrill shows us three ways to break the VCL's 
"protected barrier."
	
XSL Transformations [XSL, XSLT, HTML, Article, Delphi] Delphi Informant 01-Nov-2000, vol. 6, no. 11 by Keith Wood
	XSL Transformations
	 
	Keith Wood
	 
	Mr Wood introduces the XSLT language, its syntax, and semantics, then 
shares an example program that combines an XML document and XSL stylesheet to 
produce HTML.
	
Advanced COM: Understanding COM Persistence [COM, Persistence, Article, Visual C++] Visual C++ Developers Journal 01-Nov-2000, vol. 3, no. 10 by George Shepherd
	Advanced COM: Understanding COM Persistence
	 
	George Shepherd
	 
	Like any other pieces of software, COM objects need to persist their 
states to a persistent medium from time to time. Here, you'll look closely at 
how COM handles object persistence and how to make COM objects save their state 
out to client-provided media.
	
Use AutoCompletion In MFC Apps [AutoCompletion, MFC, Article, Visual C++] Visual C++ Developers Journal 01-Nov-2000, vol. 3, no. 10 by Cassio Goldschmidt
	Use AutoCompletion In MFC Apps
	 
	Cassio Goldschmidt
	 
	Wondering how to make controls in your apps guess what the user is 
trying to type? Use CAutoComplete to enable AutoCompletion in your applications 
with as little as three lines of code.
	
Debugging With ATL 7.0 [Debugging, ATL, Article, Visual C++] Visual C++ Developers Journal 01-Nov-2000, vol. 3, no. 10 by Richard Grimes
	Debugging With ATL 7.0
	 
	Richard Grimes
	 
	ATL 7.0 is a big improvement over ATL 3.0, especially in its debugging 
facilities. Learn the ins and outs of handling tracing and asserts.
	
Build Web Commerce Apps With C# [Web, C#, .NET, Article, Visual C++] Visual C++ Developers Journal 01-Nov-2000, vol. 3, no. 10 by Bob Lair, Jason Lefebvre
	Build Web Commerce Apps With C#
	 
	Bob Lair and Jason Lefebvre
	 
	Use C# and other .NET technologies to develop a commerce Web app from 
the ground up. In part one of this three-part series, you learn to plan the 
application design and database, create the business logic and data access 
component, and create Web forms.
	
Develop a Client/Server Application on Windows and Linux [Client/Server, Linux, TCP/IP, Article, Visual C++] Visual C++ Developers Journal 01-Nov-2000, vol. 3, no. 10 by Jeff Looman
	Develop a Client/Server Application on Windows and Linux
	 
	Jeff Looman
	 
	Construct a single-port, TCP/IP client/server app, and uncover and 
avoid several pitfalls that lurk between your application and the wire used to 
transfer your data.
	
Utilize ATL's Flexibility [ATL, COM, WTL, MFC, Article, Visual C++] Visual C++ Developers Journal 01-Nov-2000, vol. 3, no. 10 by Bill Wagner
	Utilize ATL's Flexibility
	 
	Bill Wagner
	 
	Learn how to create a COM component with ATL and a Windows application 
using WTL. This will help you look at your projects and decide what will best 
suit your needs: ATL and WTL, or just plain ol' MFC.
	
Generation 1.X: A New Era for COM+ [COM+, COM, Article, Visual C++] Visual C++ Developers Journal 01-Nov-2000, vol. 3, no. 10 by Alan Gordon
	Generation 1.X: A New Era for COM+
	 
	Alan Gordon
	 
	Individually, each new feature is insignificant, but taken together, 
they will go a long way toward making COM+ 1.X a better - and easier-to-use - 
platform to build enterprise-class distributed applications. Learn what this 
new version of COM will mean to your programming efforts.
	
Middle Tier: Get Into a Log Rhythm [Log, COM+, Method Call, Event, Error, Article, Visual C++] Visual C++ Developers Journal 01-Nov-2000, vol. 3, no. 10 by Juval Lowy
	Middle Tier: Get Into a Log Rhythm
	 
	Juval Lowy
	 
	The COM+ logbook is a simple - but powerful - utility that enables you 
to log Method Calls, Events, Errors, and various COM+ information. It's your 
product flight recorder, and in a distributed COM+ environment, it's worth its 
weight in gold.
	
Get Your Designs in Gear for VB.NET [VB.NET, .NET, Article, Visual Basic] Visual Basic Programmer's Journal 01-Nov-2000, vol. 10, no. 13 by Paul R Reed Jr
	Get Your Designs in Gear for VB.NET
	 
	Paul R Reed Jr
	 
	Microsoft will deliver full-featured, object-oriented capabilities with 
the release of VB.NET - finally! Producing sound design strategies will be 
crucial to you when taking advantage of all of VB.NET's features, including 
inheritance.
	
Create a Scheduling Component [Scheduling, Component, Article, Visual Basic] Visual Basic Programmer's Journal 01-Nov-2000, vol. 10, no. 13 by Jonny Anderson
	Create a Scheduling Component
	 
	Jonny Anderson
	 
	Keeping to project schedules just got easier. Apply your own critical 
path analysis algorithm to schedules that you can optimize to fit your needs.
	
Manipulate CAB Files Programmatically [CAB, Article, Visual Basic] Visual Basic Programmer's Journal 01-Nov-2000, vol. 10, no. 13 by Ken Getz
	Manipulate CAB Files Programmatically
	 
	Ken Getz
	 
	Use the Windows API to create and work with CAB files from inside your 
VB applications.
	
Create Web Reports With VB [Web, Report, HTML, Article, Visual Basic] Visual Basic Programmer's Journal 01-Nov-2000, vol. 10, no. 13 by Stan Schultes
	Create Web Reports With VB
	 
	Stan Schultes
	 
	VB makes a great vehicle for creating and publishing formatted HTML 
reports. Learn how to build data query and HTML formatting classes you can 
reuse in your own reporting applications.
	
Find Data Faster [Article, Visual Basic] Visual Basic Programmer's Journal 01-Nov-2000, vol. 10, no. 13 by Ron Schwarz
	Find Data Faster
	 
	Ron Schwarz
	 
	Perform binary searches with greater speed when your data is already 
sorted.
	
Prototype Components in ASP [Component, ASP, Article, Visual Basic] Visual Basic Programmer's Journal 01-Nov-2000, vol. 10, no. 13 by Jonathan Goodyear
	Prototype Components in ASP
	 
	Jonathan Goodyear
	 
	ASP component prototyping allows you to get a Web application up and 
running quickly using pure ASP, while not sacrificing your app's future 
scalability.
	
Build Components for the Web [Component, Web, Article, Visual Basic] Visual Basic Programmer's Journal 01-Nov-2000, vol. 10, no. 13 by Deborah Kurata
	Build Components for the Web
	 
	Deborah Kurata
	 
	Learn to improve performance and leverage reusability by building 
components with VB that your Web applications can use.
	
Toggle the Titlebar (and Other Form Tricks) [Titlebar, Article, Visual Basic] Visual Basic Programmer's Journal 01-Nov-2000, vol. 10, no. 13 by Karl E Peterson
	Toggle the Titlebar (and Other Form Tricks)
	 
	Karl E Peterson
	 
	Learn how to give users the choice of captionless and normal forms, and 
related form options.
	
Use New SQL Server Datatypes [SQL Server, Datatype, Article, Visual Basic] Visual Basic Programmer's Journal 01-Nov-2000, vol. 10, no. 13 by Dianne Siebold
	Use New SQL Server Datatypes
	 
	Dianne Siebold
	 
	Try out SQL Server 2000's new bigint, sql_variant, and table datatypes 
to transcend some of SQL Server's limitations.
	
Make Your Apps Scriptable [Microsoft Script Control, Article, Visual Basic] Visual Basic Programmer's Journal 01-Nov-2000, vol. 10, no. 13 by Francesco Balena
	Make Your Apps Scriptable
	 
	Francesco Balena
	 
	Making your application scriptable lets you release different versions 
of the same program. Here's how to use the Microsoft Script Control to extend 
your applications.
	
Scale Your IIS App Using Oracle or SQL Server [IIS, Oracle, SQL Server, Article, Visual Basic] Visual Basic Programmer's Journal 01-Nov-2000, vol. 10, no. 13 by Kirk Allen Evans
	Scale Your IIS App Using Oracle or SQL Server
	 
	Kirk Allen Evans
	 
	Using a Session object can kill your Web site's chances of a long life 
once traffic grows. Here's a solution.
	
Customize Your User Interface With VBScript [Interface, VBScript, Article, Visual Basic] Visual Basic Programmer's Journal 01-Nov-2000, vol. 10, no. 13 by Francesco Balena
	Customize Your User Interface With VBScript
	 
	Francesco Balena
	 
	Use VBScript to modify your forms' appearance, react to events raised 
by your controls, and even create new controls on the fly.
	
Windows CE 3.0: Enhanced Real-Time Features Provide Sophisticated Thread Handling [Windows CE, Thread, Article, Visual C++] MSDN Magazine 01-Nov-2000, vol. 15, no. 11 by Paul Yao
	Windows CE 3.0: Enhanced Real-Time Features Provide Sophisticated 
Thread Handling
	 
	Paul Yao
	 
	
	
Introducing ADO+: Data Access Services for the Microsoft .NET Framework [ADO+, .NET, Article, Visual C++] MSDN Magazine 01-Nov-2000, vol. 15, no. 11 by Omri Gazitt
	Introducing ADO+: Data Access Services for the Microsoft .NET Framework
	 
	Omri Gazitt
	 
	
	
Garbage Collection: Automatic Memory Management in the Microsoft .NET Framework [Garbage Collection, Automatic Memory Management, .NET, Article, Visual C++] MSDN Magazine 01-Nov-2000, vol. 15, no. 11 by Jeffrey Richter
	Garbage Collection: Automatic Memory Management in the Microsoft .NET 
Framework
	 
	Jeffrey Richter
	 
	
	
Windows 2000 Registry: Latest Features and API's Provide the Power to Customize and Extend Your Apps [Windows 2000, Registry, Article, Visual C++] MSDN Magazine 01-Nov-2000, vol. 15, no. 11 by Dino Esposito
	Windows 2000 Registry: Latest Features and API's Provide the Power to 
Customize and Extend Your Apps
	 
	Dino Esposito
	 
	
	
RPC and C++: Build a Template Library for Distributed Objects Containing Multiple Interfaces [RPC, C++, Template Library, Distributed Object, Interface, Article, Visual C++] MSDN Magazine 01-Nov-2000, vol. 15, no. 11 by Ajai Shankar
	RPC and C++: Build a Template Library for Distributed Objects 
Containing Multiple Interfaces
	 
	Ajai Shankar
	 
	
	
Beyond ASP: XML and XSL-based Solutions Simplify Your Data Presentation Layer [ASP, XML, XSL, Article, Visual C++] MSDN Magazine 01-Nov-2000, vol. 15, no. 11 by Scott Howlett, Jeff Dunmall
	Beyond ASP: XML and XSL-based Solutions Simplify Your Data Presentation 
Layer
	 
	Scott Howlett and Jeff Dunmall
	 
	
	
Onstop [Article, Visual C++] MSDN Magazine 01-Nov-2000, vol. 15, no. 11 by Robert Hess
	Onstop
	 
	Robert Hess
	 
	
	
Connecting to SQL with ASP [SQL, ASP, Article, Visual C++] MSDN Magazine 01-Nov-2000, vol. 15, no. 11 by Robert Hess
	Connecting to SQL with ASP
	 
	Robert Hess
	 
	
	
Hiding Images [Image, Article, Visual C++] MSDN Magazine 01-Nov-2000, vol. 15, no. 11 by Robert Hess
	Hiding Images
	 
	Robert Hess
	 
	
	
Passing Values from a Control [Control, Article, Visual C++] MSDN Magazine 01-Nov-2000, vol. 15, no. 11 by Robert Hess
	Passing Values from a Control
	 
	Robert Hess
	 
	
	
Extend the WSH Object Model with Custom Objects [WSH, Article, Visual C++] MSDN Magazine 01-Nov-2000, vol. 15, no. 11 by Dino Esposito
	Extend the WSH Object Model with Custom Objects
	 
	Dino Esposito
	 
	
	
SAX, the Simple API for XML [XML, Article, Visual C++] MSDN Magazine 01-Nov-2000, vol. 15, no. 11 by Aaron Skonnard
	SAX, the Simple API for XML
	 
	Aaron Skonnard
	 
	
	
Programming for 64-Bit Windows [64-bit Windows, Article, Visual C++] MSDN Magazine 01-Nov-2000, vol. 15, no. 11 by Matt Pietrek
	Programming for 64-Bit Windows
	 
	Matt Pietrek
	 
	
	
To Cache or not to Cache [Cache, Article, Visual C++] MSDN Magazine 01-Nov-2000, vol. 15, no. 11 by Ted Pattison
	To Cache or not to Cache
	 
	Ted Pattison
	 
	
	
Eight Lessons from the COM School of Hard Knocks [COM, Article, Visual C++] MSDN Magazine 01-Nov-2000, vol. 15, no. 11 by Jeff Prosise
	Eight Lessons from the COM School of Hard Knocks
	 
	Jeff Prosise
	 
	
	
FileType Icon Detector App [Icon, Article, Visual C++] MSDN Magazine 01-Nov-2000, vol. 15, no. 11 by Paul DiLascia
	FileType Icon Detector App
	 
	Paul DiLascia
	 
	
	
Custom Context Menus [Context Menu, Article, Visual C++] MSDN Magazine 01-Nov-2000, vol. 15, no. 11 by Paul DiLascia
	Custom Context Menus
	 
	Paul DiLascia
	 
	
	
Unreferenced Variables [Article, Visual C++] MSDN Magazine 01-Nov-2000, vol. 15, no. 11 by Paul DiLascia
	Unreferenced Variables
	 
	Paul DiLascia
	 
	
	
String Conversions [String, Article, Visual C++] MSDN Magazine 01-Nov-2000, vol. 15, no. 11 by Paul DiLascia
	String Conversions
	 
	Paul DiLascia
	 
	
	
Reading Hard Drive Manufacturing Information [System, Article, Visual C++] www.codeguru.com 01-Nov-2000 by Lynn McGuire
	Reading Hard Drive Manufacturing Information
	 
	Lynn McGuire
	 
	Console utility for retrieving information about attached IDE drives
	
Allowing the TAB key in Edit Controls [Edit Control, Article, Visual C++] www.codeguru.com 01-Nov-2000 by Hilmi Jauffer
	Allowing the TAB key in Edit Controls
	 
	Hilmi Jauffer
	 
	Overrides PreTranslateMessage to replace default Edit Control behavior 
with more expected behavior of an editor
	
Visual Component Framework: Libraries and Projects [UI, Article, Visual C++] www.codeguru.com 01-Nov-2000 by Jim Crafton
	Visual Component Framework: Libraries and Projects
	 
	Jim Crafton
	 
	Full-featured visual framework (based on NextStep and Borland IDE UIs) 
for creating C++ applications
	
Simplify Development and Maintenance of Navigators [Navigator, Article, Lotus Notes] Notes Advisor 01-Nov-2000 by David Kochan
Data Management - Lotus Notes & Domino Advisor - November 2000 
	Simplify Development and Maintenance of Navigators
	 
	David Kochan
	
Add Microsoft Office Spreadsheets, Charts, and Data to Domino and Notes Applications [Office, Spreadsheet, Chart, Domino, Article, Lotus Notes] Notes Advisor 01-Nov-2000 by Hans van der Burg
Web Development - Lotus Notes & Domino Advisor - November 2000 
	Add Microsoft Office Spreadsheets, Charts, and Data to Domino and Notes 
Applications
	 
	Hans van der Burg
	
Make the R5 Welcome Page Work For You [Article, Lotus Notes] Notes Advisor 01-Nov-2000 by Matt Holthe
Design Application - Lotus Notes & Domino Advisor - November 2000 
	Make the R5 Welcome Page Work For You
	 
	Matt Holthe
	
Launch Notes Applications from a Web Browser [Web, Browser, Article, Lotus Notes] Notes Advisor 01-Nov-2000 by Christopher Pepin
Notes Development - Lotus Notes & Domino Advisor - November 2000 
	Launch Notes Applications from a Web Browser
	 
	Christopher Pepin
	
Beyond the Cutting Edge: Flash and Domino [Domino, Article, Lotus Notes] Notes Advisor 01-Nov-2000 by Daron Lawing
Web Development - Lotus Notes & Domino Advisor - November 2000 
	Beyond the Cutting Edge: Flash and Domino
	 
	Daron Lawing
	
Track Invalid Web-based Login Attempts [Web, Article, Lotus Notes] Notes Advisor 01-Nov-2000 by Terrance A Crow
Web Development - Lotus Notes & Domino Advisor - November 2000 
	Track Invalid Web-based Login Attempts
	 
	Terrance A Crow
	
Use Domino as an E-Business Platform [Domino, E-Business, Article, Lotus Notes] Notes Advisor 01-Nov-2000 by Brad Cunningham
E-Business - Lotus Notes & Domino Advisor - November 2000 
	Use Domino as an E-Business Platform
	 
	Brad Cunningham
	
Message Table (.mc) Dump Utility [System, Table, Event, Article, Visual C++] www.codeproject.com 31-Oct-2000 by Sardaukar
	Message Table (.mc) Dump Utility
	 
	Sardaukar
	 
	More description(s) about Event log messages.
	
Undocumented AFX function : AfxGetClassIDFromString [ATL, COM, Article, Visual C++] www.codeguru.com 31-Oct-2000 by G De Leeuw
	Undocumented AFX function : AfxGetClassIDFromString
	 
	G De Leeuw
	 
	Function that enables you to compare a classid to a progid for things 
such as determining if a given component has been installed.
	
Code to Dynamically Redock a Toolbar at Runtime [Toolbar, Article, Visual C++] www.codeguru.com 31-Oct-2000 by Hiral Oza
	Code to Dynamically Redock a Toolbar at Runtime
	 
	Hiral Oza
	 
	Snippet that allows you to do such things as giving the end-user a 
"Reset all Toolbars" function
	
Win32 C Function for High-Quality Bitmap Shrinking [Bitmap, Article, Visual C++] www.codeguru.com 31-Oct-2000 by Petr Spácil
	Win32 C Function for High-Quality Bitmap Shrinking
	 
	Petr Spácil
	 
	Replacement function for StretchBlt that enables you to produce Adobe 
Photoshop-quality images when shrinking bitmaps
	
General Flicker Free Resizable Control [Dialog, Article, Visual C++] www.codeguru.com 31-Oct-2000 by Torben B Haagh
	General Flicker Free Resizable Control
	 
	Torben B Haagh
	 
	Fantastic generic solution that can be used for any type of window 
(dialogs, form views, property sheets, etc.)
	
A Safer STL Container Class [C++, MFC, Article, Visual C++] www.codeguru.com 31-Oct-2000 by Alex Kravchenko
	A Safer STL Container Class
	 
	Alex Kravchenko
	 
	Technique to allow STL containers to verify object's state to ensure 
object has not been deleted
	
SQL Server 2000 Licensing Changes--What You Need to Know [SQL Server, Licensing, Article, Visual Basic] www.earthweb.com 31-Oct-2000 by Brian Moran
	SQL Server 2000 Licensing Changes--What You Need to Know
	 
	Brian Moran
	 
	31-Oct-2000
	 
	31-Oct-2000
	 
	SQL Server 2000 Licensing Changes--What You Need to Know
	
My IP with Delphi [Article, Delphi] delphi.about.com 31-Oct-2000
	31-Oct-2000
	 
	31-Oct-2000
	 
	My IP with Delphi
	 
	How to obtain a computer's IP address by using the Socket API and 
Delphi's Pascal.
	
Operating System Integration - Part 2 (Counting CPUs , Memory Management) (using: Visual Basic 6.0) [GetSystemInfo(), GlobalMemoryStatus(), Memory Management, MEMORYSTATUS, SYSTEM_INFO, Visual Basic, Article] visualbasic.about.com 30-Oct-2000
Operating System Integration - Part 2  
 
In part one of this series (see -> ) in retrieving information about the 
underlying software and hardware platform that your Visual Basic application is 
running on, we discovered a few handy API calls designed to make it easy to 
retrieve info about the Windows operating system - including the version 
(95/98/NT) and running mode (normal/safe). This week, we're going to be 
investigating a few API call to get info about that computer hardware setup.

Memory Management 

First off, let's take a look at some handy code designed to retrieve the number 
of total and free bytes of memory.

Copy this code into the declarations section of your form:

Private Type MEMORYSTATUS
        dwLength As Long
        dwMemoryLoad As Long
        dwTotalPhys As Long
        dwAvailPhys As Long
        dwTotalPageFile As Long
        dwAvailPageFile As Long
        dwTotalVirtual As Long
        dwAvailVirtual As Long
End Type


Private Declare Sub GlobalMemoryStatus Lib "kernel32" _
Alias "GlobalMemoryStatus" (lpBuffer As MEMORYSTATUS)
Code 

Now, add the following code to the click event of a buttons added to your form:

Dim memoryInfo As MEMORYSTATUS
GlobalMemoryStatus memoryInfo

MsgBox "Total memory (in bytes): " & _
memoryInfo.dwTotalPhys

MsgBox "Available memory (in bytes): " & _
memoryInfo.dwAvailPhys

Run the program and click the button. Two message boxes will appear, one after 
another. The first will detail the amount of memory (RAM) installed in the 
computer, and the second will detail the amount of physical memory that is 
currently unused.

An extension of this code is to use the "dwMemoryLoad" variable from the 
MEMORYSTATUS structure to determine as approximate percentage of the system's 
load, where "0" would be no memory in use, and "100" would be all memory used.

Counting CPUs 

Let's now take a look at another handy API call - GetSystemInfo. This function 
allows VB developers to retrieve information about the ... (cont.)
Copying Files With Explorer (using: Visual Basic 6.0) [Article, SHFileOperation(), SHFILEOPSTRUCT, Visual Basic] visualbasic.about.com 30-Oct-2000
Copying Files With Explorer  

Today I'm going to explain how to integrate Explorer's funky Copy dialog boxes 
into your own application, with help from a useful API call buried deep within 
the Shell32.dll API dll. We last took a look at this handy function in the 
article 'Using The Recycle Bin' where I explained how to use the API to move 
files from the hard disk into the Windows Recycle Bin, a much better way of 
removing files from the system compared with using the 'Kill' command. Right, 
without further chit chat, let's take a look at the code!

Declarations 

Copy this code into the declarations section of your form:

Private Type SHFILEOPSTRUCT
        hwnd As Long
        wFunc As Long
        pFrom As String
        pTo As String
        fFlags As Integer
        fAnyOperationsAborted As Long
        hNameMappings As Long
        lpszProgressTitle As Long
End Type

Private Declare Function SHFileOperation Lib _
"shell32.dll" Alias "SHFileOperationA" _
(lpFileOp As SHFILEOPSTRUCT) As Long

Private Const FO_MOVE = &H1
Private Const FO_COPY = &H2
Private Const FOF_SILENT = &H4
Private Const FOF_RENAMEONCOLLISION = &H8

Code 

Now, if you would like to copy the file "autoexec.bat" from your C:\ drive into 
the "A:\" floppy drive, you would use this code:

Dim ShellCall As SHFILEOPSTRUCT

ShellCall.hwnd = hwnd
ShellCall.wFunc = FO_COPY
ShellCall.pFrom = "c:\autoexec.bat"
ShellCall.pTo = "a:\autoexec.bat"
ShellCall.hNameMappings = 0

Call SHFileOperation(ShellCall)

It's as easy as that! Run the code, and you should see a box pop up that is 
similar this this:



The Next Step... 

We've now learned how to use the Shell API to copy a file from one directory to 
another with only a few lines of code. Time to take a look at a few of the 
changes we can make to this code to improve it.

Rename On Collision

If the A: drive already contains a file named "autoexec.bat", the following 
dialog box will appear:



Now, if the use clicks "yes" the ex ... (cont.)
Fast Regular Expressions [C++, MFC, STL, Regular Expression, Article, Visual C++] www.codeproject.com 30-Oct-2000 by Martin Holzherr
	Fast Regular Expressions
	 
	Martin Holzherr
	 
	Compiles a regular expression into a fast automaton
	
XML Parser Demo [SOAP, XML, Parser, Article, Visual C++] www.codeproject.com 30-Oct-2000 by Ray Hayes
	XML Parser Demo
	 
	Ray Hayes
	 
	Using the Microsoft XML (MSXML) parser.
	
Operating System Integration - Part 2 [Article, Visual Basic] visualbasic.about.com 30-Oct-2000
	30-Oct-2000
	 
	30-Oct-2000
	  
	Operating System Integration - Part 2
	 
	In this week's epic operating system integration article, your Visual 
Basic Guide uncovers a few API calls to retrieve information about the 
underlying hardware architecture - from memory available to the number of CPUs 
installed.
	
CUSTOMWZ .... Custom AppWizard [AppWizard, Visual Studio AppWizard, Visual C++] www.microsoft.com 28-Oct-2000
CUSTOMWZ: A Custom AppWizard


CUSTOMWZ is an example of a custom AppWizard, which contains features that the 
standard AppWizard does not provide.

When creating a new application, you can use AppWizard to quickly generate the 
starter files you need for the most common application types. But for special 
applications that are unique to your work, you can create custom AppWizards.

Custom AppWizards are useful for creating generic application project types 
that can repetitively generate common functionality — application types that 
can be used multiple times. Custom AppWizards are not useful for creating 
one-off project types.

Like AppWizard, a custom AppWizard presents the user with choices, tracks their 
decisions, and uses those decisions to generate the code, resources, and 
project files that the Visual C++ build tools require to build a skeletal, 
working application.

For example, if you work for a company whose employees commonly need special 
views of database information, you can create a custom AppWizard to generate 
generic dialog-based front ends to a database. You can even ensure that the 
dialog box is always embellished with a company logo.

Possibilities for custom AppWizards include: 

Creating a custom AppWizard that is based on the code and resources in an 
existing project
Modifying code in existing AppWizard templates
Adding one or more steps to the existing AppWizard’s steps
Creating a custom set of steps 

For more information on creating a custom AppWizard, see Overview of Creating a 
Custom AppWizard.

This sample demonstrates the following keywords:

AfxFormatString1; AfxMessageBox; AfxThrowUserException; CBitmap::LoadBitmap; 
CDC::BitBlt; CDC::CreateCompatibleDC; CDC::DPtoLP; CDC::FillRect; 
CDC::SelectObject; CDialog::MapDialogRect; CFileDialog::DoModal; 
CFileDialog::GetPathName; CGdiObject::GetObject; CListBox::AddString; 
CListBox::GetItemData; CListBox::GetSelCount; CListBox::GetSelItems; 
CListBox::SelItemRange; CListBox::SetItemDat ... (cont.)
MB ColorPicker Control [Control, Color, Article, Visual Basic] www.vb2themax.com 28-Oct-2000 by Marco Bellinaso
	MB ColorPicker Control
	  
	28-Oct-2000
	 
	28-Oct-2000
	 
	Marco Bellinaso
	 
	This control reproduces and extends the Color picker provided by Office 
2000. It has a drop down palette that shows any color combination you want and 
(optionally) a custom button to open the Windows Common Dialog Control for 
color selection. In addition each color box can have a different tooltip. Every 
aspect of the control is customizable. It can look like a combo box, a simple 
button, a checkbox button, a dropdown button, etc. You can choose the color and 
width of the 3D border that highlight the color box under the mouse cursor, the 
height and width of the color boxes, the custom button's text, the number of 
colors per row, and much more. The control's events let you to customize its 
behaviour even more. There is also a property page that allows you to easily 
add the colors you want to display and add some standard palettes that cover 
the red/green/blue/gray scale, 16, 48 or system colors.
	
DeBugging Perl [Debugging, Perl, Book] Purchased 27-Oct-2000, $63.95
Before 10% discount
Enabling "No Step Into" in the Visual C++ Debugger (using: Visual C++ 6.0) [Breakpoint, Debugging, Developer Studio, Visual C++, Visual Studio, Tip] www.wintellect.com 27-Oct-2000
Nothing is more distracting when you’re trying to narrow down a problem in the 
debugger than to accidentally step into some common library code when you meant 
to step over it. Fortunately, the Visual C++ debugger offers an undocumented 
means of telling the debugger to never step into certain code. The feature is 
referred to "No Step Into." If you have a debugging function called 
"CheckMyMem," here's how you would ensure the debugger will never step into 
that function.

1. Open AUTOEXP.DAT which in in the \MSDev98\Bin directory.

2. At the bottom of the file, add the following line: "[Execution Control]". As 
you can tell from looking at AUTOEXP.DAT, it's just a standard INI file.

3. The format of the entries is "functionname=NoStepInto" so to add CheckMyMem, 
the entry is "CheckMyMem=NoStepInto."

4. The whole section would look like the following:

[Execution Control]

CheckMyMem=NoStepInto

Adding individual class members is just the same. If you don't want to step 
into MFC CString constructors, just add the line "CString::CString=NoStepInto." 
However, what is even more interesting is that you can have whole classes 
marked as No Step Into! For example, if you don't want to step into any of the 
methods in the _bstr_t class, the entry is "_bstr_t::*=NoStepInto."

If you are having trouble getting the No Step Into to work with your classes, 
ensure that you are using the correct type name. Run your program under the 
debugger and put an instance of the class in the Watch window. Right click on 
the item in the Watch window and select Properties from the context menu. The 
type listed is the type that the VC debugger is using for you class.

Here's a complete section so you can cut and paste it into your own AUTOEXP.DAT:

[Execution Control]

CString::CString=NoStepInto

_bstr_t::*=NoStepInto

_variant_t::*=NoStepInto

Unfortunately, No Step Into doesn't work with template classes, which is why 
the feature is probably undocumented. A work around is ... (cont.)
Century Date Tables [Database, Date, Table, SQL, Validation, Article, Visual C++] www.codeproject.com 27-Oct-2000 by John Bevilaqua
	Century Date Tables
	 
	John Bevilaqua
	 
	SQL DDLs for creating table structures and inserting the data for a set 
of tables suitable for producing pick lists for Validation of the Month Names, 
Month Numbers, Days in each Month and Years in the 20th Century
	
Database info tool [Database, Table, Article, Visual C++] www.codeproject.com 27-Oct-2000 by Massimo Colurcio
	Database info tool
	 
	Massimo Colurcio
	 
	Explore the structure of Tables (and views)
	
Toolbars with Spinners & Sliders [Toolbar, Docking Window, Article, Visual C++] www.codeproject.com 27-Oct-2000 by Masoud Samimi
	Toolbars with Spinners & Sliders
	 
	Masoud Samimi
	 
	How to create toolbars with spinners and/or sliders
	
JavaScript For Beginners [JavaScript, Article, Visual C++] www.codeproject.com 27-Oct-2000 by Nongjian Zhou
	JavaScript For Beginners
	 
	Nongjian Zhou
	 
	A very easy tutorial for JavaScript beginners
	
CResizableSheet and CResizablePage [Property Sheet, CPropertySheet Class, CPropertyPage Class, Dialog, MFC, Article, Visual C++] www.codeproject.com 27-Oct-2000 by Paolo Messina
	CResizableSheet and CResizablePage
	 
	Paolo Messina
	 
	Two CPropertySheet/CPropertyPage derived classes to implement resizable 
property sheets or wizard Dialogs with MFC
	
Active Perl Developer's Guide [Perl, Scripting, Book] Purchased 26-Oct-2000, $75.96
After 20% discount
InspectExe 2.6 [DLL, EXE, Explorer, Export, Import, Resource, Module, Product, Owned By BDP, Development, System Support] No purchase required 26-Oct-2000
After 20% discount
GAWP 1.18 [C++, Developer Studio, MFC, Visual C++, Visual Studio, Product, Owned By BDP, Development, Educational] No purchase required 26-Oct-2000
After 20% discount
Bring up the Windows Help System (using: Visual Basic 6.0) [Help, keybd_event(), Visual Basic, Product] www.devx.com 26-Oct-2000
BRING UP THE WINDOWS HELP SYSTEM

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As 
Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const VK_LWIN = &H5B
Private Const KEYEVENTF_KEYUP = &H2

' Open the Windows Help
'
' You can use the same technique to programmatically "press" any other
' key, including Shift, Ctrl, Alt and keys combinations that can't be
' simulated through SendKeys

Sub OpenWindowsHelp()
    ' programmatically press the Windows key
    keybd_event VK_LWIN, 0, 0, 0
    ' then press and then release the F1 key
    keybd_event vbKeyF1, 0, 0, 0
    keybd_event vbKeyF1, 0, KEYEVENTF_KEYUP, 0
    ' and finally release the Windows Key
    keybd_event VK_LWIN, 0, KEYEVENTF_KEYUP, 0
End Sub
AutoBld .... Builds One or More Workspaces at Specified Times and Dates [Building Projects, Developer Studio, Visual C++, Visual Studio, VC++ Add-in, Visual Studio Add-in] www.microsoft.com 26-Oct-2000
AutoBld: Builds One or More Workspaces at Specified Times and Dates

This sample builds a Visual C++ project at a specified time. When the build is 
done, AutoBld emails the user with the name of the configuration and the number 
of build warnings and errors. The code demonstrates working with various parts 
of the Developer Studio object model, placing multiple commands into an add-in, 
and invoking commands from a command line.

For the Send Email function to work, you either need a non-password email 
account, or you need to be logged into the email account at the time AutoBld 
runs.

To build the sample 

Click the link at the beginning of this topic to download the sample files.
In Visual C++, open the project file AutoBld.dsp.
Choose an appropriate configuration (Win32 Release is best if you plan to use 
this add-in).
Click Rebuild All from the Build menu.
Place AutoBld.dll in \Microsoft Visual Studio\Common\MSDev98\AddIns so it can 
be located by Visual C++ when it launches. 

To run the sample on Windows NT 

From the Tools menu, click Customize.
Click the Add-ins and Macro Files tab. 
Select the AutoBld.dll file or browse for it. See Tips for Using Add-ins.
Once the AutoBld add-in has been loaded, clicking the button on the add-in 
toolbar opens a dialog box that lets you specify where build time information 
is to be logged. The file is persistent; any changes to it will be used next 
time.
Click the Configure button on the newly created toolbar, and set your 
preferences in the AutoBuild Configuration dialog box.
Exit Visual C++ to save this configuration.
From Control Panel, open the Services dialog box. Find Scheduling Agent in the 
list box, and make sure its Status column indicates Started and its Startup 
column indicates Automatic. If the Scheduling Agent's Status is not set to 
Started, highlight the Scheduling Agent and click the Start button. If its 
Startup is not set to Automatic, click the Startup button and select Automatic 
in the Startup Type field  ... (cont.)
BldRec .... Uses Automation to Record Time and Length of a Build [Building Projects, Developer Studio, Visual C++, Visual Studio, VC++ Add-in, Visual Studio Add-in] www.microsoft.com 26-Oct-2000
BldRec: Uses Automation to Record Time and Length of a Build

BldRec records the following build information in a text file: 

Length of time
Number of errors
Number of warnings 

The sample also shows using the registry to persist a setting. BldRec was 
created with the ATL COM AppWizard. Support MFC was checked in the wizard, and 
then an Add-in object was added to the project with the ATL Object Wizard.

To build the sample 

Click the link at the beginning of this topic to download the sample files.
In Visual C++, open the project file BldRec.dsp.
Choose an appropriate configuration (Win32 Release is best if you plan to use 
this add-in).
Click Rebuild All from the Build menu. 

To run the add-in 

From the Tools menu, click Customize.
Click the Add-ins and Macro Files tab.
Select the BldRec.dll file or browse for it. See Tips for Using Add-ins.
Once the BldRec add-in has been loaded, clicking the button on its toolbar 
displays a dialog box that lets you specify a location to log build time 
information. The file is persistent; any changes to it will be used next time. 

Output of BldRec is similar to:

09:48:11 PM 02/19/98 :             Build Started  -- bldrec - Win32 Debug
09:48:25 PM 02/19/98 : 00:00:14    Build Finished! Errors=0, Warnings=0 -- 
bldrec - Win32 Debug

This sample demonstrates the following keywords:

CTimeSpan; CTime::GetCurrentTime; CTime::Format; CRegKey::QueryValue; 
CRegKey::Create; CRegKey::SetValue; addin; customize; IApplication; 
IConfiguration; IApplicationEvents
BrkPntMgr .... Uses Automation to List and Control Breakpoints [Breakpoint, Building Projects, Developer Studio, Visual C++, Visual Studio, VC++ Add-in, Visual Studio Add-in] www.microsoft.com 26-Oct-2000
BrkPntMgr: Uses Automation to List and Control Breakpoints

BrkPntMgr is a breakpoint manager. It will save and load breakpoints from 
files. You can add comments to make your breakpoints more understandable. This 
is useful in working on many bugs at one time, or over time.

BrkPntMgr was created with the ATL COM AppWizard. Support MFC was checked in 
the wizard and then an Add-in object was added to the project with the ATL 
Object Wizard. The code that was added is mostly in BrkPnts.cpp. There is code 
for loading, saving, and closing, and a function that will get a pointer to an 
IGenericDocument interface for a given file.

To build the sample 

In Visual C++, open the project file BrkPntMgr.dsp. 
Choose an appropriate configuration (Win32 Release is best if you plan to use 
this add-in). 
Click Rebuild All from the Build menu. 

To run the add-in 

From the Tools menu, click Customize.
Click the Add-ins and Macro Files tab.
Select the BrkPntMgr.dll file or browse for it. See Tips for Using Add-ins.
Visual C++ will load the add-in. When you close the Customize dialog box, 
BrkPntMgr’s toolbar will appear.
Run the BrkPntMgr add-in by clicking the toolbar button. BrkPntMgr puts up a 
single button in a toolbar. Clicking this button opens a dialog box. This 
dialog box has a check box for Save Only Enabled, an edit box File:, a Browse 
button, another edit box labeled Comment, and four more buttons labeled Clear, 
Save, Load, and To Output Wnd. The text at the top of the dialog box reports 
how many breakpoints are set and enabled. 
If you put a file name in the File: edit box (or browse for one), you can 
either load or save breakpoints. If the Save Only Enabled check box is enabled, 
you will not save any disabled breakpoints. When you save, you can add a 
comment, such as "This set of breakpoints are for finding a memory leak in the 
bipartite graph program."

When you load a file, all files with breakpoints set will be opened and then 
all the breakpoints will be set.  ... (cont.)
CmdWnd .... Issues IDE Commands from a Command Window [Building Projects, Developer Studio, Visual C++, Visual Studio, VC++ Add-in, Visual Studio Add-in] www.microsoft.com 26-Oct-2000
CmdWnd: Issue IDE Command in a Command Window

The CmdWnd add-in sample creates a command window into which you can enter 
three types of commands:

1. CmdWnd commands

You can display a list of the CmdWnd commands by typing a question mark (?) in 
the command window. Note that several CmdWnd commands start the debugger.

2. IDE commands

Any command issued in the command window that is not a CmdWnd command will next 
be evaluated as an IDE command. Any command that you see in the Commands list 
in the Keyboard tab of the Customize dialog box, which is accessed from the 
Tools menu, can be issued in the command window to access the functionality of 
the menu option. An example of such a command is NewText. Another useful one is 
DebugBreak. Note that case is sensitive here.

3. MS-DOS commands

Any command issued in the command window that is neither a CmdWnd command nor 
an IDE command will next be evaluated as a command issued from an MS-DOS prompt.

The CmdWnd add-in sample shows how to create a modeless dialog box add-in. 
Add-ins are normally required to be modal dialog boxes. One problem encountered 
in making a modeless add-in is that some keystrokes get translated and sent to 
msdev.exe and the add-in’s dialog box does not receive them. This is 
particularly dangerous since keys like DEL are in this list. This sample shows 
how to create an add-in in two basic pieces: a stub add-in, and an exe that 
opens a dialog box. This results in a modeless dialog box for msdev.exe.

To build the sample 

Click the link at the beginning of this topic to download the sample files.
In Visual C++, open the project file cmdwnd.dsw.
Choose an appropriate configuration (Win32 Release is best if you plan to use 
this add-in). 
Make the All project the active project.
Click Rebuild All from the Build menu. 

This project builds a proxy stub, called devcmd.dll, and is built in the 
msdevcmdstubs subproject. There is one other subproject called the _interface 
project; this project fa ... (cont.)
API2Help .... Creates an HTML or RTF File to Include in a Help System [Building Projects, Developer Studio, Help, HTML, RTF, Visual C++, Visual Studio, VC++ Add-in, Visual Studio Add-in] www.microsoft.com 26-Oct-2000
API2Help: Creates an HTML or RTF File to Include in a Help System

This add-in creates documentation for a function prototype. Simply open a 
source code file in Visual C++ and highlight a function prototype. Then click 
the add-in. You will be prompted to create either a .rtf file or a .htm file. 
You can use the resulting file to create help for the function.

To build the sample 

Click the link at the beginning of this topic to download the sample files.
In Visual C++, open the project file API2Help.dsp.
Choose an appropriate configuration (Win32 Release is best if you plan to use 
this add-in).
Click Rebuild All from the Build menu. 

To run the add-in 

From the Tools menu, click Customize.
Click the Add-ins and Macro Files tab. 
Select the API2Help.dll file or browse for it. See Tips for Using Add-ins. 
API2Help creates a small toolbar that is visible when you close the Customize 
dialog box.
Highlight a function prototype in a source file.
Click the API2Help button on the newly created toolbar, follow the prompts, and 
fill in the appropriate information in the File Generation Options dialog box.
Modify your help system to include the newly generated files. 


This sample demonstrates the following keywords:

CComModule.Init; CWinApp::ExitInstance; CComModule.GetClassObject; 
CComModule.RegisterServer; CRegKey.Open; CString.LoadString; 
CRegKey.SetKeyValue; CComModule.UnregisterServer; CFile.Write; 
CString.LoadString; WriteString; CString.TrimLeft; CString.TrimRight; 
CString.Find; CString.SetAt; Iapplication; CCommandsObj::CreateInstance; 
EnableWindow; SetWindowText; CString::GetLength; DoModal
Pipe .... Uses Automation to Filter or Pipe Output from the Text Editor [Developer Studio, Visual C++, Visual Studio, VC++ Add-in, Visual Studio Add-in] www.microsoft.com 26-Oct-2000
Pipe: Uses Automation to Filter or Pipe Output from the Text Editor

Pipe (or Filter as it is called in the Customize dialog box) lets you process 
text by selecting it in the Visual C++ Text editor, pressing a button, choosing 
or setting a command, and applying the command to your selection. It is useful 
in sorting.

Pipe was created with the ATL COM AppWizard. Support MFC was checked in the 
wizard, and then an Add-in object was added to the project with the ATL Object 
Wizard. Most of the code added is in MarkIt.cpp. 

If you modify the sample, precede each function that could be called from an 
external interface with the following code:

AFX_MANAGE_STATE(AfxGetStaticModuleState());

This allows you to access your resources and is necessary because of the MFC 
support.

The CMRUStrings class is used to do the persistence for a drop-down combo box. 
You can use this class and other classes from the add-ins in other projects. 
See Reusing Code Topics and Adding Classes to the Gallery for information on 
how to reuse code.

To build the sample 

Click the link at the beginning of this topic to download the sample files. 
In Visual C++, open the project file Pipe.dsp. 
Choose an appropriate configuration (Win32 Release is best if you plan to use 
this add-in). 
Click Rebuild All from the Build menu. 

To run the add-in 

From the Tools menu, click Customize.
Click the Add-ins and Macro Files tab. 
Select the Pipe.dll file or browse for it. See Tips for Using Add-ins. Visual 
C++ will load the add-in. When you close the Customize dialog box, Pipe’s 
toolbar will appear.
Run the Pipe add-in by clicking the toolbar button, which will display a dialog 
box where you can set the command line. For example, you can sort the selection 
by setting the command to c:\winnt\system32\sort.exe. Or you could issue a dir 
command with the output inserted into your current file. 

Pipe will work on a selection size of 0, on a column selection (SHIFT+ALT and 
select), whole lines, or  ... (cont.)
ReplAll .... Uses Automation to Implement Replace Across Open Text Files [Developer Studio, Visual C++, Visual Studio, VC++ Add-in, Visual Studio Add-in] www.microsoft.com 26-Oct-2000
ReplAll: Uses Automation to Implement Replace Across Open Text Files

ReplAll resembles the Find and Replace dialog box but will find and replace 
text in all open text files.

To build the sample 

Click the link at the beginning of this topic to download the sample files.
In Visual C++, open the project file ReplAll.dsp.
Choose an appropriate configuration (Win32 Release is best if you plan to use 
this add-in). 
Click Rebuild All from the Build menu. 

To run the add-in 

From the Tools menu, click Customize.
Click the Add-ins and Macro Files tab. 
Select the ReplAll.dll file or browse for it. See Tips for Using Add-ins. 
Visual C++ will load the add-in. When you close the Customize dialog box, 
ReplAll’s toolbar will appear.
Run the ReplAll add-in by clicking the toolbar button. Clicking this button 
opens a dialog box that resembles the Find and Replace dialog box in Visual C++:

It has check boxes for Match whole word only, Match case, and Regular 
Expression as well as buttons for Replace All and Cancel.
It has two edit boxes: Find what and Replace with. 

ReplAll deals with the various emulation modes, such as the Brief and Epsilon 
editors.

This sample demonstrates the following keywords:

IApplication, CComPtr, CComQIPtr; CComBSTR; CComVariant; 
IDocuments::get__NewEnum; IEnumVARIANT::Next; CComVariant; 
IDocuments::get_Count; Item; ITextDocument::ReplaceText; 
ITextEditor::get_Emulation ; IApplication::get_ActiveDocument ; addin; 
customize; ItextDocument; ITextSelection

 
Wins .... Uses Automation to List and Control Windows [Developer Studio, Help, HTML, RTF, Visual C++, Visual Studio, VC++ Add-in, Visual Studio Add-in] www.microsoft.com 26-Oct-2000
Wins: Uses Automation to List and Control Windows


Wins is a window manager that you can use to find, minimize, make visible, 
activate, and close windows, and also close any windows opened in a debug 
session. It will create files that, when loaded, will open selected windows.

Wins was built using the ATL COM AppWizard with the Support MFC option. The 
code that does the work with Automation objects is in WindowsList.cpp. It has 
some functions you may be able to reuse. For example, FindDoc, given a path to 
a document, returns a pointer to an IGenericDocument interface, opening it if 
requested. 

Wins also demonstrates how to add sorting to a list control and handling 
various messages from the list control that are mirrored. MyListCtrl.cpp has 
some useful functions for using list controls.

To build the sample 

Click the link at the beginning of this topic to download the sample files. 
In Visual C++, open the project file Wins.dsp.
Choose an appropriate configuration (Win32 Release is best if you plan to use 
this add-in).
Click Rebuild All from the Build menu. 

To run the add-in 

From the Tools menu, click Customize.
Click the Add-ins and Macro Files tab. 
Select the Wins.dll file or browse for it. See Tips for Using Add-ins. Visual 
C++ will load the add-in. When you close the Customize dialog box, the Wins 
toolbar will appear.
Run the Wins add-in by clicking the toolbar button. Clicking this button opens 
a dialog box. Wins is a window manager with controls that represent various 
window management functions:

The Windows Manager button opens a dialog box that lets you look at all your 
windows, sort them according to file name, file extension, directory, time 
activated, rectangle coordinates (top, left, bottom, right), and rectangle 
coordinates in debug mode. It will let you do selections on this, invert 
selections, and select all. It will save selected files out to a .nfl (named 
file list) file, and let you reload .nfl files, opening windows as it does ... (cont.)
Embed OpenGL inside Java AWT Canvas [Java Programming, OpenGL, Article, Visual C++] www.codeproject.com 26-Oct-2000 by Davanum Srinivas
	Embed OpenGL inside Java AWT Canvas
	 
	Davanum Srinivas
	 
	This article shows how to use OpenGL calls inside Java AWT Canvas using 
JDK1.3's JAWT interface
	
Visual Component Framework [Project, Component, Article, Visual C++] www.codeproject.com 26-Oct-2000 by Jim Crafton
	Visual Component Framework
	 
	Jim Crafton
	 
	An Article describing working with the Visual Component Framework
	
A Visit to Redmond, Part 6 [Interview, Article, Visual C++] www.codeproject.com 25-Oct-2000 by Chris Maunder
	A Visit to Redmond, Part 6
	 
	Chris Maunder
	 
	For those who are curious as to what a hastily scheduled trip to 
Redmond is like.
	
To WTL or Not to WTL. That Is the Question [ATL, WTL, Article, Visual C++] www.codeguru.com 25-Oct-2000 by Andrew Whitechapel
	To WTL or Not to WTL. That Is the Question
	 
	Andrew Whitechapel
	 
	In his latest contribution, Andrew ponders the question posed by many 
of you brave enough to dive into the undocumented waters of WTL.
	
cFileNotify .... Class to monitor any file changes made in a particular folder [File, FindCloseChangeNotification(), FindFirstChangeNotification(), FindNextChangeNotification(), Folder, WaitForSingleObject(), Visual Basic, VB Class Module] www.codeoftheweek.com 25-Oct-2000, no. 131
Requirements

Visual Basic 4.0 32-bit or higher.

This issue introduces a class to monitor any file changes made in
a particular folder.

cFileNotify

This class is very useful when any monitoring of folders is
necessary.  It will automatically notify the calling program when
a file changes in a folder.  It is most useful for applications
which require folders to be updated when external changes are made
to them.  It is also very useful for batch file processing where
an application needs to process a file once it appears in a
particular folder.

This class can not tell what kind of change has occurred, but
only that some change occurred in the folder specified by the
FolderToWatch property.  Additional code would have to be written
to determine this information.  It does not seem to be available
from the Windows API.


Properties

Public Enum FileNotifyFlags

This enumerator specifies which events can be monitored.  Most of
the constants are pretty obvious.  For full details on each one of
these properties see
http://msdn.microsoft.com/library/psdk/winbase/filesio_9hgu.htm at
Microsoft's web site.  Each constant can be OR'd together to watch
several events.

Public FolderToWatch As String

This is the folder name to watch, such as e:\temp or
c:\windows\system

Public Event FolderChanged(sFolder As String, eFlags As FileNotifyFlags)

This event will be raised everytime a change in detected in the
FolderToWatch.  Which changes are monitored is determined by the
eFlags option on the Monitor method.

Methods

Public Sub Monitor(Optional eFlags As FileNotifyFlags = FileNotifyDefault)

Starts the monitoring process.  The Monitor routine will not
return until the Abort method is called or some error occurs.
Typically this call will be put behind a button on a form or a
timer on a form to keep the main application from hanging up.  A
future version of this class will have an asynchronous version of
this routine.

Public Sub Abort()

Cancels the monitoring proces ... (cont.)
basPhoneNumbers .... Format a phone number [Phone Number, Visual Basic, VB Class Module] www.codeoftheweek.com 15-Oct-2000, no. 130
Requirements

Visual Basic 4.0 or higher.  Will probably work in VB3 too.

This issue presents one method to format a United States phone
number.  It will also work in locations where the phone numbers
are 7 digits or 10 digits long.  It can easily be modified to fit
your local phone number requirements.

basPhoneNumbers

This module shows a good model for formatting phone numbers (or
other numeric values).  It will format a 7 digit or 10 digit phone
number in the format 999-9999 or (999)999-9999.


Functions

Public Function FormatUSPhoneNumber(ByVal sPhone As String) As String

Call this routine with a phone number as the specified parameter.
It will raise an error if the phone number is not 7 or 10 digits
after all non-numerics are removed.  It will return a string in
the format of 999-9999 or (999)999-9999.  If you want to modify
the formatted output update the Format$ line in the routine.


Sample Usage

This sample shows how to use the FormatUSPhoneNumber function.



    Debug.Print FormatUSPhoneNumber("2125047945")
    ' the output will be: (212)504-7945

    Debug.Print FormatUSPhoneNumber("212-504-7945")
    ' the output will be: (212)504-7945
CommentWizard 1.0 [Add-in, Visual C++, Visual Studio, Product, Owned By BDP, Development] Purchased 18-Oct-2000, $30US
Requirements

Visual Basic 4.0 or higher.  Will probably work in VB3 too.

This issue presents one method to format a United States phone
number.  It will also work in locations where the phone numbers
are 7 digits or 10 digits long.  It can easily be modified to fit
your local phone number requirements.

basPhoneNumbers

This module shows a good model for formatting phone numbers (or
other numeric values).  It will format a 7 digit or 10 digit phone
number in the format 999-9999 or (999)999-9999.


Functions

Public Function FormatUSPhoneNumber(ByVal sPhone As String) As String

Call this routine with a phone number as the specified parameter.
It will raise an error if the phone number is not 7 or 10 digits
after all non-numerics are removed.  It will return a string in
the format of 999-9999 or (999)999-9999.  If you want to modify
the formatted output update the Format$ line in the routine.


Sample Usage

This sample shows how to use the FormatUSPhoneNumber function.



    Debug.Print FormatUSPhoneNumber("2125047945")
    ' the output will be: (212)504-7945

    Debug.Print FormatUSPhoneNumber("212-504-7945")
    ' the output will be: (212)504-7945
Workspace Whiz 2.0 [Add-in, Visual C++, Visual Studio, Product, Owned By BDP, Development] Purchased 28-Jun-2000, $10US
Requirements

Visual Basic 4.0 or higher.  Will probably work in VB3 too.

This issue presents one method to format a United States phone
number.  It will also work in locations where the phone numbers
are 7 digits or 10 digits long.  It can easily be modified to fit
your local phone number requirements.

basPhoneNumbers

This module shows a good model for formatting phone numbers (or
other numeric values).  It will format a 7 digit or 10 digit phone
number in the format 999-9999 or (999)999-9999.


Functions

Public Function FormatUSPhoneNumber(ByVal sPhone As String) As String

Call this routine with a phone number as the specified parameter.
It will raise an error if the phone number is not 7 or 10 digits
after all non-numerics are removed.  It will return a string in
the format of 999-9999 or (999)999-9999.  If you want to modify
the formatted output update the Format$ line in the routine.


Sample Usage

This sample shows how to use the FormatUSPhoneNumber function.



    Debug.Print FormatUSPhoneNumber("2125047945")
    ' the output will be: (212)504-7945

    Debug.Print FormatUSPhoneNumber("212-504-7945")
    ' the output will be: (212)504-7945
Window Tabs 2.5 [Add-in, Visual C++, Visual Studio, Product, Owned By BDP, Development] Purchased 28-Jun-2000, $7.2US
Requirements

Visual Basic 4.0 or higher.  Will probably work in VB3 too.

This issue presents one method to format a United States phone
number.  It will also work in locations where the phone numbers
are 7 digits or 10 digits long.  It can easily be modified to fit
your local phone number requirements.

basPhoneNumbers

This module shows a good model for formatting phone numbers (or
other numeric values).  It will format a 7 digit or 10 digit phone
number in the format 999-9999 or (999)999-9999.


Functions

Public Function FormatUSPhoneNumber(ByVal sPhone As String) As String

Call this routine with a phone number as the specified parameter.
It will raise an error if the phone number is not 7 or 10 digits
after all non-numerics are removed.  It will return a string in
the format of 999-9999 or (999)999-9999.  If you want to modify
the formatted output update the Format$ line in the routine.


Sample Usage

This sample shows how to use the FormatUSPhoneNumber function.



    Debug.Print FormatUSPhoneNumber("2125047945")
    ' the output will be: (212)504-7945

    Debug.Print FormatUSPhoneNumber("212-504-7945")
    ' the output will be: (212)504-7945
Visual Assist 3.0.3.1102 [Add-in, C++, Visual C++, Visual Studio, Product, Owned By BDP, Development] Purchased 28-Oct-1999, $99US
Requirements

Visual Basic 4.0 or higher.  Will probably work in VB3 too.

This issue presents one method to format a United States phone
number.  It will also work in locations where the phone numbers
are 7 digits or 10 digits long.  It can easily be modified to fit
your local phone number requirements.

basPhoneNumbers

This module shows a good model for formatting phone numbers (or
other numeric values).  It will format a 7 digit or 10 digit phone
number in the format 999-9999 or (999)999-9999.


Functions

Public Function FormatUSPhoneNumber(ByVal sPhone As String) As String

Call this routine with a phone number as the specified parameter.
It will raise an error if the phone number is not 7 or 10 digits
after all non-numerics are removed.  It will return a string in
the format of 999-9999 or (999)999-9999.  If you want to modify
the formatted output update the Format$ line in the routine.


Sample Usage

This sample shows how to use the FormatUSPhoneNumber function.



    Debug.Print FormatUSPhoneNumber("2125047945")
    ' the output will be: (212)504-7945

    Debug.Print FormatUSPhoneNumber("212-504-7945")
    ' the output will be: (212)504-7945
High-Tech Heritic [Computer, Book] Purchased 19-Oct-2000, $17.99

A Visit to Redmond, Part 5 [Interview, Article, Visual C++] www.codeproject.com 24-Oct-2000 by Chris Maunder
	A Visit to Redmond, Part 5
	 
	Chris Maunder
	 
	For those who are curious as to what a hastily scheduled trip to 
Redmond is like.
	
User-Level Spin Locks [Thread, Process, Inteprocess Communication, Synchronization, Article, Visual C++] www.codeproject.com 24-Oct-2000 by Gert Boddaert
	User-Level Spin Locks
	 
	Gert Boddaert
	 
	An introduction to using spin locks for Synchronisation
	
Coding for the World [Article, Delphi] delphi.about.com 24-Oct-2000
	24-Oct-2000
	 
	24-Oct-2000
	 
	Coding for the World
	 
	Have you considered writing Delphi applications for the whole World? 
The Integrated Translation Environment is what you need to quickly 
internationalize or localize your applications for new languages and cultures.
	
AutoContents.dsm .... Inserts a list of all functions found in a file [Article, DSM, IDE, Macro, Visual C++, Visual Studio, VC++ Add-in, Visual Studio Macro] www.codeguru.com 23-Oct-2000

Navigate your TRACE outputs [Debugging, TRACE, Article, Visual C++] www.codeproject.com 23-Oct-2000 by Wolfgang Busch
	Navigate your TRACE outputs
	 
	Wolfgang Busch
	 
	Extended TRACE macros with easy source navigation
	
Copying Files With Explorer [Article, Visual Basic] visualbasic.about.com 23-Oct-2000
	23-Oct-2000
	 
	23-Oct-2000
	  
	Copying Files With Explorer
	 
	Do you need to copy files from one location to another direct from 
Visual Basic? If so, take advantage of the built in Windows move/copy dialog 
boxes! Your VB Guide shows you how.
	
Understanding COM Apartments, Part II [COM, Article, Visual C++] www.codeguru.com 23-Oct-2000 by Jeff Prosise
	Understanding COM Apartments, Part II
	 
	Jeff Prosise
	 
	Jeff illustrates why a complete understanding of COM apartments is so 
important to developing better and more efficient COM applications.
	
C# XML Directory Lister [C#, XML, Article, Visual C++] www.codeproject.com 22-Oct-2000 by Greg Hack
	C# XML Directory Lister
	 
	Greg Hack
	 
	Generates a directory list as XML
	
SQLLog Wizard [Wizard, SQL Script, XML, Database, Article, Visual Basic] www.vb2themax.com 21-Oct-2000 by Ron Puckett
	SQLLog Wizard
	  
	21-Oct-2000
	 
	21-Oct-2000
	 
	Ron Puckett
	 
	The SQLLog Wizard is used to specify which tables are to be audited. 
The output of the wizard is a SQL Script that that can be run in the Query 
Analyzer. This script will generate the triggers required to implement the 
audit log (stored in XML format in the Database). The SQLLogViewer is used to 
display the audit log. Log records can be filtered based on a number of 
criteria including transaction dates, table name, transaction type, 
application, machine that made the changes, or by the user who made the change. 
Goto http://www.rlpsoftware.com for more information and to register for 
receiving info on future updates.
	
Create a modeless dialog as topmost window [Article, Visual C++] www.mindcracker.com 21-Oct-2000 by Bulent Ozkir
	Create a modeless dialog as topmost window
	 
	Bulent Ozkir
	 
	21-Oct-2000
	 
	21-Oct-2000
	
A Visit to Redmond, Part 4 [Interview, Article, Visual C++] www.codeproject.com 20-Oct-2000 by Chris Maunder
	A Visit to Redmond, Part 4
	 
	Chris Maunder
	 
	For those who are curious as to what a hastily scheduled trip to 
Redmond is like.
	
Create Dynamic Banners By Using JavaScript [JavaScript, Article, Visual C++] www.codeproject.com 20-Oct-2000 by Nongjian Zhou
	Create Dynamic Banners By Using JavaScript
	 
	Nongjian Zhou
	 
	This article show how to use JavaScript to dynamically display banners, 
very usful!
	
The Art of Estimating, Part II [Windows Programming, Article, Visual C++] www.codeguru.com 20-Oct-2000 by Christopher Duncan
	The Art of Estimating, Part II
	 
	Christopher Duncan
	 
	Christopher completes his two part series on the art of estimating by 
getting into the details of exactly what it takes to deliver detailed, timely 
and accurate estimates.
	
How to change font's type and size of a control [Article, Visual C++] www.mindcracker.com 20-Oct-2000 by Mahesh Chand
	How to change font's type and size of a control
	 
	Mahesh Chand
	 
	20-Oct-2000
	 
	20-Oct-2000
	
How to print contents of an edit box [Article, Visual C++] www.mindcracker.com 20-Oct-2000 by Mahesh Chand
	How to print contents of an edit box
	 
	Mahesh Chand
	 
	20-Oct-2000
	 
	20-Oct-2000
	
Color Picker Combo Box [Combobox, List Control, Color, Article, Visual C++] www.codeproject.com 19-Oct-2000 by James R Twine, Mark Jackson
	Color Picker Combo Box
	 
	James R Twine and Mark Jackson
	 
	A combobox derived class that provides a simple color picker
	
Implementing an autocompleting Combobox [Combobox, List Control, Article, Visual C++] www.codeproject.com 19-Oct-2000 by Chris Maunder
	Implementing an autocompleting Combobox
	 
	Chris Maunder
	 
	A combobox that autocompletes as you type
	
Callback based, Quicksort enabled CArray Template class [C++, MFC, STL, Callback, CArray Class, Template, Article, Visual C++] www.codeproject.com 19-Oct-2000 by Attila Hajdrik
	Callback based, Quicksort enabled CArray Template class
	 
	Attila Hajdrik
	 
	This article presents a callback based, QuickSort enabled CArray 
template class
	
A Visit to Redmond, Part 3 [Interview, Article, Visual C++] www.codeproject.com 19-Oct-2000 by Chris Maunder
	A Visit to Redmond, Part 3
	 
	Chris Maunder
	 
	For those who are curious as to what a hastily scheduled trip to 
Redmond is like.
	
Minimizing windows to the System Tray [Shell Programming, System Tray, Article, Visual C++] www.codeproject.com 19-Oct-2000 by Matthew Ellis
	Minimizing windows to the System Tray
	 
	Matthew Ellis
	 
	A set of routines that show how easy it is to minimise your windows to 
the system tray
	
Create Templets by Using JavaScript [Tip, Article, Visual C++] www.codeproject.com 19-Oct-2000 by Nongjian Zhou
	Create Templets by Using JavaScript
	 
	Nongjian Zhou
	 
	There are many ways to create a web page templete. Using JavaScript is 
one of easiest ways
	
A better front end to WinDiff [Tool, WinDiff, Article, Visual C++] www.codeproject.com 19-Oct-2000 by Chris Maunder
	A better front end to WinDiff
	 
	Chris Maunder
	 
	A GUI front end to a handy utility
	
A class on exception handling [Article, Visual C++] www.mindcracker.com 19-Oct-2000 by Bulent Ozkir
	A class on exception handling
	 
	Bulent Ozkir
	 
	19-Oct-2000
	 
	19-Oct-2000
	
CFileDialog Tutorial [Article, Visual C++] www.mindcracker.com 19-Oct-2000 by Mahesh Chand
	CFileDialog Tutorial
	 : Step by step 
	A tutorial which tells you how to use CFileDialog step by step.
	 
	Mahesh Chand
	 
	19-Oct-2000
	 
	19-Oct-2000
	
ASP Guestbook Application [Active Server Pages, ASP, Access, Database, Article, Visual C++] www.codeproject.com 18-Oct-2000 by Uwe Keim
	ASP Guestbook Application
	 
	Uwe Keim
	 
	A simple guestbook application using ASP and an Access Database
	
Creating a Control with the .NET SDK using C# [C#, Control, .NET, Article, Visual C++] www.codeproject.com 18-Oct-2000 by Norm Almond
	Creating a Control with the .NET SDK using C#
	 
	Norm Almond
	 
	A quickstart guide to creating your first control in C#
	
QuickWin: Turn a console application into a Windows program [Dialog, Windows Programming, stdin, stdout, stderr, Article, Visual C++] www.codeproject.com 18-Oct-2000 by Lanz Jean-Claude
	QuickWin: Turn a console application into a Windows program
	 
	Lanz Jean-Claude
	 
	Redirect stdin, stdout and stderr into a window
	
A Visit to Redmond, Part 2 [Interview, Article, Visual C++] www.codeproject.com 18-Oct-2000 by Chris Maunder
	A Visit to Redmond, Part 2
	 
	Chris Maunder
	 
	For those who are curious as to what a hastily scheduled trip to 
Redmond is like.
	
ProcessStudio: Monitor Tasks visually [Tool, Monitor, Task, Article, Visual C++] www.codeproject.com 18-Oct-2000 by Norm Almond
	ProcessStudio: Monitor Tasks visually
	 
	Norm Almond
	 
	An application to monitor tasks visually
	
HTML For Beginners [WinHelp, HTML Help, Help, Article, Visual C++] www.codeproject.com 18-Oct-2000 by Nongjian Zhou
	HTML For Beginners
	 
	Nongjian Zhou
	 
	A tutorial for those who want to learn HTML in an easy way.
	
Adding behaviour to classes [Windows Programming, Article, Visual C++] www.codeguru.com 18-Oct-2000 by Roger Onslow
	Adding behaviour to classes
	 
	Roger Onslow
	 
	This issue, Roger looks at adding behaviour to classes and examines 
vbarious techniques. Along the way he encounters a strange compiler bug and has 
to work around it. Funny things certainly happen on the way to a deadline!
	
Drawing Image RGB Color Distribution Using OpenGL [OpenGL, Article, Visual C++] www.codeguru.com 18-Oct-2000 by Pierre Alliez, Magali Mazière
	Drawing Image RGB Color Distribution Using OpenGL
	 
	Pierre Alliez and Magali Mazière
	 
	Incredible set of methods for such tasks as antialiasing, mouse support 
for rotating images, storing and loading images from resources
	
How to create a dialog (using: Visual C++ 6.0) [Class Wizard, Dialog, Resource Editor, Visual C++, Tip] www.pinnaclepublishing.com 17-Oct-2000
To create dialogs, just follow the steps below, and 
voila! You'll have a new dialog in your program, all set 
and ready to go:

1. Design your dialog box using the Resource Editor.

2. While holding down the Ctrl key, double-click on a 
blank area of the dialog box. ClassWizard will pop up, 
asking if you want to make a new class for the dialog 
box. Click OK.

3. Fill out the next dialog box from ClassWizard, and 
then click OK twice---once to create your class, and then 
again to save and close ClassWizard.

4. Next, in your message-handler, write:

void CMyApp::OnMyCommand()
{
       CMyDialog dlg;
       
       if (dlg.DoModal() == IDOK)
       {
            // The user pressed OK. Gather dialog 
            // settings.
       }

       // If we're here, then the user clicked Cancel.
}
QuickWin .... Spawn a Win32 console application redirecting his stdin, stdout and stderr handles to a window [Console, Visual C++, EXE] www.codeguru.com 17-Oct-2000 by Jean-Claude Lanz
QuickWin is a window application that spawn a Win32 console application 
redirecting his stdin, stdout and stderr handles to a window. The console 
application is hidden and all I/O operations are made through QuickWin
A Visit to Redmond, Part 1 [Interview, Article, Visual C++] www.codeproject.com 17-Oct-2000 by Chris Maunder
	A Visit to Redmond, Part 1
	 
	Chris Maunder
	 
	For those who are curious as to what a hastily scheduled trip to 
Redmond is like.
	
CSS For Beginners [Control, CSS, HTML, File, Article, Visual C++] www.codeproject.com 17-Oct-2000 by Nongjian Zhou
	CSS For Beginners
	 
	Nongjian Zhou
	 
	Add CSS to your HTML Files.
	
Use Regular Expression in your C++ program [String, Regular Expression, Article, Visual C++] www.codeproject.com 17-Oct-2000 by Sherwood Hu
	Use Regular Expression in your C++ program
	 
	Sherwood Hu
	 
	how to use the Microsoft regular expression object in your C++ program
	
CNetworkTreeCtrl [Tree Control, CWaitingTreeCtrl Class, Network, Article, Visual C++] www.codeproject.com 17-Oct-2000 by Paolo Messina
	CNetworkTreeCtrl
	 
	Paolo Messina
	 
	A CWaitingTreeCtrl-derived class to display Network resources
	
CProgressFX and CHourglassFX [Tree Control, CWaitingTreeCtrl Class, Article, Visual C++] www.codeproject.com 17-Oct-2000 by Paolo Messina
	CProgressFX and CHourglassFX
	 
	Paolo Messina
	 
	Two animation provider classes to add animation effects to any 
CWaitingTreeCtrl-derived class
	
CShellTreeCtrl [Tree Control, CWaitingTreeCtrl Class, Shell, Article, Visual C++] www.codeproject.com 17-Oct-2000 by Paolo Messina
	CShellTreeCtrl
	 
	Paolo Messina
	 
	A CWaitingTreeCtrl-derived class to display Shell's resources
	
CWaitingTreeCtrl [Tree Control, CWaitingTreeCtrl Class, CTreeCtrl Class, Article, Visual C++] www.codeproject.com 17-Oct-2000 by Paolo Messina
	CWaitingTreeCtrl
	 
	Paolo Messina
	 
	A CTreeCtrl derived class that populates the branches of a tree only 
when necessary, with optional visual effects.
	
WTL bugs [Windows Template Library, WTL, ATL, Article, Visual C++] www.codeproject.com 17-Oct-2000 by Paul Bludov
	WTL bugs
	 
	Paul Bludov
	 
	Known WTL & ATL bugs
	
QuickWin: Console Application Into a Window [Console, Article, Visual C++] www.codeguru.com 17-Oct-2000 by Jean-Claude Lanz
	QuickWin: Console Application Into a Window
	 
	Jean-Claude Lanz
	 
	Extremely useful tool that enables you to redirect the output of 
applications to a window. Also includes CRedirect class for inclusion in your 
own applications.
	
RAS Detection Routine [Network, Update, Article, Visual C++] www.codeguru.com 17-Oct-2000 by Jeroen-Bart Engelen
	RAS Detection Routine
	 
	Jeroen-Bart Engelen
	 
	Updated to recognize RAS installed on Windows ME
	
Examine Information on Windows NT System Level Primitives [System, Article, Visual C++] www.codeguru.com 17-Oct-2000 by Zoltan Csizmadia
	Examine Information on Windows NT System Level Primitives
	 
	Zoltan Csizmadia
	 
	Two low level utilities to examine Windows NT information such as 
processes, threads, windows, modules and objects.
	
Graphical Combos [Article, Delphi] delphi.about.com 17-Oct-2000
	17-Oct-2000
	 
	17-Oct-2000
	 
	Graphical Combos
	 
	Creating owner drawn Combo Boxes in Delphi. See how to code a graphical 
drop-down list - a combo box of colors; and a true true-type font picker.
	
Owner Drawing - an excellent way to improve the look and feel of your Delphi application by changing the control's standard appearance (using: Delphi 5.0) [Owner-drawn, Delphi, Tip] delphi.about.com 16-Oct-2000
Owner Drawing - an excellent way to improve the look and feel of your Delphi 
application by changing the control's standard appearance. Creating a graphical 
(popup) menu. 

Dateline: 10/03/2000 

I guess we all like the idea of graphics displayed in the "Start" menu of 
Windows XX. Have you ever wondered is it possible to do custom control drawing 
with Delphi? 

   Owner Drawing

Often it would be nice to modify the behavior or appearance of Delphi's many 
controls (visual components). When we want to draw a decorative piece of art on 
a screen (component), Delphi allows us to "create" Owner Drawn controls which 
let us customize intrinsic controls to look however we want. 

In Windows, the system is usually responsible for painting menu items, list 
boxes, edit boxes, buttons and similar elements of your application GUI. 
For some controls the system allows an application to create an owner-drawn 
control, let's say a PopUp Menu, to take responsibility for painting menu 
items. 

When we set a control's OwnerDraw property to True, Windows no longer draws the 
control on the screen. This feature permits an application to alter the 
appearance of a control. Windows generates events for each visible item in the 
control, and your application handles the events to draw the items. The parent 
window (a form) of an owner-drawn control receives WM_DRAWITEM messages when a 
portion of the control needs to be painted. When the message is received it is 
up to the parent to draw the control however it wants. 

   OwnerDraw PopUp Menu

Delphi makes the development of graphical menus (items) quite simple by 
providing a way to use an ImageList component to add glyphs to menu items. 
However, if we want even more control of the graphical representation of menu 
items we'll have to deal with owner drawing techniques. 

Let's see how to create an Owner-Drawn PopuUp Menu, that behaves like normal 
menu but has customized appearance by modifying how it is drawn on screen. 

Typically ... (cont.)
Determine if your hard disk is fast enough (using: Windows NT 4.0) [Disk, Performance Monitoring, Windows NT, Tip] www.microsoft.com 16-Oct-2000
DETERMINING IF YOUR HARD DISK IS FAST ENOUGH
Windows NT's Performance Monitor Counter lets you know if your hard drive is 
too slow. Before you can run the disk counter, you must activate the physical 
and logical disk counters. To do this, you must be logged on as a member of the 
Administrators group.
At the command prompt, type diskperf to view a Help document about how to turn 
diskperf on and off. (Type diskperf -y to set the system to start disk 
performance counters.) This will also show you whether the disk performance 
counters have already been activated. Restart the computer to activate the disk 
performance counters.

1. Open Performance Monitor (Start | Programs | Administrative Tools | 
Performance Monitor).
2. Choose Physical Disk from the Object drop-down menu.
3. Choose Avg Disk Bytes/Transfer from the Counter.

Let this counter run for several days. A value greater than 20 KB indicates 
that the disk drive is generally performing well; low values result if an 
application is accessing a disk inefficiently, and you should consider 
replacing it with a faster drive.
Created elliptical or rounded forms (using: Visual Basic 6.0) [CreateEllipticRgn(), CreatePolygonRgn(), CreateRoundRectRgn(), Form, GetWindowRect(), SetWindowRgn(), Visual Basic, Tip] www.vb2themax.com 16-Oct-2000
CREATE ELLIPTICAL OR ROUNDED FORMS

Private Type POINTAPI
    X As Long
    Y As Long
End Type
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

' Region API functions
Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal 
Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, 
ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Private Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, 
ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal 
Y3 As Long) As Long

Private Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect 
As RECT) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal 
hRgn As Long, ByVal bRedraw As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As 
Long

' modify the shape of a window
'
' This routine supports three values for SHAPE
'    0 = circle/ellipse, 1=rounded rect, 2=rhomb
'
' Example:    
'    Private Sub Form_Load()
'       SetWindowShape Me.hWnd, 1
'    End Sub
'
' NOTES: You get best effects using borderless forms
'        Remember to provide alternative commands for
'        closing and moving the form

Sub SetWindowShape(ByVal hWnd As Long, ByVal Shape As Long)
    Dim lpRect As RECT
    Dim wi As Long, he As Long
    Dim hRgn As Long
    
    ' get the bounding rectangle's size
    GetWindowRect hWnd, lpRect
    wi = lpRect.Right - lpRect.Left
    he = lpRect.Bottom - lpRect.Top
    
    ' create a region
    Select Case Shape
        Case 0          ' circle/ellipse
            hRgn = CreateEllipticRgn(0, 0, wi, he)
        Case 1          ' rounded rectangle
            hRgn = CreateRoundRectRgn(0, 0, wi, he, 20, 20)
        Case 2          ' rhomb
            Dim lpPoints(3) As POINTAPI
            lpPoints(0).X = wi \ 2
            ... (cont.)
C++ Interview Questions [Article, Visual C++] cplus.about.com 16-Oct-2000
	16-Oct-2000
	 
	16-Oct-2000
	  
	C++ Interview Questions
	 
	Be prepared and land that job!
	
Custom Folders with Active Desktop Templates [Shell Programming, Article, Visual C++] www.codeguru.com 16-Oct-2000 by Dino Esposito
	Custom Folders with Active Desktop Templates
	 
	Dino Esposito
	 
	Illustrates how to modify the way in which Explorer displays the 
content of a folder.
	
Using the Document/View Architecture with a DLL [Document/View, Update, Article, Visual C++] www.codeguru.com 16-Oct-2000 by Roger Allen
	Using the Document/View Architecture with a DLL
	 
	Roger Allen
	 
	Illustrates with demo code how to use Documents and Views that have 
been exported from a DLL
	
Pie Progress Control [Custom Control, Article, Visual C++] www.codeguru.com 16-Oct-2000 by Mukesh Gupta
	Pie Progress Control
	 
	Mukesh Gupta
	 
	ActiveX control to show the progress control in the format of a pie
	
CmcCombo Class [Article, Visual C++] www.mindcracker.com 16-Oct-2000 by Mahesh Chand
	CmcCombo Class
	 
	A class provides functionality of edit and list boxes with adding, 
deleting items and more ...
	 
	Mahesh Chand
	 
	16-Oct-2000
	 
	16-Oct-2000
	
Subclass List and Edit boxes in a Combo Box [Article, Visual C++] www.mindcracker.com 16-Oct-2000 by Mahesh Chand
	Subclass List and Edit boxes in a Combo Box
	 
	This article explains how to subclass edit and list boxes in a combo 
box. Ref: MSDN.
	 
	Mahesh Chand
	 
	16-Oct-2000
	 
	16-Oct-2000
	
How to change mouse cursor? [Article, Visual C++] www.mindcracker.com 16-Oct-2000 by Mahesh Chand
	How to change mouse cursor?
	 
	Mahesh Chand
	 
	16-Oct-2000
	 
	16-Oct-2000
	
How to restrict your application to one instance only? [Article, Visual C++] www.mindcracker.com 16-Oct-2000 by Mahesh Chand
	How to restrict your application to one instance only?
	 
	Mahesh Chand
	 
	16-Oct-2000
	 
	16-Oct-2000
	
How to add tooltips to a dialog box? Sample code attached [Article, Visual C++] www.mindcracker.com 16-Oct-2000 by Mahesh Chand
	How to add tooltips to a dialog box? Sample code attached
	. 
	Mahesh Chand
	 
	16-Oct-2000
	 
	16-Oct-2000
	
How to create a list box with check boxes? [Article, Visual C++] www.mindcracker.com 16-Oct-2000 by Mahesh Chand
	How to create a list box with check boxes?
	 
	Mahesh Chand
	 
	16-Oct-2000
	 
	16-Oct-2000
	
Donut, a WTL sample: Hosting WebBrowser Control [Windows Template Library, WTL, Control, Article, Visual C++] www.codeproject.com 15-Oct-2000
	Donut, a WTL sample: Hosting WebBrowser Control
	 
	-N/A
	 
	MDI and Tab WebBrowser
	
CGBitArray : A Packed Array of Flags [C++, MFC, Article, Visual C++] www.codeguru.com 15-Oct-2000 by Gary Whitehead
	CGBitArray : A Packed Array of Flags
	 
	Gary Whitehead
	 
	Class that stores huge arrays of flags in as efficient a manner as 
possible (packed into array of BYTEs)
	
Improved Seed/srand [C++, MFC, Article, Visual C++] www.codeguru.com 15-Oct-2000 by John Gryme
	Improved Seed/srand
	 
	John Gryme
	 
	Better performing version of seeding for srand function
	
Find and Change Properties Add-in [Add-in, Article, Visual Basic] www.vb2themax.com 14-Oct-2000 by Dean J Giovanelli
	Find and Change Properties Add-in
	  
	14-Oct-2000
	 
	14-Oct-2000
	 
	Dean J Giovanelli
	 
	This Add-in lets developers quickly find & replace properties in their 
active VB6 project without exiting the VBIDE or editing any source code and 
with minimal usage of the vb properties window. The results are displayed in a 
grid that can be sorted multiple ways by column and can also be exported to a 
text file or HTML. Options include Find Whole Word Only, Match Case & more. 
Instructions/Help and a setup.exe program are provided. This Add-in is the 
answer to that tedious task of having to look through all the files and 
associated controls just to find a certain value or to make sure all similar 
controls have identical values where needed. You can double-click a row to 
select that control in the VB Properties window and can easily change multiple 
properties with a single button press.
	 
	Updated: 11/14/00
	 
	Updated Version: The new version includes a bunch of features that 
users have requested, such as: (1) the ability to export data into Access 97 
tables & Excel 97 spreadsheets, (2) the VB common Font, Color, and Open File 
dialog boxes used for changing these Properties, (3) The Pattern-Matching 
option, (4) the ability to edit and change properties that are longer than 255 
characters in a better way than the VB Properties window does, (5) an improved 
UI, and more.
	
CHoverButton: A simple hoverbutton with one Bitmap and a tooltip [Button Control, Bitmap, _TrackMouseEvent, Article, Visual C++] www.codeproject.com 13-Oct-2000 by Niek Albers

CList Iterator [C++, MFC, STL, CList Class, Article, Visual C++] www.codeproject.com 13-Oct-2000 by Craig Henderson
	CList Iterator
	 
	Craig Henderson
	 
	A simple iteration class for MFC's CList linked list
	
Generic Lookaside List Class [C++, MFC, STL, COM, Article, Visual C++] www.codeproject.com 13-Oct-2000 by Jim Johnson
	Generic Lookaside List Class
	 
	Jim Johnson
	 
	A simple way to keep items such as COM instances 'warm' and available 
for reuse
	
An Advanced Preview within Document/View architecture [Document/View, Print Preview, MFC, Article, Visual C++] www.codeproject.com 13-Oct-2000 by Yasuhiko Yoshimura
	An Advanced Preview within Document/View architecture
	 
	Yasuhiko Yoshimura
	 
	A simple class that helps provide faster Print Preview within MFC 
Document/View applications
	
Persistent Frames [Document/View, MFC, SDI, MDI, Article, Visual C++] www.codeproject.com 13-Oct-2000 by Stefan Chekanov
	Persistent Frames
	 
	Stefan Chekanov
	 
	A collection of classes that allows MFC SDI and MDI applications to 
remember the positions and sizes of their main frame and child frame windows.
	
Agent Ransack: File searching utility that supports Regular Expressions [Tool, File, Regular Expression, GREP, Article, Visual C++] www.codeproject.com 13-Oct-2000 by Dave Vest
	Agent Ransack: File searching utility that supports Regular Expressions
	 
	Dave Vest
	 
	File, searching, regular expression, GREP, tool, utility
	
ATL Windows, Part I [ATL, WTL, Article, Visual C++] www.codeguru.com 12-Oct-2000 by Andrew Whitechapel
	ATL Windows, Part I
	 
	Andrew Whitechapel
	 
	Think ATL is only for components? In Andrew's first installment of his 
new ATL/WTL column, he presents a full tutorial (including two demos) on using 
the ATL windowing classes to write full-fledged Windows applications.
	
Project Line Counter Add-In v1.11 [Macro, Update, Article, Visual C++] www.codeguru.com 12-Oct-2000 by Oz Solomonovich
	Project Line Counter Add-In v1.11
	 
	Oz Solomonovich
	 
	Latest version of very useful add-in that enables you to quickly 
ascertain source code statistics for your entire project
	
Dynamically Adding and Removing Menu Items [Menu, Article, Visual C++] www.codeguru.com 12-Oct-2000 by Prasad Daflapurkar
	Dynamically Adding and Removing Menu Items
	 
	Prasad Daflapurkar
	 
	Function and example code illustrating how to dynamically add or remove 
menu items
	
How to add Context-Help button (?) to title bar of a Dialog [Article, Visual C++] www.mindcracker.com 12-Oct-2000 by Mahesh Chand
	How to add Context-Help button (?) to title bar of a Dialog
	 
	Mahesh Chand
	 
	12-Oct-2000
	 
	12-Oct-2000
	
Project Line Counter Add-In [Article, Visual C++] www.earthweb.com 12-Oct-2000 by Oz Solomonovich
	Project Line Counter Add-In
	 
	Oz Solomonovich
	 
	12-Oct-2000
	 
	12-Oct-2000
	 
	The Project Line Counter add-in reports statistics about files in your 
Visual C++ projects. Line Counter was created in order to demonstrate various 
programming tools and techniques.
	
Dialog Resource to C# Form Converter [Macro, Article, Visual C++] www.codeguru.com 11-Oct-2000 by Nev Delap
	Dialog Resource to C# Form Converter
	 
	Nev Delap
	 
	Visual Studio Add-In that converts dialog template resources to C#
	
Radial Control [Control, Article, Visual C++] www.codeguru.com 11-Oct-2000 by David M Flores
	Radial Control
	 
	David M Flores
	 
	Very cool control that can be used to simulate hardware dial controls 
(e.g., volume controls, channel selectors, etc.)
	
Zip and Unzip the MFC Way [C++, MFC, Windows Programming, Update, Article, Visual C++] www.codeguru.com 11-Oct-2000 by Tadeusz Dracz
	Zip and Unzip the MFC Way
	 
	Tadeusz Dracz
	 
	MFC-based library that enables the creation, modification and 
extraction of PKZIP and WinZip archives
	
Zip and Unzip the MFC Way [Article, Visual C++] www.earthweb.com 11-Oct-2000 by Tadeusz Dracz
	Zip and Unzip the MFC Way
	 
	Tadeusz Dracz
	 
	11-Oct-2000
	 
	11-Oct-2000
	 
	Very nice set of C++ MFC classes that allows for zipping/unzipping of 
files
	
Track the row and column position of the cursor (actually, caret) within a TextBox control (using: Visual Basic 6.0) [SendMessage(), Textbox Control, Visual Basic, Tip] www.pinnaclepublishing.com 10-Oct-2000
Have you ever needed to track the row and column position 
of the cursor (actually, caret) within a TextBox control? 
The following, originally written for a normal TextBox, 
will also work with a RichTextBox if the references are 
changed appropriately. Paste this code into your Form's 
code window:

Private Declare Function SendMessageLong Lib _
           "user32" Alias "SendMessageA" _
           (ByVal hwnd As Long, _
            ByVal wMsg As Long, _
            ByVal wParam As Long, _
            ByVal lParam As Long) As Long

Function CursorLine(TextBoxIn As TextBox) As Long
  CursorLine = SendMessageLong(TextBoxIn.hwnd, _
  &HC9, -1&, 0&) + 1
End Function

Function CursorColumn(TextBoxIn As TextBox) As Integer
  CursorColumn = TextBoxIn.SelStart - _
  SendMessageLong(TextBoxIn.hwnd, &HBB, -1, 0)
End Function

To see it work, put a Label on your form, put a large 
TextBox (with MultiLine set to True and ScrollBars set to 
2-Vertical) on the form, load it up with a fair amount of 
text, and put the following in the Click event for the 
TextBox:

Label1 = "Row: " & CStr(CursorLine(Text1)) & vbNewLine _
  & "Column: " & CStr(CursorColumn(Text1))

Run the project and Click away---inside the TextBox, of 
course.
Encrypt a string with a password (using: Visual Basic 6.0) [Encryption, Visual Basic, Tip] www.vb2themax.com 10-Oct-2000
ENCRYPT A STRING WITH A PASSWORD

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As 
Any, source As Any, ByVal bytes As Long)

' encrypt a string using a password
'
' you must reapply the same function (and same password) on
' the encrypted string to obtain the original, non-encrypted string
'
' you get better, more secure results if you use a long password
' (e.g. 16 chars or longer). This routine works well only with ANSI strings.

Function EncryptString(ByVal Text As String, ByVal Password As String) As String
    Dim passLen As Long
    Dim i As Long
    Dim passChr As Integer
    Dim passNdx As Long
    
    passLen = Len(Password)
    ' null passwords are invalid
    If passLen = 0 Then Err.Raise 5
    
    ' move password chars into an array of Integers to speed up code
    ReDim passChars(0 To passLen - 1) As Integer
    CopyMemory passChars(0), ByVal StrPtr(Password), passLen * 2
    
    ' this simple algorithm XORs each character of the string
    ' with a character of the password, but also modifies the
    ' password while it goes, to hide obvious patterns in the
    ' result string
    For i = 1 To Len(Text)
        ' get the next char in the password
        passChr = passChars(passNdx)
        ' encrypt one character in the string
        Mid$(Text, i, 1) = Chr$(Asc(Mid$(Text, i, 1)) Xor passChr)
        ' modify the character in the password (avoid overflow)
        passChars(passNdx) = (passChr + 17) And 255
        ' prepare to use next char in the password 
        passNdx = (passNdx + 1) Mod passLen
    Next

    EncryptString = Text
    
End Sub
On The Fly Table Creator [Control, Table, Article, Visual C++] www.codeproject.com 10-Oct-2000 by Rajiv Ramachandran
	On The Fly Table Creator
	 
	Rajiv Ramachandran
	 
	An MS-Word like drop down window for creating tables
	
Getting Started with SoftICE [Debugging, Article, Visual C++] www.codeguru.com 10-Oct-2000 by John Robbins
	Getting Started with SoftICE
	 
	John Robbins
	 
	Let John Robbins show you how he uses his award-winning low-level 
system debugging tool, SoftICE
	
Active Comments Add-In [Macro, Article, Visual C++] www.codeguru.com 10-Oct-2000 by Andrei Levin
	Active Comments Add-In
	 
	Andrei Levin
	 
	Enables you to point your code to URLs, MSDN links and even audio 
clips!!
	
FileObjectInfo, Digging into the Windows NT Internals [File, Folder, Article, Visual C++] www.codeguru.com 10-Oct-2000 by Holger Erne
	FileObjectInfo, Digging into the Windows NT Internals
	 
	Holger Erne
	 
	Tool (NT native API source code!!) that lets you take a look at Windows 
NT's file objects
	
On the Fly Table Creater [Article, Visual C++] www.mindcracker.com 10-Oct-2000 by Rajiv Ramachandran
	On the Fly Table Creater
	 
	A class which provides MS-Word like drop down window for creating 
tables.
	 
	Rajiv Ramachandran
	 
	10-Oct-2000
	 
	10-Oct-2000
	
Touch Me - I'm Untouchable [Article, Delphi] delphi.about.com 10-Oct-2000
	10-Oct-2000
	 
	10-Oct-2000
	 
	Touch Me - I'm Untouchable
	 
	Intercepting keyboard input for controls that cannot receive the input 
focus. Working with keyboard hooks from Delphi.
	
Operating System Integration - Part 1 (What version of Windows is running?, What mode is Windows running in?, Retrieving environment variables) (using: Visual Basic 6.0) [GetSystemMetrics(), GetVersionEx(), OSVERSIONINFO, GetEnvironmentVariable(), Visual Basic, Article] visualbasic.about.com 09-Oct-2000
Operating System Integration - Part 1

At some time in your programming career you will need to find out some 
technical information about the underlying operating system and platform - be 
it the speed of the processor, amount of memory installed or the version of 
Microsoft Windows running. In this article, I'll be uncovering the API calls 
that you can use to find out everything you ever wanted to know about the 
operating system software.

Software Functions

In the first article, let's take a look at some code snippets that will allow 
you to retrieve information about the underlying operating system software.

What version of Windows is running?

This handy code accesses the kernel32 API function "GetVersionEx" to retrieve 
the flavour of Windows, as well as the version of the operating system 
installed.

Declarations

Add the following code into the declarations section of a form:

Private Type OSVERSIONINFO
  dwOSVersionInfoSize As Long
  dwMajorVersion As Long
  dwMinorVersion As Long
  dwBuildNumber As Long
  dwPlatformId As Long
  szCSDVersion As String * 128
End Type

Private Declare Function GetVersionEx Lib "kernel32" Alias _
"GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long

Private Const VER_PLATFORM_WIN32_NT = 2
Private Const VER_PLATFORM_WIN32_WINDOWS = 1
Private Const VER_PLATFORM_WIN32s = 0

Function

Public Function GetWindowsVersion()

Dim infoStruct As OSVERSIONINFO
infoStruct.dwOSVersionInfoSize = Len(infoStruct)

GetVersionEx infoStruct

If infoStruct.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then
    GetWindowsVersion = "Windows 95/98"
Else
    GetWindowsVersion = "Windows NT"
End If

End Function

Usage

MsgBox "This system has " & GetWindowsVersion & " installed."

What mode is Windows running in?

Windows can run in three different modes: Normal, Safe and Safe with Network. 
If the system is performing properly, Windows should be running in Normal mode. 
However, if your software relies on the system worki ... (cont.)
Easy to use file finding Dialog [File, Folder, Dialog, Thread, Explorer, Article, Visual C++] www.codeproject.com 09-Oct-2000 by Smaller Animals Software Inc
	Easy to use file finding Dialog
	 
	Smaller Animals Software Inc
	 
	An easy to use multi-Threaded dialog class that will search disks for 
files. Similar to Explorer's "Find Files of Folders" tool.
	
Exporting a tree control to an Excel file [Tree Control, Article, Visual C++] www.codeproject.com 09-Oct-2000 by Sardaukar
	Exporting a tree control to an Excel file
	 
	Sardaukar
	 
	This article is a light sample showing how to iterate and export a tree 
control content to an Excel file.
	
C++ Operators [Article, Visual C++] cplus.about.com 09-Oct-2000
	09-Oct-2000
	 
	09-Oct-2000
	  
	C++ Operators
	 
	A tutorial on C++ operators
	
Tech Workshop - Realtime News [Article, Visual Basic] visualbasic.about.com 09-Oct-2000
	09-Oct-2000
	 
	09-Oct-2000
	  
	Tech Workshop - Realtime News
	 
	Your Visual Basic Guide takes you step-by-step through creating a 
real-time news ticker that can display headlines on your desktop... with help 
from the handy Microsoft Internet Transfer Control!
	
Operating System Integration - Part 1 [Article, Visual Basic] visualbasic.about.com 09-Oct-2000
	09-Oct-2000
	 
	09-Oct-2000
	  
	Operating System Integration - Part 1
	 
	Your Visual Basic Guide will be uncovering the API calls that you can 
use to find out everything you ever wanted to know about the operating system 
software - from Windows version to environment variables!
	
Variant Streaming Code [ATL, COM, Article, Visual C++] www.codeguru.com 09-Oct-2000 by Kenneth Kasajian
	Variant Streaming Code
	 
	Kenneth Kasajian
	 
	Several functions to read and write variants to streams and blobs
	
CHoverButton, Nice Hover Button with One Bitmap and Tooltip. [Button Control, Article, Visual C++] www.codeguru.com 09-Oct-2000 by Niek Albers
	CHoverButton, Nice Hover Button with One Bitmap and Tooltip.
	 
	Niek Albers
	 
	Extremely easy to use hovebutton class
	
Comment Function Macro for C/C++ [Macro, Article, Visual C++] www.codeguru.com 09-Oct-2000 by Yevgeniy Marchenko
	Comment Function Macro for C/C++
	 
	Yevgeniy Marchenko
	 
	One of the best, this macro solves several issues with other comment 
macros
	
MB ShellSpy Control [Control, PIDL, File, Folder, Article, Visual Basic] www.vb2themax.com 07-Oct-2000 by Marco Bellinaso
	MB ShellSpy Control
	  
	7-Oct-2000
	 
	7-Oct-2000
	 
	Marco Bellinaso
	 
	This control lets you know when the user performs any file system 
operation, such as file or folder creation, deletion, renaming, and so on. In 
additionm you can know when a network drive is added or removed, when a media 
support (e.g. a CD) is inserted or removed, when the user adds or removes a 
printer or an Internet connection, and when a file association is created or 
edited. You can decide to spy the entire system or only a specific drive or 
folder. For each event you know the new and the old path and PIDL of the 
File/Folder. A typical use of this control could be inside a file system log 
application.
	
cout for MFC/Windows/Non Console applications [Debugging, MFC, TRACE, Article, Visual C++] www.codeproject.com 06-Oct-2000 by Dhananjay Gune
	cout for MFC/Windows/Non Console applications
	 
	Dhananjay Gune
	 
	A TRACE macro which traces on a new console of the Windows' application.
	
Custom Draw Listview Controls, Part II [Windows Programming, Article, Visual C++] www.codeguru.com 06-Oct-2000 by Roger Onslow
	Custom Draw Listview Controls, Part II
	 
	Roger Onslow
	 
	Roger walks you through the creation of a class that eases the burden 
on the working class programmer when it comes to custom draw controls.
	
Function to Capture OpenGL Images to JPG (uses free IJL Library) [OpenGL, Article, Visual C++] www.codeguru.com 06-Oct-2000 by Jonathan de Halleux
	Function to Capture OpenGL Images to JPG (uses free IJL Library)
	 
	Jonathan de Halleux
	 
	Takes the name of an output file and the desired image quality (1-100) 
and spits out a .JPG image of your OpenGL screen
	
Creating controls such as edit box, button on your MDI application's main view window [Article, Visual C++] www.mindcracker.com 06-Oct-2000 by Mahesh Chand
	Creating controls such as edit box, button on your MDI application's 
main view window
	 
	Mahesh Chand
	 
	06-Oct-2000
	 
	06-Oct-2000
	
NT File Compression (using: Visual Basic 6.0) [Compression, File, NTFS, Windows NT, Tip, Visual Basic] www.devx.com 05-Oct-2000 by L J Johnson
NT File Compression
By L.J. Johnson

Ever wish you could compress or decompress files and directories on NT's NTFS 
volumes from code? Well, this month's 10-minute solution shows you how to do 
just that. As is often the case, the full code is included in this ZIP file. 

This project started because of a personal need. It looked like it would be 
fairly simple—just call CreateFile() to open (and get a handle to) a file or 
directory, and then use DeviceIoControl() to do the compression or 
decompression. However, one of the "constants" (FSCTL_SET_COMPRESSION) turned 
out not to be a constant at all, but a macro. 


Private Function GetCtlCode(ByVal xi_lngDeviceType As Long, _
   ByVal xi_lngFunction As Long, _
   ByVal xi_lngMethod As Long, _
   ByVal xi_lngAccess As Long) As Long
   GetCtlCode = _
      (CLng(xi_lngDeviceType) * (2 ^ 16)) Or _
      (CLng(xi_lngAccess) * (2 ^ 14)) Or _
      (CLng(xi_lngFunction) * (2 ^ 2)) Or _
      xi_lngMethod
End Function

Private Sub Class_Initialize()
FSCTL_GET_COMPRESSION =   GetCtlCode(xi_lngDeviceType:=FILE_DEVICE_FILE_SYSTEM, 
_
   xi_lngFunction:=15, _
   xi_lngMethod:=METHOD_BUFFERED, _
   xi_lngAccess:=FILE_ANY_ACCESS)

FSCTL_SET_COMPRESSION = GetCtlCode(xi_lngDeviceType:=FILE_DEVICE_FILE_SYSTEM, _
   xi_lngFunction:=16, _
   xi_lngMethod:=METHOD_BUFFERED, _
   xi_lngAccess:=FILE_READ_DATA Or _
   FILE_WRITE_DATA)
End Sub

In case you are wondering where the "15" and "16" above come from, they are 
straight from the macro definition in the Platform SDK. 

Once I got past that hurdle, the rest was straightforward. First you open the 
file 


p_lngFileHwnd = CreateFile(lpFileName:=xi_strFileName, _
   dwDesiredAccess:=GENERIC_ALL, _
   dwShareMode:=FILE_SHARE_WRITE And FILE_SHARE_READ, _
   lpSecurityAttributes:=0&, _
   dwCreationDisposition:=OPEN_EXISTING, _
   dwFlagsAndAttributes:=FILE_FLAG_BACKUP_SEMANTICS, _
   hTemplateFile:=0&)

If you are doing only files, not directories, the dwFlagsAndAttributes can be ... (cont.)
Trapping SQL-DMO Error Messages (using: Visual Basic 6.0) [Error Handler, SQL, SQL-DMO, SQL Server, Visual Basic, Tip] www.pinnaclepublishing.com 05-Oct-2000
Trapping SQL-DMO Error Messages

If you need to trap SQL Server's (6.5 or above) SQL-DMO 
errors in VB using VB's On Error Goto statement, you may 
want to try this procedure as a starting point:

Sub ConnectToServer
On Error Goto MyErrorHandler
Dim ServerObject as New SQLOLE.SQLServer
ServerObject.Connect "ServerName". "sa", "password"
Exit Sub
MyErrorHandler:
MsgBox "The connection failed w/error number " + 
str(Err.Number)
End Sub
Restriction of textbox input to numbers only (using: Visual Basic 6.0) [KeyPress Event, Textbox Control, Visual Basic, Tip] www.pinnaclepublishing.com 05-Oct-2000 by Peter Chamberlin
Peter Chamberlin 
(mailto:peter@chamberlin1.freeserve.co.uk), a UK-based 
programmer, writes, "Continuing the restriction of 
textbox input to numbers only, I recently constructed the 
following code, which does just that and also allows the 
user to cut, copy, and paste, all the time still 
restricting input content to numbers only! Put the 
following into a textbox's KeyPress event...

' Ensure that only Numbers + Backspace Occur
If Not (KeyAscii > 47 And KeyAscii < 58) And Not 
(KeyAscii = 3 Or KeyAscii =
8 Or KeyAscii = 22 Or KeyAscii = 24 Or KeyAscii = 32 Or 
KeyAscii = 44) Then
    ' Nullify Non-Numeric Character
    KeyAscii = 0
End If

' Remove non-digits from Ctrl-V
If KeyAscii = 22 Then
    PreStrip = Clipboard.GetText
    NewStrip = ""
    For J = 1 To Len(PreStrip)
        MidBit = Mid(PreStrip, J, 1)
        If Not (MidBit < "0" Or MidBit > "9") Then
            NewStrip = NewStrip & MidBit
        End If
    Next J
    Clipboard.SetText NewStrip
End If

"... and only numeric input to a text box will be 
allowed. Ctrl-X/C/V is possible, and the routine scans 
and removes non-numeric digits from incoming clipboard 
copy-n-pastes." Well done, Peter! It's all too easy to 
forget the humble KeyAscii. 
A comprehensive CE class library to replace ATL and MFC [CE Programming, ATL, MFC, FTP, Database, Article, Visual C++] www.codeproject.com 05-Oct-2000 by Kenny Goers
	A comprehensive CE class library to replace ATL and MFC
	 
	Kenny Goers
	 
	A collection of classes for CE that do not use ATL or MFC, plus an FTP 
client, Database viewer, and sample application that solves beam deflection 
equations.
	
Catching Memory leaks [Debugging, Memory, Article, Visual C++] www.codeproject.com 05-Oct-2000 by Audrius Vasiliauskas
	Catching Memory leaks
	 
	Audrius Vasiliauskas
	 
	How catch memory leaks with very little effort
	
Simple Trace format tips [Debugging, Trace, TRACE, Article, Visual C++] www.codeproject.com 05-Oct-2000 by Audrius Vasiliauskas
	Simple Trace format tips
	 
	Audrius Vasiliauskas
	 
	A simple way to format your TRACE statements so double clicking takes 
you directly to the source code.
	
Dll Tips [DLL, Article, Visual C++] www.codeproject.com 05-Oct-2000 by xicoloko
	Dll Tips
	 
	xicoloko
	 
	Tips for writting Dynamic Link Libraries
	
Property Sheet View [Document/View, Property Sheet, MFC, Article, Visual C++] www.codeproject.com 05-Oct-2000 by Leo Moll
	Property Sheet View
	 
	Leo Moll
	 
	A "Property Sheet"-like view class for MFC
	
Number, Currency, Percentage Edit Control [Edit Control, Article, Visual C++] www.codeproject.com 05-Oct-2000 by Ian J Hart
	Number, Currency, Percentage Edit Control
	 
	Ian J Hart
	 
	Edit Control that provide masking, formatting and validating for 
number, currency, percentage values.
	
WizGen Add-in for Visual Studio 6.0 [Macro, Add-in, Visual Studio, Class Wizard, MFC, Article, Visual C++] www.codeproject.com 05-Oct-2000 by Philip Oldaker
	WizGen Add-in for Visual Studio 6.0
	 
	Philip Oldaker
	 
	This Add-in is similar to Class Wizard but can be used for MFC 
extension libraries
	
The Art of Estimating, Part I [Windows Programming, Article, Visual C++] www.codeguru.com 05-Oct-2000 by Christopher Duncan
	The Art of Estimating, Part I
	 
	Christopher Duncan
	 
	Delivering an accurate estimate is the hardest part of the job. In the 
first of two parts, Christopher covers the early stages of the development 
process that must be handled properly in order to have a firm foundation for a 
realistic estimate.
	
Function to Capture OpenGL Images to JPG (uses free IJL Library) [OpenGL, Article, Visual C++] www.codeguru.com 05-Oct-2000 by Jonathan de Halleux
	Function to Capture OpenGL Images to JPG (uses free IJL Library)
	 
	Jonathan de Halleux
	 
	Takes the name of an output file and the desired image quality (1-100) 
and spits out a .JPG image of your OpenGL screen
	
Read Only ComboBox [Combobox, List Control, Article, Visual C++] www.codeproject.com 04-Oct-2000 by Tim McColl
	Read Only ComboBox
	 
	Tim McColl
	 
	Show a disabled dropdown style combobox like a read only edit box.
	
Zip and Unzip in the MFC way [C++, MFC, STL, Zip, Article, Visual C++] www.codeproject.com 04-Oct-2000 by Tadeusz Dracz
	Zip and Unzip in the MFC way
	 
	Tadeusz Dracz
	 
	The library to create, modify and extract zip archives
	
A Better CenterWindow() Function [Dialog, Windows Programming, CWnd::CenterWindow(), Article, Visual C++] www.codeproject.com 04-Oct-2000 by Brian Hart
	A Better CenterWindow() Function
	 
	Brian Hart
	 
	This is a good replacement for CWnd::CenterWindow() that works.
	
Auto-Completion Edit Control [Edit Control, Auto Completion, Article, Visual C++] www.codeproject.com 04-Oct-2000 by James R Twine
	Auto-Completion Edit Control
	 
	James R Twine
	 
	An edit control that provides auto-completion functionality for small 
data sets.
	
Dim Edit Control [Edit Control, Article, Visual C++] www.codeproject.com 04-Oct-2000 by James R Twine
	Dim Edit Control
	 
	James R Twine
	 
	An edit control that can provide visual cues in it's text area
	
Enhanced Focus Edit Control with Input Filtering [Edit Control, Article, Visual C++] www.codeproject.com 04-Oct-2000 by James R Twine
	Enhanced Focus Edit Control with Input Filtering
	 
	James R Twine
	 
	An edit control that provides strong visual feedback when it has the 
input focus, and allows filtering of input and/or displayed characters.
	
A sample class to get the favorites of Internet Explorer [Shell Programming, Internet Explorer, Article, Visual C++] www.codeproject.com 04-Oct-2000 by Ray Yang
	A sample class to get the favorites of Internet Explorer
	 
	Ray Yang
	 
	This is a class to get the folders and urls of the IE.
	
SeaShell: More Explorer Controls [Shell Programming, Explorer, Control, Article, Visual C++] www.codeproject.com 04-Oct-2000 by Philip Oldaker
	SeaShell: More Explorer Controls
	 
	Philip Oldaker
	 
	A set of shell controls and other useful classes
	
Enumerating Objects with .NET [.NET, Article, Visual C++] www.codeguru.com 04-Oct-2000 by Jeffrey Richter
	Enumerating Objects with .NET
	 
	Jeffrey Richter
	 
	Illustrates how to use the .NET Base Class Library collection classes 
to enumerate over a set of objects.
	
Hot Redundancy Agent for Dynamic Switching of Servers [Network, Article, Visual C++] www.codeguru.com 04-Oct-2000 by Arkady Frankel
	Hot Redundancy Agent for Dynamic Switching of Servers
	 
	Arkady Frankel
	 
	Uses IPHLPAPI to enable you to "hot switch" from one server to another 
when one goes down or is unavailable
	
Microsoft Development Environment-Like Options Dialog Class [Dialog, Article, Visual C++] www.codeguru.com 04-Oct-2000 by Waqas Ahmed Saeed
	Microsoft Development Environment-Like Options Dialog Class
	 
	Waqas Ahmed Saeed
	 
	Great little class that supports new Visual Studio.NET style option 
dialogs
	
Better Method of Creating/Deleting Linked Lists Nodes [C++, MFC, Article, Visual C++] www.codeguru.com 04-Oct-2000 by Ralph Varjabedian
	Better Method of Creating/Deleting Linked Lists Nodes
	 
	Ralph Varjabedian
	 
	Presents alternative to traditional methods of adding and removing 
nodes from linked lists
	
Cautions about ATL String Conversion macro and _alloca() [ATL, String Conversion, _alloca(), Article, Visual C++] www.mindcracker.com 04-Oct-2000 by Bulent Ozkir
	Cautions about ATL String Conversion macro and _alloca()
	 
	Bulent Ozkir
	 
	04-Oct-2000
	 
	04-Oct-2000
	 
	Don't use the macros in a tight loop. For example, you do NOT want to 
write the following kind of code:
	 
 void BadIterateCode(LPCTSTR lpsz)
 {
 USES_CONVERSION;
 for (int ii = 0; ii SomeMethod(ii, T2COLE(lpsz));
 }
  
	The code above could result in allocating megabytes of memory on the 
stack depending on what the contents of the string lpsz is! It also takes time 
to convert the string for each iteration of the loop. Instead move such 
constant conversions out of the loop:
	 
 void MuchBetterIterateCode(LPCTSTR lpsz)
 {
 USES_CONVERSION;
 LPCOLESTR lpszT = T2COLE(lpsz);
 for (int ii = 0; ii SomeMethod(ii, lpszT);
 }
  
	If the string is not constant, then encapsulate the method call into a 
function. This will allow the conversion buffer to be freed each time. For 
example:
	 
 void CallSomeMethod(int ii, LPCTSTR lpsz)
 {
 USES_CONVERSION;
 pI->SomeMethod(ii, T2COLE(lpsz));
 }
 
 void MuchBetterIterateCode2(LPCTSTR* lpszArray)
 {
 for (int ii = 0; ii  
	Never return the result of one of the macros, unless the return value 
implies making a copy of the data before the return. For example, this code is 
bad:
	 
 LPTSTR BadConvert(ISomeInterface* pI)
 {
 USES_CONVERSION;
 LPOLESTR lpsz = NULL;
 pI->GetFileName(&lpsz);
 LPTSTR lpszT = OLE2T(lpsz);
 CoMemFree(lpsz);
 return lpszT; // bad! returning alloca memory
 }
  
	The code above could be fixed by changing the return value to something 
which copies the value:
	 
 CString BetterConvert(ISomeInterface* pI)
 {
 USES_CONVERSION;
 LPOLESTR lpsz = NULL;
 pI->GetFileName(&lpsz);
 LPTSTR lpszT = OLE2T(lpsz);
 CoMemFree(lpsz);
 return lpszT; // CString makes copy
 }
  
	The macros are easy to use and easy to insert into your code, but as 
you can tell from the caveats above, you need to be careful when using them.
	 
	The implementation of each macro uses the _alloca() function to 
allo ... (cont.)
Renaming LAN group names utility [Article, Visual C++] www.mindcracker.com 04-Oct-2000 by Bulent Ozkir
	Renaming LAN group names utility
	 
	A utility which let you rename your local or global group name on your 
network.
	 
	Bulent Ozkir
	 
	04-Oct-2000
	 
	04-Oct-2000
	
Use MSWORD to check a word's spelling and provide suggestions (using: Visual Basic 6.0) [Spell Checking, Word, Visual Basic, Tip] www.vb2themax.com 03-Oct-2000
Use MSWORD to check a word's spelling and provide suggestions

' this should be a module-level or global variable, so that
' Word is instantiated only once
Dim MSWord As New Word.Application

' check the spelling of a word
'
' returns True if the word is correct
' returns False if the word is not correct, and in this case it optionally
' returns a collection that contains all the suggested alternate words
'
' NOTE: requires a reference to the Microsoft Word Object Library

' USAGE:
'    Dim suggestions As Collection, w As Variant
'    List1.Clear
'    If Not CheckSpelling(Text1.Text, suggestions) Then
'        For Each w In suggestions
'            List1.AddItem w
'        Next
'    End If

Function CheckSpelling(ByVal Word As String, Optional suggestions As 
Collection) As Boolean
    Dim splSuggestion As Word.SpellingSuggestion
    Dim splSuggestions As Word.SpellingSuggestions
    
    ' Add a document, if there aren't any
    ' this is needed to get suggestions
    If MSWord.Documents.Count = 0 Then MSWord.Documents.Add
    
    ' ensure there are no extra spaces
    Word = Trim$(Word)
    ' initialize the returned collection
    Set suggestions = New Collection

    If MSWord.CheckSpelling(Word) Then
        ' the word is correct
        CheckSpelling = True
    Else
        ' the word is incorrect
        ' get the list of suggested words
        Set splSuggestions = MSWord.GetSpellingSuggestions(Word)
        For Each splSuggestion In splSuggestions
            suggestions.Add splSuggestion.Name, splSuggestion.Name
        Next
    End If

End Function
Launch a PC's default browser with ShellExecute API (using: Visual Basic 6.0) [Browser, SHELL32.DLL, ShellExecute(), Visual Basic, Tip] www.elementktips.com 03-Oct-2000
Launch a PC's default browser with ShellExecute API

Often, you may want a user to access a specific URI on the Web by 
launching his default browser and navigating to the Web site of your 
choice. Fortunately, a simple Windows API function ShellExecute() lets 
you do just that. When you pass this function a filename, it uses the 
Windows file associations to start the appropriate application. As a 
result, all you need do is pass this function a URI, and it automatically 
launches the default browser and navigates to the requested location. 

The ShellExecute() function conforms to the following syntax:

Private Declare Function ShellExecute Lib _
     "shell32.dll" Alias "ShellExecuteA" _
     (ByVal hWnd As Long, ByVal lpOperation _
     As String, ByVal lpFile As String, ByVal _
     lpParameters As String, ByVal lpDirectory _
     As String, ByVal nShowCmd As Long) As Long

As you can see, it takes quite a few parameters, but don't worry, for our 
purposes only two concern us: lpFile and nShowCmd. The lpFile parameter 
holds the name of the file or application you want to launch, while the 
nShowCmd parameter contains directions indicating how you want the 
application to appear when it opens. Typically, you'll use the SW_SHOWNORMAL 
constant (1).

So for instance, to use this function to navigate to a Web page with the 
URI www.google.com, you'd write code along the lines of:

ShellExecute 0&, vbNullString, "www.google.com", vbNullString, _
      vbNullString, SW_SHOWNORMAL

If for any reason the ShellExecute() doesn't execute the application 
properly, the function returns a value less than or equal to 32. Otherwise, 
it returns a value that points to the launched application.
Visual Studio Syntax Highlighting for C# Files [Tip, Article, Visual C++] www.codeguru.com 03-Oct-2000 by Tom Archer
	Visual Studio Syntax Highlighting for C# Files
	 
	Tom Archer
	 
	Illustrates what you need to do in order to get syntax highlighting for 
C# keywords within Visual Studio
	
RSA MD5 Message Digest [Algorithm, Article, Visual C++] www.codeguru.com 03-Oct-2000 by Nick Stone
	RSA MD5 Message Digest
	 
	Nick Stone
	 
	C++ implementation of the RSA MD5 message digest algorithm.
	
ActiveX using MFC: Inside Out [ActiveX, MFC, Article, Visual C++] www.mindcracker.com 03-Oct-2000 by Mahesh Chand
	ActiveX using MFC: Inside Out
	 
	A tutorial that explains how to create an activeX using ControlWizard 
and how control wizard works under the hood.
	 
	Mahesh Chand
	 
	03-Oct-2000
	 
	03-Oct-2000
	
RSA MD5 Message Digest [Article, Visual C++] www.earthweb.com 03-Oct-2000 by Nick Stone of Langfine Ltd
	RSA MD5 Message Digest
	 
	Nick Stone of Langfine Ltd
	 
	3-Oct-2000
	 
	3-Oct-2000
	 
	C++ implementation of the RSA MD5 message digest algorithm
	
Microsoft Development Environment-Like Options Dialog Class [Article, Visual C++] www.earthweb.com 03-Oct-2000 by Waqas Ahmed Saeed
	Microsoft Development Environment-Like Options Dialog Class
	 
	Waqas Ahmed Saeed
	 
	3-Oct-2000
	 
	3-Oct-2000
	 
	Great little class that supports new Visual Studio.NET style option 
dialogs
	
Better Method of Creating/Deleting Linked Lists Nodes [Article, Visual C++] www.earthweb.com 03-Oct-2000 by Ralph Varjabedian
	Better Method of Creating/Deleting Linked Lists Nodes
	 
	Ralph Varjabedian
	 
	3-Oct-2000
	 
	3-Oct-2000
	 
	Presents an alternative to traditional methods of adding and removing 
nodes from linked lists
	
Hot Redundancy Agent for Dynamic Switching of Servers [Article, Visual C++] www.earthweb.com 03-Oct-2000 by Arkady Frankel
	Hot Redundancy Agent for Dynamic Switching of Servers
	 
	Arkady Frankel
	 
	3-Oct-2000
	 
	3-Oct-2000
	 
	Uses IPHLPAPI to enable you to "hot switch" from one server to another 
when one goes down or is unavailable
	
Get Crazy - Draw Yourself [Article, Delphi] delphi.about.com 03-Oct-2000
	03-Oct-2000
	 
	03-Oct-2000
	 
	Get Crazy - Draw Yourself
	 
	Owner Drawing - an excellent way to improve the look and feel of your 
Delphi application by changing the control's standard appearance. Creating a 
graphical (popup) menu.
	
An RGB chooser Dialog [Control, Dialog, Color, RGB, Article, Visual C++] www.codeproject.com 02-Oct-2000 by Masoud Samimi
	An RGB chooser Dialog
	 
	Masoud Samimi
	 
	A simple Color chooser dialog that uses slifer controls to allow the 
user to combine different RGB values
	
Enhanced Progress Bar Control [Control, Progress Bar, Progress Control, Article, Visual C++] www.codeproject.com 02-Oct-2000 by Yury Goltsman
	Enhanced Progress Bar Control
	 
	Yury Goltsman
	 
	An enhanced Progress Control that supports gradient shading, formatted 
text, 'snake' and reverse modes, and vertical modes
	
Drawing Spline Types, Tension and Control Point using OpenGL and MFC [OpenGL, MFC, Article, Visual C++] www.codeproject.com 02-Oct-2000 by Masoud Samimi
	Drawing Spline Types, Tension and Control Point using OpenGL and MFC
	 
	Masoud Samimi
	 
	This sample teaches you how to create an OpenGL based Spline Drawing 
application
	
The GLU functions and hit testing using OpenGL and MFC [OpenGL, MFC, Article, Visual C++] www.codeproject.com 02-Oct-2000 by Masoud Samimi
	The GLU functions and hit testing using OpenGL and MFC
	 
	Masoud Samimi
	 
	This sample teaches you how to create an OpenGL based 3D Drawing 
application and demonstrates the GLU functions and hit testing using OpenGL and 
MFC
	
Data Types in C++ [Article, Visual C++] cplus.about.com 02-Oct-2000
	02-Oct-2000
	 
	02-Oct-2000
	  
	Data Types in C++
	 
	A tutorial on C++ data types
	
Top Mouse Tips [Article, Visual Basic] visualbasic.about.com 02-Oct-2000
	02-Oct-2000
	 
	02-Oct-2000
	  
	Top Mouse Tips
	 
	Check out a selection of the best code snippets to help you manipulate 
the mouse, from your Visual Basic Guide.
	
Metadata in .NET [Metadata, .NET, DLL, Visual Studio, Article] MSDN Magazine 01-Oct-2000, vol. 15, no. 10 by Matt Pietrek
	Metadata in .NET
	 
	Avoiding DLL Hell: Introducing Application Metadata in the Microsoft 
.NET Framework
	 
	Matt Pietrek
	
.NET Framework, Part 2 [.NET, Web, Visual Studio, Article] MSDN Magazine 01-Oct-2000, vol. 15, no. 10 by Jeffrey Richter
	.NET Framework, Part 2
	 
	Microsoft .NET Framework Delivers the Platform for an Integrated, 
Service-Oriented Web
	 
	Jeffrey Richter
	
ATL Server and Visual Studio .NET [ATL Server, .NET, Web, Visual Studio, Article] MSDN Magazine 01-Oct-2000, vol. 15, no. 10 by Shaun McAravey, Ben Hickman
	ATL Server and Visual Studio .NET
	 
	Developing High-Performance Web Applications Gets Easier
	 
	Shaun McAravey
	 and 
	Ben Hickman
	
VTrace Tool: Building a System Tracer for Windows NT and Windows 2000 [Tracer, Visual C++, Windows NT, Windows NT, Article] MSDN Magazine 01-Oct-2000, vol. 15, no. 10 by Jacob R Lorch, Alan Jay Smith
	VTrace Tool: Building a System Tracer for Windows NT and Windows 2000
	 
	Jacob R Lorch
	 and 
	Alan Jay Smith
	
Propagate Error Info: Use ATL and C++ to Implement Error-Handling COM Objects [Error, ATL, C++, COM, Visual C++, Article] MSDN Magazine 01-Oct-2000, vol. 15, no. 10 by Panos Kougiouris
	Propagate Error Info: Use ATL and C++ to Implement Error-Handling COM 
Objects
	 
	Panos Kougiouris
	
Windows Sockets 2.0: Write Scalable Winsock Apps Using Completion Ports [Socket, Winsock, Completion Port, Visual C++, Windows Socket, Article] MSDN Magazine 01-Oct-2000, vol. 15, no. 10 by Anthony Jones, Amol Deshpande
	Windows Sockets 2.0: Write Scalable Winsock Apps Using Completion Ports
	 
	Anthony Jones
	 and 
	Amol Deshpande
	
Taming the Stateless Beast: Session State and Web Farms [Session State, Web, Visual C++, Article] MSDN Magazine 01-Oct-2000, vol. 15, no. 10 by Johnny Papa
	Taming the Stateless Beast: Session State and Web Farms
	 
	Johnny Papa
	
Web-safe Palate [Web, Palette, Internet Explorer, Article] MSDN Magazine 01-Oct-2000, vol. 15, no. 10 by Robert Hess
	Web-safe Palate
	 
	Robert Hess
	
MSDN Tree Control [Article, Internet Explorer] MSDN Magazine 01-Oct-2000, vol. 15, no. 10 by Robert Hess
	MSDN Tree Control
	 
	Robert Hess
	
Using WinInet for File Transfer [WinInet, File, Visual C++, Article] MSDN Magazine 01-Oct-2000, vol. 15, no. 10 by Robert Hess
	Using WinInet for File Transfer
	 
	Robert Hess
	
Client-side Environment for ASP Pages, Part 2 [ASP, Internet Explorer, Article] MSDN Magazine 01-Oct-2000, vol. 15, no. 10 by Dino Esposito
	Client-side Environment for ASP Pages, Part 2
	 
	Dino Esposito
	
Server-side Controls in Active Server Pages+ [Active Server Pages+, ASP+, Visual C++, Article] MSDN Magazine 01-Oct-2000, vol. 15, no. 10 by George Shepherd
	Server-side Controls in Active Server Pages+
	 
	George Shepherd
	
Improving Runtime Performance with the Smooth Working Set Tool [Performance, Working Set Tuner, WST, Visual C++, Article] MSDN Magazine 01-Oct-2000, vol. 15, no. 10 by John Robbins
	Improving Runtime Performance with the Smooth Working Set Tool
	 
	John Robbins
	
.NET:Programming for the New Platform [.NET, Visual Studio, Article] MSDN Magazine 01-Oct-2000, vol. 15, no. 10 by Jeffrey Richter
	.NET:Programming for the New Platform
	 
	Jeffrey Richter
	
Sizing Windows for Text Strings [Article, Visual C++] MSDN Magazine 01-Oct-2000, vol. 15, no. 10 by Paul DiLascia
	Sizing Windows for Text Strings
	 
	Paul DiLascia
	
Creating Nonrectangular Windows [Article, Visual C++] MSDN Magazine 01-Oct-2000, vol. 15, no. 10 by Paul DiLascia
	Creating Nonrectangular Windows
	 
	Paul DiLascia
	
Activating an Open Document [Article, Visual C++] MSDN Magazine 01-Oct-2000, vol. 15, no. 10 by Paul DiLascia
	Activating an Open Document
	 
	Paul DiLascia
	
An Improved Variant Type Based on Member Templates [Variant, Template, Article, Visual C++] C++ Users Journal 01-Oct-2000, vol. 18, no. 10 by Fernando Cacciola
	An Improved Variant Type Based on Member Templates
	 
	Fernando Cacciola
	  
	C has generic pointers and varying length argument lists for 
flexibility. C++ has templates for even more flexibility, and better type 
safety in the bargain.
	
Classes for Reading and Writing Parameter Blocks [Class, Article, Visual C++] C++ Users Journal 01-Oct-2000, vol. 18, no. 10 by Andrew Queisser
	Classes for Reading and Writing Parameter Blocks
	 
	Andrew Queisser
	  
	Fortran IV let you read and write variables by name since the 1960s. It 
still makes sense to do so in C++.
	
Introduction to Function Try Blocks [Function Try Block, Exception, try, Article, Visual C++] C++ Users Journal 01-Oct-2000, vol. 18, no. 10 by Alan Nash
	Introduction to Function Try Blocks
	 
	Alan Nash
	  
	Exceptions can occur in the darndest places. Fortunately, try blocks 
can also be written in most of those places.
	
Optimizing Substring Operations in String Classes [Substring, String, Class, Article, Visual C++] C++ Users Journal 01-Oct-2000, vol. 18, no. 10 by Todd Niec
	Optimizing Substring Operations in String Classes
	 
	Todd Niec
	  
	If reference counting is good for operations on whole strings, it 
should be good for operations on substrings too.
	
When Bad Things Happen to Good Numbers [Number, Floating Point, Article, Visual C++] C++ Users Journal 01-Oct-2000, vol. 18, no. 10 by Pete Becker
	Pete Becker
	 
	When Bad Things Happen to Good Numbers
	 
	It takes a lot of preparation to write really robust Floating-point 
code.
	
Template Compilation Model [Template, Compiler, Linker, Article, Visual C++] C++ Users Journal 01-Oct-2000, vol. 18, no. 10 by Thomas Becker
	Thomas Becker
	 
	Template Compilation Model
	 
	Templates change the way Compilers and Linkers interact, often in ways 
that are hard to fathom.
	
A programming model to use a thread pool [Thread, Process, Inteprocess Communication, Article, Visual C++] www.codeproject.com 01-Oct-2000 by Sherwood Hu
	A programming model to use a thread pool
	 
	Sherwood Hu
	 
	A class to manage the thread pool
	
Component Best Practices, Part 1 [Component, Article, Delphi] Delphi Developer 01-Oct-2000, vol. 6, no. 10 by Peter Morris
	Component Best Practices, Part 1
	 
	Peter Morris
	 
	
	
Delphi .NET? [.NET, Article, Delphi] Delphi Developer 01-Oct-2000, vol. 6, no. 10 by Bill Hatfield
	Delphi .NET?
	 
	Bill Hatfield
	 
	
	
A Crash Course in TClientDataSet [TClientDataSet, Article, Delphi] Delphi Developer 01-Oct-2000, vol. 6, no. 10 by Jani Jarvinen
	A Crash Course in TClientDataSet
	 
	Jani Jarvinen
	 
	
	
Capturing a Signature from a Palm Pilot [Palm Pilot, Article, Delphi] Delphi Developer 01-Oct-2000, vol. 6, no. 10 by Isi Robayna
	Capturing a Signature from a Palm Pilot
	 
	Isi Robayna
	 
	
	
Packet Filtering with IPHLPAPI.DLL [Packet Filtering, IPHLPAPI.DLL, Windows 2000, TCP/IP, IP Address, TCP Port, Article, Visual C++] Windows Developer's Journal 01-Oct-2000, vol. 11, no. 10 by Ton Plooy
	Packet Filtering with IPHLPAPI.DLL
	 
	Ton Plooy
	 
	Windows 2000 offers a finer degree of programmatic control over TCP/IP, 
including the ability to perform packet filtering. Unfortunately, the 
documentation for this new API doesn't make it easy to figure out. This article 
demonstrates how you can programmatically install filters to block packets 
going to or from specific IP Addresses, on some or all TCP Ports.
	
An Event Publishing Class for MFC [Event Publishing, Class, MFC, Publishing, Subscribing, Article, Visual C++] Windows Developer's Journal 01-Oct-2000, vol. 11, no. 10 by Eric Grimm
	An Event Publishing Class for MFC
	 
	Eric Grimm
	 
	The concept of Publishing and Subscribing to events is useful in a wide 
variety of situations, and can make code more flexible and decoupled. This 
article goes beyond the event publishing facilities supplied with MFC to create 
a more general framework than the default document/view classes offer.
	
HTML Help for MFC Applications [HTML Help, MFC, Help, WinHelp, Article, Visual C++] Windows Developer's Journal 01-Oct-2000, vol. 11, no. 10 by Oz Solomonovich
	HTML Help for MFC Applications
	 
	Oz Solomonovich
	 
	HTML Help is Microsoft's replacement for WinHelp, but it's not highly 
integrated with MFC. This article provides a library that makes it much easier 
for MFC programmers to integrate HTML Help into their projects.
	
User Interface Programming: Resizable Dialogs [Dialog, Article, Visual C++] Windows Developer's Journal 01-Oct-2000, vol. 11, no. 10 by Petter Hesselberg
	User Interface Programming: Resizable Dialogs
	 
	Petter Hesselberg
	 
	Resizable dialogs let the user change the default size to see more 
data, in a listbox or edit control, for example. A feature-rich layout manager 
requires a lot of code to do right, but here's a modest implementation that can 
easily handle automatic dialog resizing for most situations.
	
A Simple Thumbnail Image Viewer [Thumbnail, Internet Explorer, Windows Scripting Host, Article, Visual C++] Windows Developer's Journal 01-Oct-2000, vol. 11, no. 10 by Srdjan Mijanovic
	A Simple Thumbnail Image Viewer
	 
	Srdjan Mijanovic
	 
	The trick is to combine Internet Explorer and the Windows Scripting 
Host, using a .hta file.
	
Starting a Console Application with Redirected Output [Console, Redirected Output, Article, Visual C++] Windows Developer's Journal 01-Oct-2000, vol. 11, no. 10 by Mario Contestabile
	Starting a Console Application with Redirected Output
	 
	Mario Contestabile
	 
	Of the many options for redirecting DOS output, which ones work?
	
A Simple RTF Generator [RTF, Article, Visual C++] Windows Developer's Journal 01-Oct-2000, vol. 11, no. 10 by Chris Yourch
	A Simple RTF Generator
	 
	Chris Yourch
	 
	This reusable class makes it easier to generate RTF that works in rich 
edit controls.
	
The Hot Edit Control [Edit Control, Article, Visual C++] Windows Developer's Journal 01-Oct-2000, vol. 11, no. 10 by Alan Kelly
	The Hot Edit Control
	 
	Alan Kelly
	 
	Those flat controls that 'pop up' when the mouse moves over them look 
fancy, but it's not that hard to roll your own, as this example demonstrates.
	
Checkbox Positioning within CCheckListBox [Checkbox, CCheckListBox Class, Article, Visual C++] Windows Developer's Journal 01-Oct-2000, vol. 11, no. 10 by Agha Khan
	Checkbox Positioning within CCheckListBox
	 
	Agha Khan
	 
	Microsoft left out the ability to control checkbox position, but you 
can add it yourself.
	
Loading a CBitmap Object from a BMP File [CBitmap Class, BMP File, Article, Visual C++] Windows Developer's Journal 01-Oct-2000, vol. 11, no. 10 by Ananth Viswanathan
	Loading a CBitmap Object from a BMP File
	 
	Ananth Viswanathan
	 
	Loading a CBitmap from a resource is easy; loading it directly from a 
.bmp file requires an extra step.
	
A Practical Guide to ADO Extensions: Part I [ADO, ADO Extension, DDL, Security, Jet, Replication Objects Library, Article, Delphi] Delphi Informant 01-Oct-2000, vol. 6, no. 10 by Alex Fedorov, Natalia Elmanova
	A Practical Guide to ADO Extensions: Part I
	 
	Alex Fedorov and Natalia Elmanova
	 
	Mr Fedorov and Ms Elmanova demonstrate the use of two ADO extensions 
from Delphi: ADO Extensions for DDL and Security, and the Jet and Replication 
Objects Library.
	
A Quick Way to Shortcuts [Shortcut, Folder, Article, Delphi] Delphi Informant 01-Oct-2000, vol. 6, no. 10 by Bill Todd
	A Quick Way to Shortcuts
	 
	Bill Todd
	 
	Mr Todd examines Windows shortcuts in detail, then shows us how to 
build a custom component you can use to create and modify shortcuts in any 
Folder.
	
Automating Word: Part II [Word, Article, Delphi] Delphi Informant 01-Oct-2000, vol. 6, no. 10 by Ron Gray
	Automating Word: Part II
	 
	Ron Gray
	 
	Mr Gray completes his two-part series. In this installment the focus 
turns to the Word components available in Delphi 5, and how to link and embed 
documents using OLE.
	
Database Persistent Objects: Part II [Database, Persistent, Article, Delphi] Delphi Informant 01-Oct-2000, vol. 6, no. 10 by Keith Wood
	Database Persistent Objects: Part II
	 
	Keith Wood
	 
	In Part I, he showed us classes that can automatically store their 
published properties in a relational database. In this installment, Mr Wood 
shares a form wizard for creating them easily.
	
Internet Messaging Made Easy [Internet, Messaging, Exchange, Outlook, CDO, Article, Delphi] Delphi Informant 01-Oct-2000, vol. 6, no. 10 by Kristen Riley
	Internet Messaging Made Easy
	 
	Kristen Riley
	 
	Need to interact with Microsoft Exchange/Outlook? Ms Riley introduces 
the main CDO library with example applications that gather address lists, 
retrieve and send e-mail, and more.
	
Simulate SOAP and Web Services [SOAP, Web Services, XML, MSXML, XmlHttpRequest, Article, Visual C++] Visual C++ Developers Journal 01-Oct-2000, vol. 3, no. 9 by Dino Esposito
	Simulate SOAP and Web Services
	 
	Dino Esposito
	 
	The future of XML-based communications is now: Use the MSXML 
XmlHttpRequest component to simulate next-generation Web Services SOAP 
functionality today.
	
Implement SOAP Channel Using Libwww [SOAP, Article, Visual C++] Visual C++ Developers Journal 01-Oct-2000, vol. 3, no. 9 by Cal Caldwell
	Implement SOAP Channel Using Libwww
	 
	Cal Caldwell
	 
	Get a hands-on understanding of the architecture - and the purpose of 
each "layer" - in a SOAP implementation, then implement a SOAP client and 
server tailored to your specific domain.
	
Build Desktop Applications Using Browser Technology [Browser, Internet, Win32, Article, Visual C++] Visual C++ Developers Journal 01-Oct-2000, vol. 3, no. 9 by Nelleke van der Voort, Eric Bergman-Terrell
	Build Desktop Applications Using Browser Technology
	 
	Nelleke van der Voort and Eric Bergman-Terrell
	 
	Use a combination of standard Windows solutions and a few Internet 
technologies to build a customizable Win32 desktop app that includes functions 
such as e-mail, customizable displays, and the ability to write add-in scripts.
	
Create Console Applications [Console, MFC, C++, NT Service, COM, Article, Visual C++] Visual C++ Developers Journal 01-Oct-2000, vol. 3, no. 9 by Bill Wagner
	Create Console Applications
	 
	Bill Wagner
	 
	VC++ is more than just MFC applications. Here, learn to leverage the 
C++ standard library to create a variety of non-GUI apps, including NT 
Services, COM EXE servers, and console apps.
	
6 Tips for Debugging COM+ Components [Debugging, COM+, Component, Article, Visual C++] Visual C++ Developers Journal 01-Oct-2000, vol. 3, no. 9 by Alan Gordon
	6 Tips for Debugging COM+ Components
	 
	Alan Gordon
	 
	Debugging configured COM+ components is easy if you master these simple 
- but often overlooked - tips.
	
Develop Apps for a Custom Platform [Windows CE, Article, Visual C++] Visual C++ Developers Journal 01-Oct-2000, vol. 3, no. 9 by Andy Harding
	Develop Apps for a Custom Platform
	 
	Andy Harding
	 
	Get the lowdown on Windows CE 3.0, and banish rogue memory allocations.
	
Add Traces and Asserts to Your ATL 3.0 Programs [Trace, Assert, ATL, Debugging, Article, Visual C++] Visual C++ Developers Journal 01-Oct-2000, vol. 3, no. 9 by Richard Grimes
	Add Traces and Asserts to Your ATL 3.0 Programs
	 
	Richard Grimes
	 
	Use asserts in debug builds to highlight cases when required conditions 
aren't met. Traces let you dump information you can check later.
	
Writing Custom Surrogates [Surrogate, Out-of-Process Server, COM, Article, Visual C++] Visual C++ Developers Journal 01-Oct-2000, vol. 3, no. 9 by George Shepherd
	Writing Custom Surrogates
	 
	George Shepherd
	 
	Windows' default surrogate is a good way to manage the implementation 
details of Out-of-proc activations - custom surrogates are even better. Learn 
how to write and use surrogates in your COM-based software development.
	
Handler Marshaling in Windows 2000 [Marshaling, Windows 2000, Handler Marshaling, COM, Article, Visual C++] Visual C++ Developers Journal 01-Oct-2000, vol. 3, no. 9 by Josh Lane
	Handler Marshaling in Windows 2000
	 
	Josh Lane
	 
	Handler Marshaling marries the best of the standard and custom 
marshaling architectures for transmitting remote data in COM.
	
Create Firewall-Friendly Distributed Apps [Firewall, SOAP, Article, Visual Basic] Visual Basic Programmer's Journal 01-Oct-2000, vol. 10, no. 12 by Yasser Shohoud
	Create Firewall-Friendly Distributed Apps
	 
	Yasser Shohoud
	 
	The SOAP Toolkit lets you develop distributed VB apps with SOAP today.
	
Write HTTP With WinSock [HTTP, WinSock, Article, Visual Basic] Visual Basic Programmer's Journal 01-Oct-2000, vol. 10, no. 12 by Sean Michael Murphy
	Write HTTP With WinSock
	 
	Sean Michael Murphy
	 
	Use the WinSock control to present a user interface through browsers 
and to exchange information using HTTP.
	
A Picture is Worth a Thousand Words [MSChart Control, Article, Visual Basic] Visual Basic Programmer's Journal 01-Oct-2000, vol. 10, no. 12 by Stan Schultes
	A Picture is Worth a Thousand Words
	 
	Stan Schultes
	 
	Take a plunge into the creative aspect of VB programming. Learn how to 
use VB's MSChart Control to display your data easily in graphical form.
	
Use Numbers to Sort Themselves [Sort, Article, Visual Basic] Visual Basic Programmer's Journal 01-Oct-2000, vol. 10, no. 12 by Dave Doknjas
	Use Numbers to Sort Themselves
	 
	Dave Doknjas
	 
	Sometimes the best way to sort data is to let it sort itself. 
Noncomparison sorting methods offer improved speed for certain types of data.
	
MSXML 3 Gains Power [MSXML, Article, Visual Basic] Visual Basic Programmer's Journal 01-Oct-2000, vol. 10, no. 12 by A Russell Jones
	MSXML 3 Gains Power
	 
	A Russell Jones
	 
	MSXML 3's new programming features include some significant 
enhancements. This column covers the most important new MSXML features.
	
Measure Trends Effectively [ADO, Article, Visual Basic] Visual Basic Programmer's Journal 01-Oct-2000, vol. 10, no. 12 by Andy Clark
	Measure Trends Effectively
	 
	Andy Clark
	 
	Learn how to use classes and collections to provide the basis for 
potent data-analysis capabilities. Also, learn creative ways to use collection 
properties and ADO disconnected recordsets.
	
Produce Translucent Effects [Translucent, Article, Visual Basic] Visual Basic Programmer's Journal 01-Oct-2000, vol. 10, no. 12 by Karl E Peterson
	Produce Translucent Effects
	 
	Karl E Peterson
	 
	Learn to produce translucent effects with layered windows, and figure 
out how to handle fractional math.
	
Pivot Your Data [Pivot Table, Web, SQL Server, Article, Visual Basic] Visual Basic Programmer's Journal 01-Oct-2000, vol. 10, no. 12 by Ben Taylor
	Pivot Your Data
	 
	Ben Taylor
	 
	Pivot Tables help you present organized data on a Web page quickly. Use 
SQL Server to create these powerful pivot tables.
	
Extend the PropertyBag Object [PropertyBag Object, Persistence, Article, Visual Basic] Visual Basic Programmer's Journal 01-Oct-2000, vol. 10, no. 12 by Francesco Balena
	Extend the PropertyBag Object
	 
	Francesco Balena
	 
	You can use the PropertyBag object to create your own custom 
Persistence technique. Here's how.
	
Use Views to Streamline Database Design [Database, Article, Visual Basic] Visual Basic Programmer's Journal 01-Oct-2000, vol. 10, no. 12 by Barry Fridley
	Use Views to Streamline Database Design
	 
	Barry Fridley
	 
	Views make it easier to use complex data; learn how to implement them 
effectively in your database applications.
	
Do More With Language Support [MLang, Article, Visual Basic] Visual Basic Programmer's Journal 01-Oct-2000, vol. 10, no. 12 by Michael Kaplan
	Do More With Language Support
	 
	Michael Kaplan
	 
	Do language guessing, font linking, and code-page conversion using 
MLang, the multilanguage support DLL.
	
Leverage Domino's KM Features [Domino, Article, Lotus Notes] Notes Advisor 01-Oct-2000 by Chris Horne
Knowledge Management - Lotus Notes & Domino Advisor - October 2000 
	Leverage Domino's KM Features
	 
	Chris Horne
	
Bread Crumbs Template [Template, Article, Lotus Notes] Notes Advisor 01-Oct-2000 by Keith Reichley
Web Development - Lotus Notes & Domino Advisor - October 2000 
	Bread Crumbs Template
	 
	Keith Reichley
	
You Are Here [Article, Lotus Notes] Notes Advisor 01-Oct-2000 by Steven D Campbell
User Interface Design - Lotus Notes & Domino Advisor - October 2000 
	You Are Here
	 
	Steven D Campbell
	
Process Credit Card Transactions with Domino [Credit Card, Transaction, Article, Lotus Notes] Notes Advisor 01-Oct-2000 by Ray Pader
E-Commerce - Lotus Notes & Domino Advisor - October 2000 
	Process Credit Card Transactions with Domino
	 
	Ray Pader
	
Create User-Defined Drop-Down Menus Using DHTML [Menu, DHTML, Article, Lotus Notes] Notes Advisor 01-Oct-2000 by Shakeel Kassam
Web Development - Lotus Notes & Domino Advisor - October 2000 
	Create User-Defined Drop-Down Menus Using DHTML
	 
	Shakeel Kassam
	
Bring Calendars to Web Users [Calendar, Web, Article, Lotus Notes] Notes Advisor 01-Oct-2000 by Matt Holthe
Web Development - Lotus Notes & Domino Advisor - October 2000 
	Bring Calendars to Web Users
	 
	Matt Holthe
	
Object Oriented Perl [Development, Object-Oriented Programming, Perl, Book] Purchased 29-Sep-2000, $64.95

A Visual Framework (Views, Tabs and Splitters) [Dialog, Windows Programming, SDI, MDI, Article, Visual C++] www.codeproject.com 30-Sep-2000 by Zoran M Todorovic
	A Visual Framework (Views, Tabs and Splitters)
	 
	Zoran M Todorovic
	 
	Creating SDI/MDI applications with splitter and tab windows
	
EZSkin: A Primitive Framework for building skinnable apps [Dialog, Windows Programming, Bitmap, Article, Visual C++] www.codeproject.com 30-Sep-2000 by VLakshmi Narasimhan
	EZSkin: A Primitive Framework for building skinnable apps
	 
	VLakshmi Narasimhan
	 
	A mini library to build Bitmap based skinnable apps.
	
MB BrowseForFolder Control [Control, Folder, Article, Visual Basic] www.vb2themax.com 30-Sep-2000 by Marco Bellinaso
	MB BrowseForFolder Control
	  
	30-Sep-2000
	 
	30-Sep-2000
	 
	Marco Bellinaso
	 
	If you want to show the "Browse for Folder" dialog in your own 
application, this is the tool for you. It enables you to change any dialog's 
property, such as its caption, foreground color, font, TreeView styles 
(HotTracking, SingleClickExpand, LinesAtRoot and so on), a textbox to manually 
type the folder name, and a label control to display the currently selected 
folder. You can also decide to display folders only, folders and file, printers 
or the Internet neighborhood. The control exposes a set of events that let you 
know when the dialog is about to be displayed (so that you can select an 
initial folder) and when a user selects a folder, and you can cancel the 
standard dialog action. You can also learn everything about the item that is 
currently selected: its path and display name, its small and large icons, its 
description, the type of exe (if it is an executable file), all its attributes. 
If the user selected a folder, you can determine whether it is shared or has 
any subfolders. The package contains both the control and a class module, so 
that you can use all the functionality even if you don't have a form to place 
the control on. There is also a FolderTree control, a special TreeView control 
that automatically shows the file system structure and all its item. You can 
use it to create an even more customized "Browse for folder" dialog or to add a 
file/folder browser into your own application.
	
COM+: Beginner's definition [Article, Visual C++] www.mindcracker.com 30-Sep-2000 by Mahesh Chand
	COM+: Beginner's definition
	. 
	Mahesh Chand
	 
	30-Sep-2000
	 
	30-Sep-2000
	
Finding Enumeration names (using: Visual Basic 6.0) [Enumerate, TLBINF32.DLL, Type Library, Visual Basic, Tip] www.pinnaclepublishing.com 29-Sep-2000 by Jason Bock
FINDING ENUMERATION NAMES 
-by Jason Bock

Recently I came across a problem that I thought was going to be somewhat tricky 
to solve, until I researched my own brain and remembered a nice component that 
comes with VB's installation. By using this component, I was able to retrieve 
the enumeration names for any enumeration value. 

What's The Problem? When you make an enumeration in VB, you can easily find out 
what the name for a specific value is just by looking at the code. For example, 
if you had the following enumeration: 

Private Enum MyEnum
    FirstValue = 1
    SecondValue
End Enum

You can do a simple search for Private Enum MyEnum and find out what the name 
is for the value equal to 1, which is FirstValue. The problem becomes trickier 
with enumerations compiled into type libraries. Granted, VB's Object Library 
will display the names at design-time, but let's say that you were given the 
enumeration value at run-time. 

Just to show you that this does happen in the real world, here's the problem I 
ran into that motivates the whole discussion. I was recently playing around 
with the CDO Library to find out user information in Exchange. I knew that 
Exchange can store information like addresses, phone numbers, etc., but the way 
this is exposed is with a value called a property tag, which is stored in the 
ID property of each Field object that comes from the Fields collection of the 
AddressEntry object. Without getting into a long-winded discussion of CDO, the 
bottom line comes down to this: I'm given a property tag value that is a 
CdoPropTags enumeration value, and I'd like to be able to map that value to a 
descriptive string value. However, the CdoPropTags enumeration has 803 values. 
After futzing with OLEView and other tools, I couldn't find a easy way to get 
the name/value pairs to put them in a table format. Even if I could, that's a 
waste of time, because the type library has that information!
; why should I have to store it again? 

However, there' ... (cont.)
Test if IE is installed and get its path (using: Visual Basic 6.0) [Internet Explorer, Registry, Path, Visual Basic, Tip] www.pinnaclepublishing.com 29-Sep-2000 by Jason Bock
TEST WHETHER IE IS INSTALLED AND RETRIEVE ITS PATH

' get the IE installation path, or a null string if it isn't installed
'
' NOTE: requires the GetRegistryValue routine
'     that you can download from the site's Code Bank

Function InternetExplorerPath() As String
    Const HKEY_LOCAL_MACHINE = &H80000002

    ' get the path from the registry, or return a null string
    InternetExplorerPath = GetRegistryValue(HKEY_LOCAL_MACHINE, 
"Software\Microsoft\Windows\CurrentVersion\App Paths\IEXPLORE.EXE", "Path")

    ' get rid of the trailing semi-colon, if there
    If Right$(InternetExplorerPath, 1) = ";" Then
        InternetExplorerPath = Left$(InternetExplorerPath, 
Len(InternetExplorerPath) - 1)
    End If
End Function
Writing scalable server applications using IOCP [Internet, Network, I/O Completion Port, Winsock, Article, Visual C++] www.codeproject.com 29-Sep-2000 by Oz Ben Eliezer
	Writing scalable server applications using IOCP
	 
	Oz Ben Eliezer
	 
	An article about using I/O Completion Ports and Winsock to write robust 
and scalable Windows server applications.
	
W2K BUG: timeout of serial driver uses absolute time [Windows 2000, Date, Time, Article, Visual C++] www.codeproject.com 29-Sep-2000 by Ben Kokx
	W2K BUG: timeout of serial driver uses absolute time
	 
	Ben Kokx
	 
	The serial driver uses an absolute Date/Time instead of a relative time 
for its timeout, causing problems in situations like daylight savings.
	
Removing HTML from the text in ASP [Active Server Pages, HTML, ASP, Article, Visual C++] www.codeproject.com 28-Sep-2000 by Konstantin Vasserman
	Removing HTML from the text in ASP
	 
	Konstantin Vasserman
	 
	Exploring the options of removing HTML tags from the text in ASP.
	
Text Preview in ASP [Active Server Pages, ASP, Article, Visual C++] www.codeproject.com 28-Sep-2000 by Konstantin Vasserman
	Text Preview in ASP
	 
	Konstantin Vasserman
	 
	How to generate short preview of the text in ASP.
	
CArray pitfall [C++, MFC, STL, CArray Class, Memory, Article, Visual C++] www.codeproject.com 28-Sep-2000 by Warren Stevens
	CArray pitfall
	 
	Warren Stevens
	 
	This article describes how the CArray class can access deleted Memory 
in certain situations
	
ADO Data Bound Class Wizard [Database, ADO, Class Wizard, Article, Visual C++] www.codeproject.com 28-Sep-2000 by Ly Nguyen
	ADO Data Bound Class Wizard
	 
	Ly Nguyen
	 
	ADO Data Bound Class Wizard
	
Rendering GIF, JPEG, Icon, or Bitmap Files with OleLoadPicture [Bitmap, Palette, Rendering, GIF, JPEG, Icon, OleLoadPicture(), Article, Visual C++] www.codeproject.com 27-Sep-2000 by Wes Rogers
	Rendering GIF, JPEG, Icon, or Bitmap Files with OleLoadPicture
	 
	Wes Rogers
	 
	Easy way to do basic rendering of image files into a view window
	
Simple text rotation [Font, GDI, GUI, Article, Visual C++] www.codeproject.com 27-Sep-2000 by Stefan Schwedt
	Simple text rotation
	 
	Stefan Schwedt
	 
	A simple function to rotate text around its center point within a 
rectangle
	
Understanding COM Apartments, Part 1 [COM, Article, Visual C++] www.codeguru.com 27-Sep-2000 by Jeff Prosise
	Understanding COM Apartments, Part 1
	 
	Jeff Prosise
	 
	In his inaugural article for CodeGuru, the first part of a two-part 
series on COM apartments, Jeff Prosise describes what apartments are, why they 
exist, and how to avoid the problems that they introduce.
	
Custom Draw Listview Controls, Part 1 [Windows Programming, Article, Visual C++] www.codeguru.com 27-Sep-2000 by Roger Onslow
	Custom Draw Listview Controls, Part 1
	 
	Roger Onslow
	 
	In this first part of a two-part series programming owner-drawn 
controls, Roger Onslow introduces the concepts and techniques behind writing 
your own controls.
	
Number To English Translation [C++, MFC, Article, Visual C++] www.codeguru.com 27-Sep-2000 by Jason E Neumeier
	Number To English Translation
	 
	Jason E Neumeier
	 
	Useful class that enables you to display the textual representation of 
a number (for things such as check writing applications)
	
Full-Featured 24-bit Color Toolbar [Toolbar, Article, Visual C++] www.codeguru.com 27-Sep-2000 by Peter Lee
	Full-Featured 24-bit Color Toolbar
	 
	Peter Lee
	 
	Enable you to attach 24-bit images to the standard MFC Toolbar that 
handles both disabled and hot buttons as well as transparent button backgrounds.
	
MRU Dialog [Document/View, Article, Visual C++] www.codeguru.com 27-Sep-2000 by Ricardo Belfor
	MRU Dialog
	 
	Ricardo Belfor
	 
	Dialog, that when your app is started without parameters, presents the 
user with a list of most recently opened file
	
Raw TCP/IP library for Windows 2000 [Network, Update, Article, Visual C++] www.codeguru.com 27-Sep-2000 by Barak Weichselbaum
	Raw TCP/IP library for Windows 2000
	 
	Barak Weichselbaum
	 
	Version 2 of this very impressive TCP/IP library released!!
	
CSplitterWnd Extension that Allows Switching Views in Any Pane [Splitter, Article, Visual C++] www.codeguru.com 27-Sep-2000 by Caroline Englebienne
	CSplitterWnd Extension that Allows Switching Views in Any Pane
	 
	Caroline Englebienne
	 
	Code to switch between multiple views in a splitter window pane 
*without* deleting and re-creating views
	
Set your wallpaper as background of a dialog box [Article, Visual C++] www.mindcracker.com 27-Sep-2000 by Mahesh Chand
	Set your wallpaper as background of a dialog box
	 
	Mahesh Chand
	 
	27-Sep-2000
	 
	27-Sep-2000
	
How to trap buttons of a dialog box without writing handler? [Article, Visual C++] www.mindcracker.com 27-Sep-2000 by Mahesh Chand
	How to trap buttons of a dialog box without writing handler?
	 
	Mahesh Chand
	 
	27-Sep-2000
	 
	27-Sep-2000
	
How to set default button of a dialog box from your program? [Article, Visual C++] www.mindcracker.com 27-Sep-2000 by Mahesh Chand
	How to set default button of a dialog box from your program?
	 
	Mahesh Chand
	 
	27-Sep-2000
	 
	27-Sep-2000
	
How to move focus from one control to other from your program? [Article, Visual C++] www.mindcracker.com 27-Sep-2000 by Mahesh Chand
	How to move focus from one control to other from your program?
	 
	Mahesh Chand
	 
	27-Sep-2000
	 
	27-Sep-2000
	
How to close a modal dialog box from from your program? [Article, Visual C++] www.mindcracker.com 27-Sep-2000 by Mahesh Chand
	How to close a modal dialog box from from your program?
	 
	Mahesh Chand
	 
	27-Sep-2000
	 
	27-Sep-2000
	
How to change text's color of a dialog box? [Article, Visual C++] www.mindcracker.com 27-Sep-2000 by Mahesh Chand
	How to change text's color of a dialog box?
	 
	Mahesh Chand
	 
	27-Sep-2000
	 
	27-Sep-2000
	
How to change background color of controls of a dialog box? [Article, Visual C++] www.mindcracker.com 27-Sep-2000 by Mahesh Chand
	How to change background color of controls of a dialog box?
	 
	Mahesh Chand
	 
	27-Sep-2000
	 
	27-Sep-2000
	
CSplitterWnd Extension that Allows Switching Views in Any Pane [Article, Visual C++] www.earthweb.com 27-Sep-2000 by Caroline Englebienne
	CSplitterWnd Extension that Allows Switching Views in Any Pane
	 
	Caroline Englebienne
	 
	27-Sep-2000
	 
	27-Sep-2000
	 
	Code to switch between multiple views in a splitter window pane 
*without* deleting and re-creating views.
	
Full-Featured 24-bit Color Toolbar [Article, Visual C++] www.earthweb.com 27-Sep-2000 by Peter Lee
	Full-Featured 24-bit Color Toolbar
	 
	Peter Lee
	 
	27-Sep-2000
	 
	27-Sep-2000
	 
	Enable you to attach 24-bit images to the standard MFC toolbar that 
handles both disabled and hot buttons as well as transparent button backgrounds.
	
Picture Motion - Double Buffering [Article, Delphi] delphi.about.com 27-Sep-2000
	27-Sep-2000
	 
	27-Sep-2000
	 
	Picture Motion - Double Buffering
	 
	Delphi Programming concepts of Double Buffering, technique that is used 
to prevent flicker when drawing onto the screen.
	
MRU Dialog [Article, Visual C++] www.earthweb.com 26-Sep-2000 by Ricardo Belfor
	MRU Dialog
	 
	Ricardo Belfor
	 
	26-Sep-2000
	 
	26-Sep-2000
	 
	Dialog that, when your app is started without parameters, presents the 
user with a list of most recently opened file.
	
Disabling Ctrl-Alt-Delete and Ctrl-Esc (using: Visual Basic 6.0) [SystemParametersInfo(), Visual Basic, Tip] visualbasic.about.com 25-Sep-2000
Disabling Ctrl-Alt-Delete and Ctrl-Esc

It is often useful in Visual Basic programs to be able to disable the 
Ctrl-Alt-Delete key sequence. It is easily achieved by persuading Windows that 
a screen saver is running. This code also disables Ctrl-Esc, that is used to 
activate the Start Menu.

Declarations

Copy this code into the declarations section of a module.

Private Declare Function SystemParametersInfo Lib _
"user32" Alias "SystemParametersInfoA" (ByVal uAction _
As Long, ByVal uParam As Long, ByVal lpvParam As Any, _
ByVal fuWinIni As Long) As Long
Code 
Sub DisableCtrlAltDelete(bDisabled As Boolean)
    Dim X As Long
    X = SystemParametersInfo(97, bDisabled, CStr(1), 0)
End Sub
Use

To disable Ctrl-Alt-Delete:

Call DisableCtrlAltDelete(True)

To enable Ctrl-Alt-Delete:

Call DisableCtrlAltDelete(False)
Using the Browse Folder Dialog Box (using: Visual Basic 6.0) [Dialog, SHBrowseForFolder(), SHELL32.DLL, SHGetPathFromIDList(), Visual Basic, Tip] visualbasic.about.com 25-Sep-2000
Using the Browse Folder Dialog Box

If your program requires the user to type in a directory path, why not harness 
to the power of the API to display a delightful dialog box to let your users 
select a directory from the drive without typing?

You can implement this dialog bow into your applications very easily by using 
the following API calls.

 SHBrowseForFolder()
 SHGetPathFromIDList() 
 lstrcat()

Demo Project

Start a new Visual Basic standard-EXE project and add a command button.

Declarations

Copy this code into the declarations section of a module.

Private Const BIF_RETURNONLYFSDIRS = 1
Private Const BIF_DONTGOBELOWDOMAIN = 2
Private Const MAX_PATH = 260

Private Declare Function SHBrowseForFolder Lib _
"shell32" (lpbi As BrowseInfo) As Long

Private Declare Function SHGetPathFromIDList Lib _
"shell32" (ByVal pidList As Long, ByVal lpBuffer _
As String) As Long

Private Declare Function lstrcat Lib "kernel32" _
Alias "lstrcatA" (ByVal lpString1 As String, ByVal _
lpString2 As String) As Long

Private Type BrowseInfo
   hWndOwner As Long
   pIDLRoot As Long
   pszDisplayName As Long
   lpszTitle As Long
   ulFlags As Long
   lpfnCallback As Long
   lParam As Long
   iImage As Long
End Type

Command Button Code

Add this code into the click event of you command button:

'Opens a Browse Folders Dialog Box that displays the 
'directories in your computer
Dim lpIDList As Long ' Declare Varibles
Dim sBuffer As String
Dim szTitle As String
Dim tBrowseInfo As BrowseInfo

szTitle = "Hello World. Click on a directory and " & _
"it's path will be displayed in a message box"
' Text to appear in the the gray area under the 
' title bar telling you what to do
With tBrowseInfo
   .hWndOwner = Me.hWnd ' Owner Form
   .lpszTitle = lstrcat(szTitle, "")
   .ulFlags = BIF_RETURNONLYFSDIRS + _
   BIF_DONTGOBELOWDOMAIN
End With
lpIDList = SHBrowseForFolder(tBrowseInfo)
If (lpIDList) Then
   sBuffer = Space(MAX_PATH)
   SHGetPathFromIDList lpIDList, sBuf ... (cont.)
Showing the Properties dialog box (using: Visual Basic 6.0) [Dialog, SHELL32.DLL, ShellExecuteEx(), SHELLEXECUTEINFO, Visual Basic, Tip] visualbasic.about.com 25-Sep-2000
Showing the Properties dialog box

This tip demonstrates how to use the Win32 API to bring up the Explorer 
properties dialog box for a specified file. This API function has the same 
effect as right clicking on a file in Windows 95 and selecting properties.

Declarations

Copy this code into the declarations section of a module.

Type SHELLEXECUTEINFO
    cbSize As Long
    fMask As Long
    hwnd As Long
    lpVerb As String
    lpFile As String
    lpParameters As String
    lpDirectory As String
    nShow As Long
    hInstApp As Long
    lpIDList As Long
    lpClass As String
    hkeyClass As Long
    dwHotKey As Long
    hIcon As Long
    hProcess As Long
End Type

Public Const SEE_MASK_INVOKEIDLIST = &HC
Public Const SEE_MASK_NOCLOSEPROCESS = &H40
Public Const SEE_MASK_FLAG_NO_UI = &H400

Declare Function ShellExecuteEX Lib "shell32.dll" Alias _
"ShellExecuteEx" (SEI As SHELLEXECUTEINFO) As Long
Code

Public Sub ShowProps(FileName As String, OwnerhWnd _
As Long)

Dim SEI As SHELLEXECUTEINFO
Dim r As Long
     
With SEI
  .cbSize = Len(SEI)
  .fMask = SEE_MASK_NOCLOSEPROCESS Or _
  SEE_MASK_INVOKEIDLIST Or SEE_MASK_FLAG_NO_UI
  .hwnd = OwnerhWnd
  .lpVerb = "properties"
  .lpFile = FileName
  .lpParameters = vbNullChar
  .lpDirectory = vbNullChar
  .nShow = 0
  .hInstApp = 0
  .lpIDList = 0
End With
     
r = ShellExecuteEX(SEI) 
End Sub

Use

To show the properties dialog box of "c:\autoexec.bat", use the following code:

Call ShowProps("c:\autoexec.bat", Me.hwnd)
Creating a HotKey for your application (using: Visual Basic 6.0) [Hot Key, SendMessage(), Visual Basic, Tip] visualbasic.about.com 25-Sep-2000
Creating a HotKey for your application

Here's an example of how to create a hotkey for an app!

Declarations

Copy this code into the declarations section of a module.

Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Long) As Long

Declare Function DefWindowProc Lib "user32" _
Alias "DefWindowProcA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long

Public Const WM_SETHOTKEY = &H32
Public Const WM_SHOWWINDOW = &H18
Public Const HK_SHIFTA = &H141 'Shift + A
Public Const HK_SHIFTB = &H142 'Shift * B
Public Const HK_CONTROLA = &H241 'Control + A
Public Const HK_ALTZ = &H45A

'The value of the key-combination has to
'declared in lowbyte/highbyte-format
'That means as a hex-number: the last two
'characters specify the lowbyte (e.g.: 41 = a),
'the first the highbyte (e.g.: 01 = 1 = Shift)

Form Code

Add the following code into the Form Load event

Me.WindowState = vbMinimized
'Let windows know what hotkey you want for
'your app, setting of lParam has no effect
erg& = SendMessage(Me.hwnd, WM_SETHOTKEY, _
HK_ALTZ, 0)
'Check if succesfull
If erg& <> 1 Then
MsgBox "You need another hotkey", vbOKOnly, _
"Error"
End If
'Tell windows what it should do, when the hotkey
'is pressed -> show the window!
'The setting of wParam and lParam has no effect
erg& = DefWindowProc(Me.hwnd, WM_SHOWWINDOW, _
0, 0)

When the user presses ALT+Z Form1 is shown.
Shutting down Windows (using: Visual Basic 6.0) [ExitWindowsEx(), Visual Basic, Tip] visualbasic.about.com 25-Sep-2000
Shutting down Windows

With one call the the API, you can persuade Windows to shutdown or restart. 
This code is perfect for installation routines that change system files, and so 
require a complete reboot to be correctly changed.

Declarations

Copy this code into the declarations section of a module.

Public Const EWX_LOGOFF = 0 
Public Const EWX_SHUTDOWN = 1 
Public Const EWX_REBOOT = 2 
Public Const EWX_FORCE = 4
Declare Function ExitWindowsEx Lib "user32" Alias _
"ExitWindowsEx" (ByVal uFlags As Long, ByVal dwReserved _
As Long) As Long

If you want to reboot the computer use the following code:

t& = ExitWindowsEx(EWX_REBOOT, 0)
Database Workshop Part 2 - DB Coding [Article, Visual Basic] visualbasic.about.com 25-Sep-2000
	25-Sep-2000
	 
	25-Sep-2000
	  
	Database Workshop Part 2 - DB Coding
	 
	In this week's instalment of the Database Workshop, your Guide explains 
how to access your information without the built in Data Control.
	
cOutlookCalendar .... Class allows you to access the Outlook appointments which appear in the default calendar [Calendar, Outlook, VB Class Module, Visual Basic] www.codeoftheweek.com 25-Sep-2000, no. 129
Requirements

Visual Basic 5.0 or higher.

You will need to create a Reference to Microsoft Outlook 98
Object Model.  To create this reference for Visual Basic 4 goto
Tools / References.  To create this reference for Visual Basic 5
or 6 goto Project / References. Then select Microsoft Outlook 98
Model.  Outlook 2000 should work the same way.

Outlook 98 or higher installed on your machine.

In this Issue

In this issue we discuss how access the Outlook calendar
appointments using the Outlook Object Model.

cOutlookCalendar

This class allows you to access the Outlook appointments which
appear in the default calendar.  The full object model for the
AppointmentItem object is available at
http://msdn.microsoft.com/library/psdk/cdo/_olemsg_appointmentitem_object.htm

The basic usage of this class is to set the StartDate and EndDate
properties to control which appointments are returned and then
call the GetAppointments method.  This method will retrieve a
collection with the appointments that start between StartDate and
EndDate.


Properties

Public Property Let StartDate(dStart As Date)
Public Property Get StartDate() As Date

The beginning of the date range used to determine with
appointments will be returned by the GetAppointments method.


Public Property Let EndDate(dEnd As Date)
Public Property Get EndDate() As Date

The end of the date range used to determine with appointments
will be returned by the GetAppointments method.


Methods

Public Sub GetAppointments(colAppt As Collection)

This is the method that does most of the work.  A collection
object needs to be passed to hold all the appointments between the
date range StartDate and EndDate.  The objects which will be
stored in the collection colAppt are AppointmentItem objects.  You
can refer to the Outlook Object Model documentation for complete
details at
http://msdn.microsoft.com/library/psdk/cdo/_olemsg_appointmentitem_object.htm

The Count property of the collection can be used to determine how
 ... (cont.)
Method of Handling Factorials of Any Size [Algorithm, Article, Visual C++] www.codeguru.com 24-Sep-2000 by Hai Yi
	Method of Handling Factorials of Any Size
	 
	Hai Yi
	 
	Method uses linked list to capture each digit of factorial result 
thereby not limiting you to C/C++ types
	
Print Preview Enhancements [Printing, Article, Visual C++] www.codeguru.com 24-Sep-2000 by Roger Allen
	Print Preview Enhancements
	 
	Roger Allen
	 
	Very nice enhancements to Robin Leatherbarrow's print preview extension
	
Method of Handling Factorials of Any Size [Article, Visual C++] www.earthweb.com 24-Sep-2000 by Hai Yi
	Method of Handling Factorials of Any Size
	 
	Hai Yi
	 
	24-Sep-2000
	 
	24-Sep-2000
	 
	Method uses linked list to capture each digit of factorial result 
thereby not limiting you to C/C++ types.
	
Print Preview Enhancements [Article, Visual C++] www.earthweb.com 24-Sep-2000 by Roger Allen
	Print Preview Enhancements
	 
	Roger Allen
	 
	24-Sep-2000
	 
	24-Sep-2000
	 
	Very nice enhancements to Robin Leatherbarrow's print preview extension.
	
MB Scroller Control [Control, Article, Visual Basic] www.vb2themax.com 23-Sep-2000 by Marco Bellinaso
	MB Scroller Control
	  
	23-Sep-2000
	 
	23-Sep-2000
	 
	Marco Bellinaso
	 
	Have you ever spent your time trying to arrange too many controls on a 
form that was too small for all of them? Now you can relax, at last. Just drop 
the MB Scroller Control on a form and all your other control on the Scroller. 
if the form resizes and not all the controls are not visible, the Scroller 
control shows a vertical/horizontal scrollbar, thus making your form a 
scrollable form. The scrollbars hide and show automatically, and if you have 
the ActiveDesktop installed you can also change their style into 3D, Flat or 
Track3D, the same styles of the VB FlatScrollbar) and their background color. 
The control exposes all the standard scrollbar's events, as well as two methods 
to programmatically scroll the form's contents.
	
Create Child Windows using Win32 API [Article, Visual C++] www.mindcracker.com 23-Sep-2000 by Mahesh Chand
	Create Child Windows using Win32 API
	 
	This sample code creates child windows such as a button, listbox and 
edit box. Sample code attached.
	 
	Mahesh Chand
	 
	23-Sep-2000
	 
	23-Sep-2000
	
Extended Use of .NET RichControl Class [C#, .NET, Article, Visual C++] www.codeproject.com 21-Sep-2000 by Norm Almond
	Extended Use of .NET RichControl Class
	 
	Norm Almond
	 
	A fully stocked owner drawn RichControl class
	
Adding Icons to the System Tray [Shell Programming, Icon, System Tray, Icon, Article, Visual C++] www.codeproject.com 21-Sep-2000 by Chris Maunder
	Adding Icons to the System Tray
	 
	Chris Maunder
	 
	A class for adding Icons to the system tray
	
Finding the position and dimensions of the Windows System Tray [Shell Programming, System Tray, Article, Visual C++] www.codeproject.com 21-Sep-2000 by Chris Maunder
	Finding the position and dimensions of the Windows System Tray
	 
	Chris Maunder
	 
	A simple method to get the coordinates of the system tray
	
How to Avoid an MFC Active Document Container from Hanging [ATL, COM, Article, Visual C++] www.codeguru.com 21-Sep-2000 by Carsten Breum
	How to Avoid an MFC Active Document Container from Hanging
	 
	Carsten Breum
	 
	Fixes problem with Visual Studio wizard-generated Active Document 
Containers hanging upon execution
	
Injecting a DLL into Another Process's Address Space [DLL, Article, Visual C++] www.codeguru.com 21-Sep-2000 by Zoltan Csizmadia
	Injecting a DLL into Another Process's Address Space
	 
	Zoltan Csizmadia
	 
	Code to perform one standard method (DLL Injection) of API Hooking, or 
Interception
	
How to change color of Status bar? [Article, Visual C++] www.mindcracker.com 21-Sep-2000 by Ksheeraj Kumud
	How to change color of Status bar?
	 
	Sample code available.
	 
	Ksheeraj Kumud
	 
	21-Sep-2000
	 
	21-Sep-2000
	
How to get version of a dll or an exe file using Win API? [Article, Visual C++] www.mindcracker.com 21-Sep-2000 by KSheeraj Kumud
	How to get version of a dll or an exe file using Win API?
	 
	Sample code available.
	 
	KSheeraj Kumud
	 
	21-Sep-2000
	 
	21-Sep-2000
	
Make the My Computer icon show current user name and machine name (using: Windows NT 4.0) [Icon, Registry, Windows NT, Tip] www.microsoft.com 20-Sep-2000
Make the My Computer icon show current user name and machine name 

Each Windows desktop has a My Computer icon. Clicking the icon opens the My 
Computer folder, displaying available resources such as hard disks, printers, 
DUN, scheduled tasks and mobile device connections. 

Did you know that you can change the folder name to display the locally 
logged-in user's name? To do so, open regedt32.exe and navigate to 
HKEY_CLASSES_ROOT\CLSID\ subtree, locate the key named 
20D04FE0-3AEA-1069-A2D8-08002B30309D, and follow one of the two instruction 
sets below, depending on whether you have Windows 2000 or Windows NT 4.0. 

For Windows 2000 systems, select and edit LocalizedString. Copy its text 
contents to a safe location such as Notepad. The contents should be similar to 
"@D:\WINNT\system32\shell32.dll,-9216@1033, My Computer," without the quotes. 
Next, delete the LocalizedString value. Create a new value with the same name 
(LocalizedString) whose type is REG_EXPAND_SZ. Paste the saved text into the 
text field of the newly created value, but edit the prefix before saving it. 
Replace the text "My Computer" in the string with "%username% on 
%computername%," without the quotes. For example, a modified string might read 
@D:\WINNT\system32\shell32.dll,-9216@1033,%username% on %computername%. 

For Windows NT 4.0 systems, select the  item in the right pane and 
delete it. On the Edit menu, click Add Value and leave the Value Name blank. 
Select a Data Type of REG_EXPAND_SZ, and in the string box enter "%userName% on 
%computername%," without the quotes. Now close Regedt32 and refresh the desktop 
to see the new display caption. 
Restrict TextBox entries to Digits (using: Visual Basic 6.0) [KeyPress Event, SetWindowLong(), Textbox Control, Tip, Visual Basic] www.pinnaclepublishing.com 20-Sep-2000
Restrict TextBox entries to Digits

On Visual Basic Developer columnist Rod Stephens' site: a 
new advanced HowTo, "Use a new WindowProc to make a 
TextBox accept only digits." The trick? Use SetWindowLong 
to add the ES_NUMBER style to the TextBox's Window style. 
To prevent the user from pasting text into the TextBox or 
invoking its context menu, subclass and ignore the 
WM_PASTE and WM_CONTEXTMENU messages. 

Download it from 
http://www.vb-helper.com/HowTo/numonly2.zip.

Restricting Textbox to Digits 

  I have another solution for restricting a textbox to 
  digits only.

  Create the following function in a module:
 
  '------------------------------------------------------
  'echo only 0-9 and backspace
  '------------------------------------------------------
  Public Function EchoDigits(keyin As Integer) As Integer
      Select Case keyin
          Case 8, 48 To 57
              EchoDigits = keyin
          Case Else
              EchoDigits = 0
              Beep
      End Select
  End Function
 
  Then, in the KeyPress event of any textbox you want to 
  control, call the above function like this:
 
  Private Sub txtPort_KeyPress(KeyAscii As Integer)
      KeyAscii = EchoDigits(KeyAscii)
  End Sub
How do you handle the initialization of a dialog box? (using: Visual C++ 6.0) [CDialog::OnInitDialog(), Class Wizard, Dialog, MFC, OnInitDialog(), WM_INITDIALOG, Visual C++, Tip] www.pinnaclepublishing.com 20-Sep-2000
So how do you handle the initialization of a dialog box? 
Simply override and implement OnInitDialog(). You can do 
this by opening ClassWizard, selecting your dialog 
class's name from the Class Name drop-down, scrolling 
down in the Messages list box until you see 
WM_INITDIALOG, double-clicking on WM_INITDIALOG, and then 
clicking Edit Code.

Add code to the function to perform your initialization. 
Since a call to the base class is made, any DDX_Control 
data members are ready to use in your override; any of 
their member functions will act on the controls to which 
they correspond.
How can I detect if there is an active internet connection? (using: Visual Basic 6.0) [Connection, Internet, Registry, Visual Basic, Tip] visualbasic.about.com 20-Sep-2000
How can I detect if there is an active internet connection?

For programs that rely on connecting to the internet, it is very useful to know 
whether or not the computer has an active connection. Whenever Windows logs on 
to a dial-up connection, it changes a value in the registry. The following code 
demonstrates how to read this values to determine whether the computer is 
connected or not.

Declarations

You must put the following code into the declarations section of your project.

Public Const ERROR_SUCCESS = 0&
Public Const APINULL = 0&
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public ReturnCode As Long

Declare Function RegCloseKey Lib "advapi32.dll" (ByVal _
hKey As Long) As Long

Declare Function RegOpenKey Lib "advapi32.dll" Alias _
"RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As _
String, phkResult As Long) As Long

Declare Function RegQueryValueEx Lib "advapi32.dll" Alias _
"RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName _
As String, ByVal lpReserved As Long, lpType As Long, _
lpData As Any, lpcbData As Long) As Long

Code

Public Function ActiveConnection() As Boolean
Dim hKey As Long
Dim lpSubKey As String
Dim phkResult As Long
Dim lpValueName As String
Dim lpReserved As Long
Dim lpType As Long
Dim lpData As Long
Dim lpcbData As Long
ActiveConnection = False
lpSubKey = "System\CurrentControlSet\Services\RemoteAccess"
ReturnCode = RegOpenKey(HKEY_LOCAL_MACHINE, lpSubKey, _
phkResult)

If ReturnCode = ERROR_SUCCESS Then
    hKey = phkResult
    lpValueName = "Remote Connection"
    lpReserved = APINULL
    lpType = APINULL
    lpData = APINULL
    lpcbData = APINULL
    ReturnCode = RegQueryValueEx(hKey, lpValueName, _
    lpReserved, lpType, ByVal lpData, lpcbData)
    lpcbData = Len(lpData)
    ReturnCode = RegQueryValueEx(hKey, lpValueName, _
    lpReserved, lpType, lpData, lpcbData)
    
    If ReturnCode = ERROR_SUCCESS Then
        If lpData = 0 Then
            ActiveConnection = False
        Else
            Activ ... (cont.)
How can I disconnect from the internet using VB? (using: Visual Basic 6.0) [Connection, Internet, RAS, Tip, Visual Basic] visualbasic.about.com 20-Sep-2000
How can I disconnect from the internet using VB?

If you want to terminate all connections to the internet using Visual Basic, 
you can use the Remote Access Services Hangup function. You first need to 
declare the following code in the declaration section of a form or module.

Declarations

Public Const RAS_MAXENTRYNAME As Integer = 256
Public Const RAS_MAXDEVICETYPE As Integer = 16
Public Const RAS_MAXDEVICENAME As Integer = 128
Public Const RAS_RASCONNSIZE As Integer = 412
Public Const ERROR_SUCCESS = 0&

Public Type RasEntryName
    dwSize As Long
    szEntryName(RAS_MAXENTRYNAME) As Byte
End Type

Public Type RasConn
    dwSize As Long
    hRasConn As Long
    szEntryName(RAS_MAXENTRYNAME) As Byte
    szDeviceType(RAS_MAXDEVICETYPE) As Byte
    szDeviceName(RAS_MAXDEVICENAME) As Byte
End Type

Public Declare Function RasEnumConnections Lib _
"rasapi32.dll" Alias "RasEnumConnectionsA" (lpRasConn As _
Any, lpcb As Long, lpcConnections As Long) As Long

Public Declare Function RasHangUp Lib "rasapi32.dll" Alias _
"RasHangUpA" (ByVal hRasConn As Long) As LongPublic _
gstrISPName As String

Public ReturnCode As Long

Procedure

Public Sub HangUp()
Dim i As Long
Dim lpRasConn(255) As RasConn
Dim lpcb As Long
Dim lpcConnections As Long
Dim hRasConn As Long
lpRasConn(0).dwSize = RAS_RASCONNSIZE
lpcb = RAS_MAXENTRYNAME * lpRasConn(0).dwSize
lpcConnections = 0
ReturnCode = RasEnumConnections(lpRasConn(0), lpcb, _
lpcConnections)

If ReturnCode = ERROR_SUCCESS Then
    For i = 0 To lpcConnections - 1
        If Trim(ByteToString(lpRasConn(i).szEntryName)) _
            = Trim(gstrISPName) Then
            hRasConn = lpRasConn(i).hRasConn
            ReturnCode = RasHangUp(ByVal hRasConn)
        End If
    Next i
End If

End Sub

Public Function ByteToString(bytString() As Byte) As String
Dim i As Integer
ByteToString = ""
i = 0
While bytString(i) = 0&
ByteToString = ByteToString & Chr(bytString(i))
i = i + 1
Wend
End Function

Using the HangUp Pr ... (cont.)
Downloading Web Pages with the Winsock Control (using: Visual Basic 6.0) [Internet, Tip, Visual Basic, Web, WinSock Control] visualbasic.about.com 20-Sep-2000
Downloading Web Pages with the Winsock Control

The Professional and Enterprise Editions of Visual Basic are shipped with the 
Winsock control. This control allows you to use the low level Windows Sockets 
to connect to remote servers and execute commands or download Web pages. This 
tip shows how to connect to a server and download a Web page.

Code

You must have a Winsock control loaded into the project. This code assumes the 
control is called Winsock1. There also must be a text box on the form which is 
called txtWebPage.

First, connect to the remote computer using the following code:

Winsock1.RemoteHost = "visualbasic.about.com"
Winsock1.RemotePort = 80
Winsock1.Connect
In the Winsock1.Connect event, place the following code to download the web 
page.

Dim strCommand as String
Dim strWebPage as String
strWebPage = _
"http://visualbasic.about.com/compute/visualbasic/index.htm"
strCommand = "GET " + strWebPage + " HTTP/1.0" + vbCrLf 
strCommand = strCommand + "Accept: */*" + vbCrLf 
strCommand = strCommand + "Accept: text/html" + vbCrLf 
strCommand = strCommand + vbCrLf 
Winsock1.SendData strCommand

The Winsock control will attempt to download the page. When is receives some 
data from the server, it will trigger the DataArrival event.

Dim webData As String 
Winsock1.GetData webData, vbString
TxtWebPage.Text = TxtWebPage.Text + webData

MessageBox Creator .... Inserts code into your project [AfxMessageBox(), Developer Studio, Message Box, Visual C++, Visual Studio, MessageBox(), VC++ Add-in, Visual Studio Add-in] www.codeguru.com 20-Sep-2000
How many times have you had to go through the same gyrations to create a 
message box? Is it the first argument or the second that's the title as opposed 
to the text. What are the exact constants again for an OK button and a Cancel 
button? What are the valid return values? Well no more! This very useful add-in 
saves you from having to remember that from now on! Using this add-in, you can 
visually set any of the following: 

Icon type
Buttons 
Caption (notice the built-in values provided for you!) 
Text message 
Modality 
Default button 

You can even specify the conditional expression! 
When you're finished selecting your settings, simply click the "Copy to 
Clipboard and Close" button. You'll be returned to your previous source window. 
Just paste the code from the clipboard and you're done! 

Example

Using the settings shown in the figure above, the add-in produced the 
following! 

if(MessageBox(_T("This is an Error Message !!!\nReturn ?"), 
              _T("Error"),
               MB_ICONHAND|MB_YESNO|MB_DEFBUTTON1)
               == IDNO)
{
}

Installing the Add-In

To install the add-in, follow these steps: 
Download the DLL (remember to unzip the file) or download the source and build 
the DLL 
Copy the DLL to the Visual Studio AddIn folder (the default location is the 
c:\program files\microsoft visual studio\Common\MSDev98\AddIns' folder). 
Click the Tools->Customize menu option 
Click the Add-ins and Macro Files tab 
Check the "MsgBox Developer Studio Add-In" add-in 
Now you can assign it to a key or place it on a toolbar as you like 
A DIBSection wrapper for Win32 and WinCE [Bitmap, Palette, CBitmap Class, Article, Visual C++] www.codeproject.com 20-Sep-2000 by Chris Maunder
	A DIBSection wrapper for Win32 and WinCE
	 
	Chris Maunder
	 
	A class that makes using DIBSections as simple as using a CBitmap
	
Floating Point utilites [C++, MFC, STL, Floating Point, Article, Visual C++] www.codeproject.com 20-Sep-2000 by Simon Hughes
	Floating Point utilites
	 
	Simon Hughes
	 
	A set of floating point utilities
	
Extended Use of CStatic Class: CLabel 1.5 [Static Control, CStatic Class, Article, Visual C++] www.codeproject.com 20-Sep-2000 by Norm Almond
	Extended Use of CStatic Class: CLabel 1.5
	 
	Norm Almond
	 
	A fully stocked owner drawn CStatic class
	
ADO Data Bound Class Wizard [Database, Article, Visual C++] www.codeguru.com 20-Sep-2000 by Ly Nguyen
	ADO Data Bound Class Wizard
	 
	Ly Nguyen
	 
	ADO-based class that binds member variables to database columns
	
MessageBox Visual Studio Add-In [Macro, Article, Visual C++] www.codeguru.com 20-Sep-2000 by Thomas Aust
	MessageBox Visual Studio Add-In
	 
	Thomas Aust
	 
	Very cool (you need to see this!) add-in for adding Message Box code to 
your application. Doesn't sound like much, but give it a try. Extremely useful!
	
How to Avoid an MFC Active Document Container from Hanging [Article, Visual C++] www.earthweb.com 20-Sep-2000 by Carsten Breum
	How to Avoid an MFC Active Document Container from Hanging
	 
	Carsten Breum
	 
	20-Sep-2000
	 
	20-Sep-2000
	 
	The Active Document Container container technology implementation used 
by MFC has a serious bug that in some cases prevents an Active Document 
Container from shutting down. The bug can easily be reproduced with an Active 
Document Server that contains a RichEdit Control.
	
Associate a file extension to an executable program (using: Visual Basic 6.0) [File Extension, Registry, SHChangeNotify(), SHELL32.DLL, Visual Basic, Tip] www.vb2themax.com 19-Sep-2000
Associate a file extension to an executable program
_____________________________________________________
Private Declare Sub SHChangeNotify Lib "shell32.dll" (ByVal wEventId As Long,
ByVal uFlags As Long, ByVal dwItem1 As Long, ByVal dwItem2 As Long)
Const SHCNE_ASSOCCHANGED = &H8000000
Const SHCNF_IDLIST = 0

' Create the new file association
'
' Extension is the extension to be registered (eg ".cad"
' ClassName is the name of the associated class (eg "caddoc")
' Description is the textual description (eg "CAD Document"
' ExeProgram is the app that manages that extension (eg "c:\Cad\MyCad.exe")
'
' NOTE: requires CreateRegistryKey ->  and SetRegistryValue ->  functions
'  (these routines can be downloaded from vb2themax's Code Bank

Sub CreateFileAssociation(ByVal Extension As String, ByVal ClassName As String,
ByVal Description As String, ByVal ExeProgram As String)
    Const HKEY_CLASSES_ROOT = &H80000000

    ' ensure that there is a leading dot
    If Left(Extension, 1) <> "." Then
        Extension = "." & Extension
    End If

    ' create a new registry key under HKEY_CLASSES_ROOT
    CreateRegistryKey HKEY_CLASSES_ROOT, Extension
    ' create a value for this key that contains the classname
    SetRegistryValue HKEY_CLASSES_ROOT, Extension, "", ClassName
    ' create a new key for the Class name
    CreateRegistryKey HKEY_CLASSES_ROOT, ClassName & "\Shell\Open\Command"
    ' set its value to the command line
    SetRegistryValue HKEY_CLASSES_ROOT, _
        ClassName & "\Shell\Open\Command", "", ExeProgram & " ""%1"""

    ' notify Windows that file associations have changed
    SHChangeNotify SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0
End Sub
CreateRegistryKey - Create a key in the Registry (using: Visual Basic 6.0) [Registry, Visual Basic, Tip] www.vb2themax.com 19-Sep-2000
CreateRegistryKey - Create a key in the Registry 
Date: 4/8/2000
Versions: VB4/32 VB5 VB6 Level: Intermediate
Author: The VB2TheMax Team

Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias _
    "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, _
    ByVal Reserved As Long, ByVal lpClass As Long, ByVal dwOptions As Long, _
    ByVal samDesired As Long, ByVal lpSecurityAttributes As Long, _
    phkResult As Long, lpdwDisposition As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As 
_
    Long

Const KEY_READ = &H20019  ' ((READ_CONTROL Or KEY_QUERY_VALUE Or 
                          ' KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not 
                          ' SYNCHRONIZE))
Const REG_OPENED_EXISTING_KEY = &H2

' Create a registry key, then close it
' Returns True if the key already existed, False if it was created

Function CreateRegistryKey(ByVal hKey As Long, ByVal KeyName As String) As _
    Boolean
    Dim handle As Long, disposition As Long
    
    If RegCreateKeyEx(hKey, KeyName, 0, 0, 0, 0, 0, handle, disposition) Then
        Err.Raise 1001, , "Unable to create the registry key"
    Else
        ' Return True if the key already existed.
        CreateRegistryKey = (disposition = REG_OPENED_EXISTING_KEY)
        ' Close the key.
        RegCloseKey handle
    End If
End Function
SetRegistryValue - Write a value in the Registry (using: Visual Basic 6.0) [Registry, Visual Basic, Tip] www.vb2themax.com 19-Sep-2000
SetRegistryValue - Write a value in the Registry 
Date: 4/8/2000
Versions: VB4/32 VB5 VB6 Level: Intermediate
Author: The VB2TheMax Team

Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" _
    (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, _
    ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As 
_
    Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias _
    "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _
    ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, _
    ByVal cbData As Long) As Long

Const KEY_WRITE = &H20006  '((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or 
                           ' KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
Const REG_SZ = 1
Const REG_BINARY = 3
Const REG_DWORD = 4

' Write or Create a Registry value
' returns True if successful
'
' Use KeyName = "" for the default value
'
' Value can be an integer value (REG_DWORD), a string (REG_SZ)
' or an array of binary (REG_BINARY). Raises an error otherwise.

Function SetRegistryValue(ByVal hKey As Long, ByVal KeyName As String, _
    ByVal ValueName As String, value As Variant) As Boolean
    Dim handle As Long
    Dim lngValue As Long
    Dim strValue As String
    Dim binValue() As Byte
    Dim length As Long
    Dim retVal As Long
    
    ' Open the key, exit if not found
    If RegOpenKeyEx(hKey, KeyName, 0, KEY_WRITE, handle) Then
        Exit Function
    End If

    ' three cases, according to the data type in Value    
    Select Case VarType(value)
        Case vbInteger, vbLong
            lngValue = value
            retVal = RegSetValueEx(handle, ValueName, 0, REG_DWORD, lngValue, 4)
        Case vbString
            strValue = value
            retVal = RegSetValueEx(handle, ValueName, 0, REG_SZ, ByVal 
strValue, _
                Len(strValue))
        Case vbArray + vbByte
            binVa ... (cont.)
Dynamic DC [Font, GDI, GUI, Device Context, Article, Visual C++] www.codeproject.com 19-Sep-2000 by Craig Henderson
	Dynamic DC
	 
	Craig Henderson
	 
	A Device Context class to draw on a window outside of a WM_PAINT 
handler.
	
Logging the Shell Activity [Shell, Article, Visual C++] www.codeguru.com 19-Sep-2000 by Dino Esposito
	Logging the Shell Activity
	 
	Dino Esposito
	 
	In Dino's first article for us, he illustrates why and how you can hook 
the Windows shell in order to log user activity.
	
Making a Difference [Project, Article, Visual C++] www.codeguru.com 19-Sep-2000 by Christopher Duncan
	Making a Difference
	 
	Christopher Duncan
	 
	Christopher extolls on why it's so important (and gives some tips on 
how) to do everything you can to avoid being sucked into one of those "headed 
for disaster" projects.
	
RTL Unleashed [Article, Delphi] delphi.about.com 19-Sep-2000
	19-Sep-2000
	 
	19-Sep-2000
	 
	RTL Unleashed
	 
	Help yourself, increase your productivity and simplify coding using 
functions and procedures built into Delphi.
	
Undocumented Visual C++ [Macro, Add-in, Article, Visual C++] www.codeproject.com 18-Sep-2000 by Nick Hodapp
	Undocumented Visual C++
	 
	Nick Hodapp
	 
	Spelunking in the Badlands of MSDEV
	
Database Workshop Part 1 - Contact Management [Article, Visual Basic] visualbasic.about.com 18-Sep-2000
	18-Sep-2000
	 
	18-Sep-2000
	  
	Database Workshop Part 1 - Contact Management
	 
	In the first in a three part series, your Visual Basic guide explains 
how to use the Data Control to create a handy contact management program!
	
APIHijack: A Library for easy DLL function hooking. [DLL, Article, Visual C++] www.codeproject.com 16-Sep-2000 by Wade Brainerd
	APIHijack: A Library for easy DLL function hooking.
	 
	Wade Brainerd
	 
	This library allows you to replace functions in other DLL with 
functions from your own DLL.
	
MB ActiveLink Control [Control, URL, E-Mail, Article, Visual Basic] www.vb2themax.com 16-Sep-2000 by Marco Bellinaso
	MB ActiveLink Control
	  
	16-Sep-2000
	 
	16-Sep-2000
	 
	Marco Bellinaso
	 
	The MB ActiveLink Control is a label-type control that the end user can 
click to jump to the specified web URL, Email address or document, or open the 
associated application. When sending an E-Mail you can specify the Subject, CC 
and BCC fields. But the ActiveLink control can do much more, and you can assign 
two different values for the caption, font, foreground and backgRound color, 
and picture properties, depending on whether the mouse is over the control or 
not. There is also the MouseEnter and MouseLeave event, to let you decide 
exactly what happens when the mouse hovers on the control. With this control 
you can create nice Web style buttons and active pictures.
	
Protecting pages with include files [Active Server Pages, Article, Visual C++] www.codeproject.com 15-Sep-2000 by Xicoloko
	Protecting pages with include files
	 
	Xicoloko
	 
	An article on how to easily password protect a site using include files
	
Multithreading using MFC in Plain English: Part I [Article, Visual C++] www.mindcracker.com 15-Sep-2000 by Mahesh Chand
	Multithreading using MFC in Plain English: Part I
	 
	An tutorial explains basic concepts of multithreading with basic simple 
example. A good article for beginners.
	 
	Mahesh Chand
	 
	15-Sep-2000
	 
	15-Sep-2000
	
Bubbles for Pocket PC [CE Programming, Article, Visual C++] www.codeproject.com 14-Sep-2000 by Ramon de Klein
	Bubbles for Pocket PC
	 
	Ramon de Klein
	 
	An addictive game for PocketPCs with full source code included.
	
Thread-safe logger with automatic removing log messages from release version. [Debugging, Thread Safe, Thread, Article, Visual C++] www.codeproject.com 14-Sep-2000 by Vlad Kirienko
	Thread-safe logger with automatic removing log messages from release 
version.
	 
	Vlad Kirienko
	 
	A log file class for multi-Threaded applications.
	
Save/Restore main window size with a single function call [Dialog, Windows Programming, MDI, SDI, Article, Visual C++] www.codeproject.com 14-Sep-2000 by Martin Holzherr
	Save/Restore main window size with a single function call
	 
	Martin Holzherr
	 
	Save/restore the main window size at application exit/startup with a 
single function call in MDI, SDI and dialog based applications.
	
Calling a VB ActiveX DLL from a MFC Client [DLL, ActiveX DLL, MFC, Article, Visual C++] www.codeproject.com 14-Sep-2000 by Amit Dey
	Calling a VB ActiveX DLL from a MFC Client
	 
	Amit Dey
	 
	A simple way to call a VB ActiveX DLL from a VC/MFC Client
	
The Complete Idiot's Guide to Writing Shell Extensions, Part VII [Shell Programming, Shell Extension, Owner-drawn, Menu, Context Menu, Article, Visual C++] www.codeproject.com 14-Sep-2000 by Michael Dunn
	The Complete Idiot's Guide to Writing Shell Extensions, Part VII
	 
	Michael Dunn
	 
	A tutorial on using Owner-drawn Menus in a Context Menu shell 
extensions, and on making a context menu extension that responds to a 
right-click in a directory background.
	
The Complete Idiot's Guide to Writing Shell Extensions, Part VIII [Shell Programming, Shell Extension, Explorer, Article, Visual C++] www.codeproject.com 14-Sep-2000 by Michael Dunn
	The Complete Idiot's Guide to Writing Shell Extensions, Part VIII
	 
	Michael Dunn
	 
	A tutorial on adding columns to Explorer's details view via a column 
handler shell extension.
	
Speeding up the tree control [Tree Control, Article, Visual C++] www.codeproject.com 13-Sep-2000 by Tibor Blazko
	Speeding up the tree control
	 
	Tibor Blazko
	 
	Some notes on speed issues with the MS Tree control
	
Change or remove the desktop wallpaper (using: Visual Basic 6.0) [SystemParametersInfo(), Wallpaper, Visual Basic, Tip] www.devx.com 12-Sep-2000
Change or remove the desktop wallpaper

Private Declare Function SystemParametersInfo Lib "user32" Alias 
"SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef 
lpvParam As Any, ByVal fuWinIni As Long) As Long

Const SPI_SETDESKWALLPAPER = 20
Const SPIF_SENDWININICHANGE = &H2
Const SPIF_UPDATEINIFILE = &H1

' change the desktop wallpaper
' returns True if successful
'
' omit the argument or pass a null string to
' remove the current wallpaper

Function SetWallpaper(Optional ByVal FileName As String) As Boolean
    If SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, ByVal FileName,  _
        SPIF_SENDWININICHANGE Or SPIF_UPDATEINIFILE)Then
        SetWallpaper = True
    End If
End Function
Maximize Your Main Window (using: Visual C++ 6.0) [CWinApp::InitInstance(), MFC, Visual C++, Tip] www.pinnaclepublishing.com 12-Sep-2000
Maximize Your Main Window

A common question on the message boards and mailing lists 
is how to make an application's main window appear 
maximized on startup. It's actually quite simple.

In its override of CWinApp::InitInstance(), AppWizard 
adds some lines of code near the bottom, which show the 
main window of the application to the user:

BOOL CMyApp::InitInstance()
{
     //...


     pMainFrame->ShowWindow(m_nCmdShow);
     pMainFrame->UpdateWindow();
}

The m_nCmdShow variable is a UINT that holds a "show 
command;" that is, a code beginning with SW_ that 
specifies to ShowWindow how it is to display the main 
window. Here are some of the common values -- their 
descriptions are quoted from the documentation for 
::ShowWindow(), which CWnd::ShowWindow() calls:

SW_SHOW: Activates the window and displays it in its 
current size and position.

SW_HIDE: Hides the window and activates another window.

SW_SHOWNORMAL: Activates and displays a window. If the 
window is minimized or maximized, the system restores it 
to its original size and position. An application should 
specify this flag when displaying the window for the 
first time.

SW_SHOWMINIMIZED: Activates the window and displays it as 
a minimized window.

SW_SHOWMAXIMIZED: Activates the window and displays it as 
a maximized window.

You'll want to replace the m_nCmdShow text with 
SW_SHOWMAXMIZED so that the main window is maximized 
every time, as in the following example:

BOOL CMyApp::InitInstance()
{
     //...

     pMainFrame->ShowWindow(
          /*m_nCmdShow*/ SW_SHOWMAXIMIZED);
     pMainFrame->UpdateWindow();

     return TRUE;
}

I put the reference to the m_nCmdShow variable in a C-
style comment because when I replace text, sometimes I 
like to leave the old text there in a comment to remind 
myself of what I replaced.
AfxGetMainWnd() [MFC]
Maximize Your Main Window

A common question on the message boards and mailing lists 
is how to make an application's main window appear 
maximized on startup. It's actually quite simple.

In its override of CWinApp::InitInstance(), AppWizard 
adds some lines of code near the bottom, which show the 
main window of the application to the user:

BOOL CMyApp::InitInstance()
{
     //...


     pMainFrame->ShowWindow(m_nCmdShow);
     pMainFrame->UpdateWindow();
}

The m_nCmdShow variable is a UINT that holds a "show 
command;" that is, a code beginning with SW_ that 
specifies to ShowWindow how it is to display the main 
window. Here are some of the common values -- their 
descriptions are quoted from the documentation for 
::ShowWindow(), which CWnd::ShowWindow() calls:

SW_SHOW: Activates the window and displays it in its 
current size and position.

SW_HIDE: Hides the window and activates another window.

SW_SHOWNORMAL: Activates and displays a window. If the 
window is minimized or maximized, the system restores it 
to its original size and position. An application should 
specify this flag when displaying the window for the 
first time.

SW_SHOWMINIMIZED: Activates the window and displays it as 
a minimized window.

SW_SHOWMAXIMIZED: Activates the window and displays it as 
a maximized window.

You'll want to replace the m_nCmdShow text with 
SW_SHOWMAXMIZED so that the main window is maximized 
every time, as in the following example:

BOOL CMyApp::InitInstance()
{
     //...

     pMainFrame->ShowWindow(
          /*m_nCmdShow*/ SW_SHOWMAXIMIZED);
     pMainFrame->UpdateWindow();

     return TRUE;
}

I put the reference to the m_nCmdShow variable in a C-
style comment because when I replace text, sometimes I 
like to leave the old text there in a comment to remind 
myself of what I replaced.
What message should you send to the main window of an MFC application to exit the program as if the user chose Exit from the File menu? (using: Visual C++ 6.0) [AfxGetMainWnd(), MFC, SendMessage(), WM_CLOSE, Visual C++, Tip] www.pinnaclepublishing.com 12-Sep-2000
What message should you send to the main window of an MFC 
application to exit the program as if the user chose Exit 
from the File menu?

Here's the code of CWinApp::OnAppExit, the function that 
handles the Exit command from the File menu of your MFC 
program:

void CWinApp::OnAppExit()
{
     // same as double-clicking on main window close box
     ASSERT(m_pMainWnd != NULL);
     m_pMainWnd->SendMessage(WM_CLOSE);
}

Did you know that you can use AfxGetMainWnd() to get a 
pointer to the main window from anywhere in your MFC 
program? All you do is use the pointer, send the message, 
and your program will exit, like this:

if (AfxGetMainWnd() != NULL)
     AfxGetMainWnd()->SendMessage(WM_CLOSE);
List all the file extensions that are registered in the system (using: Visual Basic 6.0) [File Extension, Registry, Visual Basic, Tip] www.devx.com 12-Sep-2000
List all the file extensions that are registered in the
system

' this is a VB6-only routine
'
' return a bi-dimension string array, where
'    arr(0, i) is the file extension
'    arr(1, i) is the coresponding ProgID
'    arr(2, i) is the associated description
'    arr(3, i) is the location of the executable file
'
' Example:
'   ' fill a listbox with descriptions associated to each registered file
extension
'   Dim a() As String, i As Long
'   a() = ListFileExtensions()
'   For i = 1 To UBound(a, 2)
'       List1.AddItem a(0, i) & vbTab & a(2, i)
'   Next
'
' NOTE: requires the EnumRegistryKeys and GetRegistryValue ->  functions
' available on VB-2-The-Max's Code Bank

Function ListFileExtensions() As String()
    Dim regKeys As Collection
    Dim regKey As Variant
    Dim extsNdx As Long
    Dim progID As String
    Dim clsid As String

    Const HKEY_CLASSES_ROOT = &H80000000

    ' retrieve all the subkeys under HKEY_CLASSES_ROOT
    Set regKeys = EnumRegistryKeys(HKEY_CLASSES_ROOT, "")

    ' prepare the array of results
    ReDim exts(3, regKeys.Count) As String

    ' ignore errors
    On Error Resume Next

    For Each regKey In regKeys
        ' check whether this is a File extension
        If Left$(regKey, 1) = "." Then
            ' store the extension in the result array
            extsNdx = extsNdx + 1
            exts(0, extsNdx) = regKey
            ' the default value for this key is the ProgID
            ' or another string that can be searched in the Registry
            progID = GetRegistryValue(HKEY_CLASSES_ROOT, regKey, "")
            exts(1, extsNdx) = progID
            ' the default value of the key HKEY_CLASSES_ROOT\ProgID is
            ' the textual description of this entry
            exts(2, extsNdx) = GetRegistryValue(HKEY_CLASSES_ROOT, progID, "")
            If exts(2, extsNdx) = "" Then
                ' if this key doesn't exist, delete this entry
                extsNdx = extsNdx - 1
            Else
               ... (cont.)
Don't use VB Registry functions in Webclasses and ASP Components (using: Visual Basic 6.0) [ASP, COM, Registry, WebClass, Visual Basic, Tip] www.devx.com 12-Sep-2000
Don't use VB Registry functions in Webclasses and ASP Components

Here's a scenario that might be familiar to you:

- You create a WebClass or a regular COM component that will be invoked from
within an ASP application.
- The application uses VB's built-in Registry functions, such as DeleteSetting,
SaveSetting, GetSetting, or GetAllSettings.
- Everything works when you debug the application inside the IDE.
- However, the application raises a runtime error when you compile it and use in
the production system.

Because the compiled application doesn't run in the interactive Windows desktop,
you must go to the system Event Viewer to see the error message, which is
Run-time error '5': Invalid procedure call or argument.

This isn't a bug but, rather, a consequence of how those Registry functions use
the Registry. Visual Basic 6.0 WebClasses and ASP components run under the
Internet Information Server service. SaveSetting, GetSetting, DeleteSetting, and
GetAllSettings use Registry keys in the HKEY_CURRENT_USER Registry subtree, but
the IIS service can't access the HKEY_CURRENT_USER Registry subtree--and any
attempt to do so will raise an error.

You can work around this problem by reading and writing to another area of the
Registry, such as HKEY_LOCAL_MACHINE or HKEY_USERS. You can use other functions
in the Code Bank to do so.
Silent Install with VB6 Deployment and Packaging Wizard (using: Visual Basic 6.0) [Deployment and Packaging Wizard, Setup, Visual Basic, Tip] www.devx.com 12-Sep-2000 by Bruce Kellerman
Silent Install with VB6 Deployment and Packaging Wizard by Bruce Kellerman

VB6 Deployment and Packaging Wizard's resulting setup.exe has a command line
switch that allows for a silent install.  This feature is virtually undocumented
except in the source code for Setup1.exe. The default path for the project file
of Setup1 is:

C:\Program Files\Microsoft Visual Studio\VB98\Wizards\PDWizard\Setup1\Setup1.vbp

To do a silent install, the following syntax is required:

setup.exe /s c:\anylogfilename.log

The filename that follows the /s parameter must include the full path name.
The silent install is only interrupted (that I could see) when the install
encounters the "Setup is attempting to copy a file that is older than the one
currently..." dialog. This interruption doesn't occur if the setup contains the
latest versions of the files being installed.
Get Local Cookies for a Given URL (using: Visual Basic 6.0) [Cookie, URL, WinInet, InternetGetCookie(), Visual Basic, Tip] www.devx.com 12-Sep-2000
Get Local Cookies for a Given URL

Private Declare Function InternetGetCookie Lib "wininet.dll" Alias
"InternetGetCookieA" (ByVal lpszUrlName As String, ByVal lpszCookieName As
String, ByVal lpszCookieData As String, lpdwSize As Long) As Boolean

' Get locally-stored cookies for a specified URL
'
' If CookieName is omitted, returns all the cookies as
' as semicolon-delimited list of NAME=VALUE pairs

Function GetCookies(ByVal URL As String, Optional CookieName As String) As
String
    Dim buffer As String
    Dim length As Long

    ' prepare the receiving buffer
    length = 10240
    buffer = Space$(length)
    ' query WinInet for cookies from this URL
    ' a zero value means failure
    If InternetGetCookie(URL, vbNullString, buffer, length) = 0 Then Exit
Function

    ' LENGHT has received the size of returned data
    buffer = Left$(buffer, length)

    If Len(CookieName) = 0 Then
        ' the entire cookie string was requested
        GetCookies = buffer
    Else
        ' extract one single cookie
        Dim cookies() As String
        Dim i As Long, tmp As String

        ' get the individual cookies
        cookies = Split(buffer, ";")

        ' search for the right one
        For i = 0 To UBound(cookies)
            ' trim the leading space, if any
            tmp = LTrim$(cookies(i))
            If InStr(1, tmp, CookieName & "=", vbTextCompare) = 1 Then
                ' we've got it
                GetCookies = Mid$(tmp, Len(CookieName) + 2)
                Exit For
            End If
        Next
    End If

End Function
Create Temporary or Regular Table with SELECT INTO (using: Visual Basic 6.0) [Database, SELECT Statement, Table, Visual Basic, Tip] www.devx.com 12-Sep-2000
Create Temporary or Regular Table with SELECT INTO
________________________________________________________

The SELECT INTO statement is a combination of the SELECT and INSERT T-SQL
commands, that lets you create a new table from a subset of the rows and/or the
columns of another table. The target table of this command is often a temporary
table:

SELECT au_fname, au_lname INTO #authors_CA FROM authors WHERE State='CA'

You can also use SELECT INTO to create a new, non-temporary table, but in this
case you must explicitly enable it, using the sp_dboption stored procedure:

EXEC sp_dboptions pubs, 'select into/bulkcopy', True
SELECT au_fname, au_lname INTO Authors_CA FROM authors WHERE State='CA'

The SELECT INTO statement is very fast, for one reason--the command isn't logged
for backup purposes. More precisely, the command can be inside a transaction and
any rollback command will correctly undo its effects. However, the new values
aren't permanently stored in the log file, therefore after this command you can
only perform a complete database backup (incremental backup raise errors). This
explains why you have to explicitly enable this functionality for non-temporary
tables (temporary tables are never included in backup, so you don't need to use
the sp_dboption command before using SELECT INTO with a temporary table).
COM object can find out who called it, even if the method call came from another machine (using: Visual C++ 6.0) [COM, IServerSecurity, CoGetCallContext(), Visual C++, Tip] www.wintellect.com 12-Sep-2000
Did you know that a COM object can find out who called it, even if the method 
call came from another machine? Say Bob logs into machine A using a domain 
account (user name = Bob), and then launches an app that makes a call to a COM 
object on machine B. If the object executes the following code upon receiving 
the method call, pwszName will point to a Unicode character string of the form 
domain_name\Bob: 

  IServerSecurity* pss; 
  HRESULT hr = CoGetCallContext (IID_IServerSecurity,
      (void**) &pss);
  if (SUCCEEDED (hr)) {
      LPOLESTR pwszName;
      hr = pss->QueryBlanket (NULL, NULL, NULL, NULL, NULL,
          (void**) &pwszName, NULL);
      if (SUCCEEDED (hr)) {
          // pwszName identifies the caller.
            .
            .
            .
          CoTaskMemFree (pwszName); // Prevent memory leaks!
     }
      pss->Release ();
  }

This is great to know if you want to build a logging feature into your objects. 
Now you can not only log the date and time that a method call was received, but 
who it was received from, too. Note: You can prevent an object from identifying 
a remote caller by disabling authentication. To disable authentication, set the 
authentication level to None in both the client and server processes.
Resource leak when painting a bitmap (using: Visual C++ 6.0) [CreateCompatibleDC(), CreateDIBitmap(), SelectObject(), DeleteObject(), Visual C++, Tip] www.wintellect.com 12-Sep-2000
The following code, which paints a bitmap on the screen each time the window is 
asked to repaint, suffers a debilitating resource leak - so debilitating that 
the system slows to a crawl after less than 100 repaints. Can you spot the bug? 

  HDC hMemDC = CreateCompatibleDC (hDC);
  HBITMAP hBitmap = CreateDIBitmap (hDC, &bitmapinfoheader,
        CBM_INIT, &image, &bitmapinfo, DIB_RGB_COLORS);
  SelectObject (hMemDC,hBitmap);
  BitBlt (hDC, x, y, cx, cy, hMemDC, 0, 0, SRCCOPY);
  DeleteObject (hBitmap);
  DeleteDC (hMemoryDC);

The problematic code attempts to delete the bitmap by calling DeleteObject. 
However, DeleteObject fails because the bitmap hasn't been selected out of the 
memory device context. Here's the corrected code, with changes shown in red: 

HDC hMemDC = CreateCompatibleDC (hDC);
HBITMAP hBitmap = CreateDIBitmap (hDC, &bitmapinfoheader,
      CBM_INIT, &image, &bitmapinfo, DIB_RGB_COLORS);
HGDIOBJ hOldBitmap = SelectObject (hMemDC, hBitmap);
BitBlt (hDC, x, y, cx, cy, hMemDC, 0, 0, SRCCOPY);
SelectObject (hMemDC, hOldBitmap);
DeleteObject (hBitmap);
DeleteDC (hMemoryDC); 
Read a file using the FileSystemObject object (using: Visual Basic 6.0) [File, FileSystemObject Object, Visual Basic, Tip] www.topica.com 12-Sep-2000
Read a file using the FileSystemObject object
          
Previous tips have mentioned the use of the FileSystemObject 
component. However, we haven't discussed a simple version of opening a 
file and putting it into a control. Here's how you do it: 

   Dim objFSO As New Scripting.FileSystemObject 
   Dim objStream As Scripting.TextStream 
   Set objStream = objFSO.OpenTextFile("C:\TextFile.txt", _ 
      ForReading, False) 
   txtData.Text = objStream.ReadAll 
   objStream.Close 

This opens the text file named C:\TextFile.txt and puts it into a box 
called txtData. It's that simple...
Displaying the File Properties Dialog (using: Visual Basic 6.0) [File Properties Dialog, SHELL32.DLL, ShellExecuteEx(), SHELLEXECUTEINFO, Visual Basic, Tip] www.codeguru.com 12-Sep-2000
Displaying the File Properties Dialog

This code shows how to display the file properties dialog through VB5/6 Code. 

Paste the following code into a module in your project : 

option Explicit
'
private Const SW_SHOW = 5
private Const SEE_MASK_INVOKEIDLIST = &HC
private Type SHELLEXECUTEINFO
    cbSize as Long
    fMask as Long
    hwnd as Long
    lpVerb as string
    lpFile as string
    lpParameters as string
    lpDirectory as string
    nShow as Long
    hInstApp as Long
    ' optional fields
    lpIDList as Long
    lpClass as string
    hkeyClass as Long
    dwHotKey as Long
    hIcon as Long
    hProcess as Long
End Type

private Declare Function ShellExecuteEx Lib "shell32.dll" (byref s as 
SHELLEXECUTEINFO) as Long

public Sub DisplayFileProperties(byval sFullFileAndPathName as string)
    Dim shInfo as SHELLEXECUTEINFO
    
    With shInfo
        .cbSize = LenB(shInfo)
        .lpFile = sFullFileAndPathName
        .nShow = SW_SHOW
        .fMask = SEE_MASK_INVOKEIDLIST
        .lpVerb = "properties"
    End With
    
    ShellExecuteEx shInfo
End Sub

Now simply call the DisplayFileProperties routine with the full 
file and path name of the required file to display the properties. 
Four different methods of displaying the 'Find Files' dialog (using: Visual Basic 6.0) [DDE, File, SHELL32.DLL, ShellExecute(), SHFindFiles(), SHSimpleIDListFromPath(), keybd_event(), Visual Basic, Tip] www.codeguru.com 12-Sep-2000
Four different methods of displaying the 'Find Files' dialog from within a 
Visual Basic Program. 

If you want to use 'Find Files' standard dialog, in your programs you
can choose between the following four methods.


Using DDE: it's needed an label control, even invisible.

Private Sub Command1_Click()
    With Label1
    .LinkTopic = "Folders|AppProperties"
    .LinkMode = vbLinkManual
    .LinkExecute "[OpenFindFile(,)]"
  End With
End Sub

Private Sub Form_Load()
  Label1.Visible = False
  Command1.Caption = "Find File (1)..."
  Me.Caption = "Find File (1)"
End Sub


Using keybd_event API function to simulate Win + 'F':

Private Declare Sub keybd_event Lib "user32" _
    (ByVal bVk As Byte, _
    ByVal bScan As Byte, _
    ByVal dwFlags As Long, _
    ByVal dwExtraInfo As Long)
'
Private Const VK_LWIN = &H5B
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_APPS = &H5D
'
Private Sub Command1_Click()
    Call keybd_event(VK_LWIN, 0, 0, 0)
    Call keybd_event(&H46, 0, 0, 0)       'F
    Call keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0)
End Sub
'
Private Sub Form_Load()
  Command1.Caption = "Find File (2)..."
  Me.Caption = "Find File (2)"
End Sub


Using ShellExecute: MS Q183903 
(http://support.microsoft.com/support/kb/articles/q183/9/03.asp)

Private Declare Function ShellExecute Lib "shell32.dll" _
    Alias "ShellExecuteA" _
    (ByVal hwnd As Long, _ 
     ByVal lpOperation As String, _
     ByVal lpFile As String, _
     ByVal lpParameters As String, _
     ByVal lpDirectory As String, _
     ByVal nShowCmd As Long) As Long

Private Const SW_SHOWNORMAL = 1
Private Const SW_SHOWMINIMIZED = 2
Private Const SW_SHOWMAXIMIZED = 3
Private Const SW_SHOW = 5
Private Const SW_MINIMIZE = 6
Private Const SW_SHOWMINNOACTIVE = 7
Private Const SW_SHOWNA = 8
Private Const SW_RESTORE = 9
Private Const SW_SHOWDEFAULT = 10

Private Sub Command1_Click()
   Call ShellExecute(Me.hwnd, _
      "find", _
      Dir1.Path, _
      vbNullString, _
      ... (cont.)
Associate a File Extension with Your Application (using: Visual Basic 6.0) [File Extension, RegCreateKeyEx(), Registry, RegSetValueEx(), Visual Basic, Tip] www.microsoft.com 12-Sep-2000
Associate a File Extension with Your Application (Win32) 

SUMMARY
If your application makes use of data files and processes command-line 
arguments, you may want to associate the extension of your application's data 
file with your executable program name by modifying the Registry. 



MORE INFORMATION
You can make modifications to the Reg.dat file by calling the RegCreateKey& and 
RegSetValue& application programming interface (API) functions. 


Step-by-Step Example
Start Visual Basic for Windows. If Visual Basic is already running, from the 
File menu (ALT+F, N) choose New Project and create a Standard EXE project. 
Form1 is created by default. 


Add the following code to the General Declarations section of Form1:

      Option Explicit

      Private Declare Function RegCreateKey Lib "advapi32.dll" Alias _
      "RegCreateKeyA" (ByVal hKey As Long, _
                        ByVal lpSubKey As String, _
                        phkResult As Long) As Long
      Private Declare Function RegSetValue Lib "advapi32.dll" Alias _
      "RegSetValueA" (ByVal hKey As Long, _
                 ByVal lpSubKey As String, _
                 ByVal dwType As Long, _
                 ByVal lpData As String, _
                 ByVal cbData As Long) As Long

      ' Return codes from Registration functions.
      Const ERROR_SUCCESS = 0&
      Const ERROR_BADDB = 1&
      Const ERROR_BADKEY = 2&
      Const ERROR_CANTOPEN = 3&
      Const ERROR_CANTREAD = 4&
      Const ERROR_CANTWRITE = 5&
      Const ERROR_OUTOFMEMORY = 6&
      Const ERROR_INVALID_PARAMETER = 7&
      Const ERROR_ACCESS_DENIED = 8&

      Private Const HKEY_CLASSES_ROOT = &H80000000
      Private Const MAX_PATH = 260&
      Private Const REG_SZ = 1

      Private Sub Form_Click()

          Dim sKeyName As String   'Holds Key Name in registry.
          Dim sKeyValue As String  'Holds Key Value in registry.
          Dim ret&           'Holds error status if any from API calls.
          Dim lphKey&       ... (cont.)
Copy, Move, Delete Files and Folders Using SHFileOperation (using: Visual Basic 6.0) [SHELL32.DLL, SHFileOperation(), SHFILEOPSTRUCT, Visual Basic, Tip] www.thescarms.com 12-Sep-2000
Copy, Move, Delete Files and Folders Using SHFileOperation

Still using Kill, Name, ... to delete, rename, ... files and folders?  Why?  Do 
it like Windows does.  Its simple to copy, move, rename, delete or send to the 
Recycle Bin both files and folders.  Your applications can display the same 
dialog boxes, status and confirmation messages and progress indicators (flying 
files avi) as Windows.  You can even use the standard wildcard characters.

Description
 
The SHFileOperation API lets you perform all of the above mentioned 
operations.  All you need to do is populate a SHFILEOPSTRUCT structure, which 
is shown in the table below, and call SHFileOperation.  

The wFunc element of SHFILEOPSTRUCT gets set to the operation you want to 
perform.  Typical values are FO_COPY (Copy),  FO_DELETE (Delete),  FO_MOVE 
(Move) and FO_RENAME (Rename).  pFrom is a vbNull delimited string of files or 
folders to perform the operation on.  When copying, moving or renaming, pTo is 
a vbNull delimited string of destination files or folders.  Both pFrom and pTo 
must end with a double null.

The fFlags element serves to customize the operation being performed.  Common 
values are: 

FOF_SILENT   (Show progress indicator) 
FOF_ALLOWUNDO   (Lets you undo the operation) 
FOF_NOCONFIRMATION   (Answer Yes to all questions such as "replace existing 
file?") 
FOF_RENAMEONCOLLISION    (Renames files to Copy x of x if the file exists) 
FOF_NOCONFIRMMKDIR   (Don't confirm creating a new folder if the operation 
requires one) 
FOF_FILESONLY   (Perform the operation only on files is wildcards are used) 
By combining FO_DELETE and FOF_ALLOWUNDO you can send a file or folder to the 
Recycle Bin instead of deleting it.

Public Type SHFILEOPSTRUCT 
     hwnd As Long Handle of dialog box to display status info. 
     wFunc As Long Operation to perform. 
     pFrom As String A string specifying one or more source file names.  
Multiple names must be null-separated.   The list of names must be double 
null ... (cont.)
GetRegistryValue - Read the value of a Registry key (using: Visual Basic 6.0) [Registry, Visual Basic, Tip] www.vb2themax.com 12-Sep-2000
GetRegistryValue - Read the value of a Registry key 
Date: 4/8/2000
Versions: VB4/32 VB5 VB6 Level: Intermediate
Author: The VB2TheMax Team

Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" _
    (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, _
    ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As 
_
    Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias _
    "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _
    ByVal lpReserved As Long, lpType As Long, lpData As Any, _
    lpcbData As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As _
    Any, source As Any, ByVal numBytes As Long)

Const KEY_READ = &H20019  ' ((READ_CONTROL Or KEY_QUERY_VALUE Or 
                          ' KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not 
                          ' SYNCHRONIZE))

Const REG_SZ = 1
Const REG_EXPAND_SZ = 2
Const REG_BINARY = 3
Const REG_DWORD = 4
Const REG_MULTI_SZ = 7
Const ERROR_MORE_DATA = 234

' Read a Registry value
'
' Use KeyName = "" for the default value
' If the value isn't there, it returns the DefaultValue
' argument, or Empty if the argument has been omitted
'
' Supports DWORD, REG_SZ, REG_EXPAND_SZ, REG_BINARY and REG_MULTI_SZ
' REG_MULTI_SZ values are returned as a null-delimited stream of strings
' (VB6 users can use SPlit to convert to an array of string)

Function GetRegistryValue(ByVal hKey As Long, ByVal KeyName As String, _
    ByVal ValueName As String, Optional DefaultValue As Variant) As Variant
    Dim handle As Long
    Dim resLong As Long
    Dim resString As String
    Dim resBinary() As Byte
    Dim length As Long
    Dim retVal As Long
    Dim valueType As Long
    
    ' Prepare the default result
    GetRegistryValue = IIf(IsMissing(DefaultValue), Empty, DefaultValue)
    
    ' Open the key, exit if not found.
  ... (cont.)
EnumRegistryKeys - Retrieve all the subkeys of a Registry key (using: Visual Basic 6.0) [Registry, Visual Basic, Tip] www.vb2themax.com 12-Sep-2000
EnumRegistryKeys - Retrieve all the subkeys of a Registry key 
Date: 4/8/2000
Versions: VB4/32 VB5 VB6 Level: Intermediate
Author: The VB2TheMax Team

Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" _
    (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, _
    ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As 
_
    Long
Private Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" _
    (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, _
    ByVal cbName As Long) As Long

Const KEY_READ = &H20019  ' ((READ_CONTROL Or KEY_QUERY_VALUE Or 
                          ' KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not 
                          ' SYNCHRONIZE))

' Enumerate registry keys under a given key
'
' returns a collection of strings

Function EnumRegistryKeys(ByVal hKey As Long, ByVal KeyName As String) As _
    Collection
    Dim handle As Long
    Dim length As Long
    Dim index As Long
    Dim subkeyName As String
    
    ' initialize the result collection
    Set EnumRegistryKeys = New Collection
    
    ' Open the key, exit if not found
    If Len(KeyName) Then
        If RegOpenKeyEx(hKey, KeyName, 0, KEY_READ, handle) Then Exit Function
        ' in all case the subsequent functions use hKey
        hKey = handle
    End If
    
    Do
        ' this is the max length for a key name
        length = 260
        subkeyName = Space$(length)
        ' get the N-th key, exit the loop if not found
        If RegEnumKey(hKey, index, subkeyName, length) Then Exit Do
        
        ' add to the result collection
        subkeyName = Left$(subkeyName, InStr(subkeyName, vbNullChar) - 1)
        EnumRegistryKeys.Add subkeyName, subkeyName
        ' prepare to query for next key
        index = index + 1
    Loop
   
    ' Close the key, if it was actually opened
    If handle Then RegCloseKey h ... (cont.)
Interview with Matt Pietrek [Interview, Article, Visual C++] www.codeproject.com 12-Sep-2000 by Chris Maunder
	Interview with Matt Pietrek
	 
	Chris Maunder
	 
	Matt Pietrek gives us his view on the world.
	
WTL: Button Menu 2 [Windows Template Library, WTL, Menu, Article, Visual C++] www.codeproject.com 12-Sep-2000 by Paul Bludov
	WTL: Button Menu 2
	 
	Paul Bludov
	 
	Use of a Push button with a drop down menu
	
How I Use BoundsChecker [Debugging, Article, Visual C++] www.codeguru.com 12-Sep-2000 by John Robbins
	How I Use BoundsChecker
	 
	John Robbins
	 
	John Robbins, the famous "BugSlayer", shows us how he personally uses 
the award-winning bug-finding product, BoundsChecker, that he helped to make 
famous while at NuMega.
	
How to create a worker thread? [Article, Visual C++] www.mindcracker.com 12-Sep-2000 by Mahesh Chand
	How to create a worker thread?
	 
	Mahesh Chand
	 
	12-Sep-2000
	 
	12-Sep-2000
	
Display a progress bar using secondary thread [Article, Visual C++] www.mindcracker.com 12-Sep-2000 by Mahesh Chand
	Display a progress bar using secondary thread
	 
	Mahesh Chand
	 
	12-Sep-2000
	 
	12-Sep-2000
	
Books to Learn From [Article, Delphi] delphi.about.com 12-Sep-2000
	12-Sep-2000
	 
	12-Sep-2000
	 
	Books to Learn From
	 
	What should we look for when picking a Delphi book to learn from - 
recommended selection of the top books on Delphi Programming.
	
cADOtoHTML .... How generate HTML for any database table or query [ADO, Database, HTML, VB Class Module, Visual Basic] www.codeoftheweek.com 11-Sep-2000, no. 128
Requirements

Visual Basic 5.0 or higher.

You will need to create a Reference to Microsoft ActiveX Data
Objects Library.  To create this reference for Visual Basic 4 goto
Tools / References.  To create this reference for Visual Basic 5
or 6 goto Project / References. Then select Microsoft ActiveX Data
Objects Library.  This issue should work with any version of the
library.

cADOtoHTML

In this issue we discuss how generate HTML for any database table
or query.

This class module is the start of a full-featured class to
convert any ADO recordset into an HTML table which can be viewed
in any browser.  One of the best uses of this is to generate an
ActiveX component with this class so you can call it from your
Active Server Page scripts.  Using this kind of technique allows
you to provide your web site users with dynamic content.  We are
planning on using this to build a better search tool for all our
back issues on the web.

To use this class you need to at least set the Recordset property
and then call the HTML method to return the HTML..


Properties

Public TableBorderWidth As Integer  

This allows you to specify the width of the table border as it
appears in the browser.  This value defaults to 1.


Public BackgroundGraphic As String  

Allows you to specify a background graphic to enhance the looks
of your page.


Public Property Set Recordset(RS As ADODB.Recordset)

Specifies the recordset to use to generate the HTML page.


Public Property Let PageTitle(sTitle As String)
Public Property Get PageTitle() As String

Title that will appear in the browser.


Public Property Get HTML() As String

Returns all the HTML text that is required to display the
recordset specified by the Recordset property.  If you call this
from an ASP page you would typical just use the Reponse.Write
command to send the text to the browser.  You can also store it
into a file for later use (as the sample shows).


Sample Usage

This sample shows one way to use the cADOto ... (cont.)
Creating your first MFC Document/View application [Dialog, Windows Programming, MFC, Document/View, SDI, MDI, Article, Visual C++] www.codeproject.com 11-Sep-2000 by Chris Maunder
	Creating your first MFC Document/View application
	 
	Chris Maunder
	 
	A brief step-by-step tutorial that demonstrates creating an SDI and MDI 
based applications using the MFC Doc/View architecture.
	
Enumerating Internet Explorer's Favorites [Shell Programming, Explorer, Explorer, Article, Visual C++] www.codeproject.com 10-Sep-2000 by Naveen K Kohli
	Enumerating Internet Explorer's Favorites
	 
	Naveen K Kohli
	 
	An article on enumerating a users favorites list from Internet Explorer
	
Using the Memory Heap in C++ [Article, Visual C++] cplus.about.com 10-Sep-2000
	10-Sep-2000
	 
	10-Sep-2000
	  
	Using the Memory Heap in C++
	 
	Allocating and deallocating memory on the heap
	
CRegistry : Serialize Data In/Out of the Registry [Registry, Update, Article, Visual C++] www.codeguru.com 10-Sep-2000 by Amir Israeli
	CRegistry : Serialize Data In/Out of the Registry
	 
	Amir Israeli
	 
	Very sophisticated class for serializing your date to the Registry
	
Text Output Screen [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 10-Sep-2000 by Roger Lindström
	Text Output Screen
	 
	Roger Lindström
	 
	Functions to output text to a console window
	
Connecting to Running Instances of Internet Explorer [Internet Explorer, Article, Visual C++] www.codeguru.com 10-Sep-2000 by Venu Vemula, Robert Walker
	Connecting to Running Instances of Internet Explorer
	 
	Venu Vemula and Robert Walker
	 
	Uses shell interface to connect to and listen to events of running 
instances of IE
	
MFC Printing: Nut and Bolts [Article, Visual C++] www.mindcracker.com 10-Sep-2000 by Mahesh Chand
	MFC Printing: Nut and Bolts
	 
	An article on how MFC framework under the hood to provide Print and 
Print Preview support to your SDI or MDI application.
	 
	Mahesh Chand
	 
	10-Sep-2000
	 
	10-Sep-2000
	
CDPlayer Pre [Article, Visual C++] www.mindcracker.com 10-Sep-2000 by KSheeraj Kumud
	CDPlayer Pre
	 
	A simple program plays your CD. Its a pre version.
	 
	KSheeraj Kumud
	 
	10-Sep-2000
	 
	10-Sep-2000
	
How to get CPU speed? [Article, Visual C++] www.mindcracker.com 10-Sep-2000 by Mahesh Chand
	How to get CPU speed?
	 
	Mahesh Chand
	 
	10-Sep-2000
	 
	10-Sep-2000
	
Connecting to Running Instances of Internet Explorer [Article, Visual C++] www.earthweb.com 10-Sep-2000 by Venu Vemula, Robert Walker
	Connecting to Running Instances of Internet Explorer
	 
	Venu Vemula, Robert Walker
	 
	10-Sep-2000
	 
	10-Sep-2000
	 
	A simpler (and bug free) way of connecting to running instances of 
Internet Explorer.
	
Non-MFC Date Routines in ATL [ATL, Date, MFC, Component, Article, Visual C++] www.codeproject.com 09-Sep-2000 by Paul E Bible
	Non-MFC Date Routines in ATL
	 
	Paul E Bible
	 
	Non-MFC Date Routines in an ATL Component.
	
Ping for Windows [Internet, Network, Article, Visual C++] www.codeproject.com 09-Sep-2000 by Norm Almond
	Ping for Windows
	 
	Norm Almond
	 
	A simple Windows based ping program
	
Advanced Find/Replace Add-In [Add-In, Dialog, Article, Visual Basic] www.vb2themax.com 09-Sep-2000 by Brian Barnett
	Advanced Find/Replace Add-In
	  
	9-Sep-2000
	 
	9-Sep-2000
	 
	Brian Barnett
	 
	This great add-in improves the standard Find and Replace Dialog with 
all the functionality we've been looking for in all these years. First, when 
you perform a search you see all the matches in a grid, where you can see the 
name of the procedure and the actual line of text where the match is. You can 
then goto that line by double-clicking the grid entry, and you can select that 
match for the replace operation (yes, you don't have to Replace All if you 
don't want to). Of course, all the usual options are supported (Whole Word, 
Match Case, Use Regular Expressions) and you can also exclude components from 
search. On top of that, this add-in comes with source code!
	
Strip'em Add-in for Visual Studio 6.0 [Macro, Add-in, Visual Studio, Article, Visual C++] www.codeproject.com 07-Sep-2000 by Itay Szekely
	Strip'em Add-in for Visual Studio 6.0
	 
	Itay Szekely
	 
	This Add-in converts the text format (DOS or UNIX) of a file when it is 
saved in Visual Studio.
	
Start Your Windows Programs From An NT Service [System, NT Service, MFC, Article, Visual C++] www.codeproject.com 07-Sep-2000 by Xiangyang Liu
	Start Your Windows Programs From An NT Service
	 
	Xiangyang Liu
	 
	Make your MFC, VB, and other Windows programs behave like NT services.
	
A Perl script to update your WTL installation [Windows Template Library, WTL, Article, Visual C++] www.codeproject.com 07-Sep-2000 by Milan Gardian
	A Perl script to update your WTL installation
	 
	Milan Gardian
	 
	Notes on updating your WTL installation
	
How to get IP Address of your machine? [Article, Visual C++] www.mindcracker.com 07-Sep-2000 by Mahesh Chand
	How to get IP Address of your machine?
	 
	A dialog based application. Sample project attached.
	 
	Mahesh Chand
	 
	07-Sep-2000
	 
	07-Sep-2000
	
File downloading with COM and ASP [Active Server Pages, File, COM, ASP, Article, Visual C++] www.codeproject.com 06-Sep-2000 by Xicoloko, Curt Robinson
	File downloading with COM and ASP
	 
	Xicoloko and Curt Robinson
	 
	A COM object you can use to transfer files in ASP
	
Directory and Network browsing using a tree control [Tree Control, Network, Article, Visual C++] www.codeproject.com 06-Sep-2000 by John McTainsh
	Directory and Network browsing using a tree control
	 
	John McTainsh
	 
	An article on Browsing my computer and the network using a TreeCtrl
	
ClockRack .... Virtual array of clocks that is displayed on your computer's desktop [Clock, Visual C++, EXE] PC Magazine 05-Sep-2000, vol. 19, no. 15 by Charles Petzold
If you communicate with people in other parts of the world, you often need to
know what time it is where they are. You can calculate the time difference in
your head, but this is tedious -- especially if the people you deal with are in
many different places. The traditional solution to this problem is an array of
clocks on the wall, as you'd see in a War Room, each showing the time in a
different location. ClockRack is a virtual array of clocks that is displayed on
your computer's desktop. It can be configured as an auto-hide appbar, so it's
there when you need it, and not taking up space otherwise. You can display
dozens of clocks and select between analog and digital representations. The
program includes a large database of world locations to which you can add. A
time-setting function lets you set your system clock using Internet servers that
support the NIST Time Service. ClockRack was written by Charles Petzold and
first appeared in PC Magazine September 5, 2000 (v19n15). Source code is
included.
Connection Points And Asynchronous calls, Part II [COM, DCOM, Article, Visual C++] www.codeproject.com 05-Sep-2000 by Ashish Dhar
	Connection Points And Asynchronous calls, Part II
	 
	Ashish Dhar
	 
	A tutorial on connections points and Aynchronous calls
	
A Color picker button [Control, Color, Office, Article, Visual C++] www.codeproject.com 05-Sep-2000 by James White
	A Color picker button
	 
	James White
	 
	A simple modification to Chris Maunder's "Office 97 style Colour 
Picker" control
	
Keyboard Symphony [Article, Delphi] delphi.about.com 05-Sep-2000
	05-Sep-2000
	 
	05-Sep-2000
	 
	Keyboard Symphony
	 
	Delphi For Beginners: Get familiar with the OnKeyDown, OnKeyUp, and 
onKeyPress event procedures to respond to various key actions or handle and 
process ASCII characters along with other special purpose keys.
	
A Ticker control [Static Control, MFC, Article, Visual C++] www.codeproject.com 04-Sep-2000 by Ranjeet Chakraborty
	A Ticker control
	 
	Ranjeet Chakraborty
	 
	A class that provides a news/stock ticker for your MFC applications
	
How to do pointers in Visual Basic [Visual Basic, VBScript, VBA, Visual Basic, Article, Visual C++] www.codeproject.com 04-Sep-2000 by Stefan Savev
	How to do pointers in Visual Basic
	 
	Stefan Savev
	 
	Show how to use pointers in a C like manner
	
Introduction (The Microsoft.NET Initiative) [.NET, Article, Visual C++] www.codeguru.com 04-Sep-2000 by Jeff Richter
	Introduction (The Microsoft.NET Initiative)
	 
	Jeff Richter
	 
	
	
APIHijack: A Library for Easy DLL Function Hooking. [DLL, Article, Visual C++] www.codeguru.com 04-Sep-2000 by Wade Brainerd
	APIHijack: A Library for Easy DLL Function Hooking.
	 
	Wade Brainerd
	 
	
	
APIHijack - A Library for Easy DLL Function Hooking [Article, Visual C++] www.earthweb.com 04-Sep-2000 by Wade Brainerd
	APIHijack - A Library for Easy DLL Function Hooking
	 
	Wade Brainerd
	 
	4-Sep-2000
	 
	4-Sep-2000
	 
	Based on DelayLoadProfileDLL.CPP, by Matt Pietrek for MSJ February 2000.
	
Direct Input 7 Mouse Class [DirectX, Article, Visual C++] www.codeguru.com 03-Sep-2000 by Jason Brooks
	Direct Input 7 Mouse Class
	 
	Jason Brooks
	 
	DirectInput is essential for responsive games, therefore to help ease 
the transition of DOS games programmers, you can use this class to read mouse 
input directly
	
CBitmapCtrl: Control for Displaying Bitmaps [Bitmap, Article, Visual C++] www.codeguru.com 03-Sep-2000 by John Melas
	CBitmapCtrl: Control for Displaying Bitmaps
	 
	John Melas
	 
	A class representing a dialog control that loads bitmaps from files
	
mcFirst: Your first VC++ application [Article, Visual C++] www.mindcracker.com 03-Sep-2000 by Mahesh Chand
	mcFirst: Your first VC++ application
	 
	SDI application which draws circles on right mouse click.
	 
	Mahesh Chand
	 
	03-Sep-2000
	 
	03-Sep-2000
	
CBitmapCtrl: Control for Displaying Bitmaps [Article, Visual C++] www.earthweb.com 03-Sep-2000 by John Melas
	CBitmapCtrl: Control for Displaying Bitmaps
	 
	John Melas
	 
	3-Sep-2000
	 
	3-Sep-2000
	 
	A class representing a dialog control that loads bitmaps from files.
	
Direct Input 7 Mouse Class [Article, Visual C++] www.earthweb.com 03-Sep-2000 by Jason Brooks
	Direct Input 7 Mouse Class
	 
	Jason Brooks
	 
	3-Sep-2000
	 
	3-Sep-2000
	 
	DirectInput is essential for responsive games, therefore to help ease 
the transition of DOS games programmers, you can use this class to read mouse 
input directly
	
MB Interprocess CommunicationControl [Interprocess Communication, Control, Article, Visual Basic] www.vb2themax.com 02-Sep-2000 by Marco Bellinaso
	MB Interprocess CommunicationControl
	  
	2-Sep-2000
	 
	2-Sep-2000
	 
	Marco Bellinaso
	 
	This control lets you have two applications that communicate with each 
other. Just select the target application by its handle or partial/whole 
caption, set the string or the Long data to send, and then call the Send 
method. The target application - that must host an instance of the InterProcess 
control - receives a DataReceived event and can therefore retrieve the data 
sent and the sender's handle and caption, and even reply to the message.
	
Extending the W2K Shell with COM [Shell, COM, Shell Extension, Folder, Windows NT, Article, Visual C++] Windows Developer's Journal 01-Sep-2000, vol. 11, no. 9 by Tapani J Otala
	Extending the W2K Shell with COM
	 
	Tapani J Otala
	  
	If you want to add capabilities to the Win32 shell, you'll almost 
certainly have to use COM. This example demonstrates a Shell Extension that 
lets you turn any Folder (or even set of folders) into an "image preview" 
folder, a handy tool if you deal with lots of image files.
	
A Build Incrementing Utility [Build, IDE, Visual Studio, Article, Visual C++] Windows Developer's Journal 01-Sep-2000, vol. 11, no. 9 by Jim Gentilin
	A Build Incrementing Utility
	 
	Jim Gentilin
	  
	Automatic build incrementing for all build situations (IDE, batch file, 
master makefile, etc.) requires a standalone utility that can operate on source 
code. This article shows how using memory-mapped files can simplify the job.
	
Global Subclassing to fix Combobox problems [Global Subclassing, Combobox, Subclassing, Article, Visual C++] Windows Developer's Journal 01-Sep-2000, vol. 11, no. 9 by Petter Hesselberg
	Global Subclassing to fix Combobox problems
	 
	Petter Hesselberg
	  
	A combobox is supposed to let you either select from a listbox, or 
enter a new item in an edit control. Unfortunately, under some circumstances, 
text that you type into the edit control disappears when you hit Enter. Here's 
a neat fix that uses global subclassing to remedy the problem without requiring 
any changes to your existing dialog procedures.
	
Understanding NT: How to add custom Performance Counters to your own applications [Performance Counter, Monitoring, Windows NT, Article, Visual C++] Windows Developer's Journal 01-Sep-2000, vol. 11, no. 9 by Paula Tomlinson
	Understanding NT: How to add custom Performance Counters to your own 
applications
	 
	Paula Tomlinson
	  
	Performance counters let users use standard NT Monitoring applications 
to examine and track statistical information from executing programs. This 
three-part series on performance counters wraps up this month by explaining how 
to add custom performance counters to your own applications. A complete example 
is supplied, including the files required to get a performance counter DLL 
properly installed.
	
HTML Document Templates for CGI Applications [HTML, CGI, C++, Article, Visual C++] C++ Users Journal 01-Sep-2000, vol. 18, no. 9 by Carlos Moreno
	HTML Document Templates for CGI Applications
	 
	Carlos Moreno
	  
	Get the power of C/C++ programming with the flexibility of HTML by 
keeping the two at arms length.
	
Network Programming with Linux [Network, Linux, TCP, Protocol, Data Packet, Article, Visual C++] C++ Users Journal 01-Sep-2000, vol. 18, no. 9 by Erik Nelson
	Network Programming with Linux
	 
	Erik Nelson
	  
	TCP isn’t the only Protocol for swapping Data Packets, nor is it always 
the most effective.
	
A TCP/IP Socket Location Server [TCP/IP, Socket, Article, Visual C++] C++ Users Journal 01-Sep-2000, vol. 18, no. 9 by Richard Smereka
	A TCP/IP Socket Location Server
	 
	Richard Smereka
	  
	You can write remarkably portable network-aware code, if you are 
careful how you isolate the dependencies.
	
The Simplest Automated Unit Test Framework That Could Possibly Work [Unit Test, Testing, Article, Visual C++] C++ Users Journal 01-Sep-2000, vol. 18, no. 9 by Chuck Allison
	The Simplest Automated Unit Test Framework That Could Possibly Work
	 
	Chuck Allison
	  
	Testing is a necessary evil to many programmers, but it doesn’t have to 
be all that evil.
	
Tracing an Application in Release Configuration [Tracing, Debugging, Article, Visual C++] C++ Users Journal 01-Sep-2000, vol. 18, no. 9 by Boris Bromberg
	Tracing an Application in Release Configuration
	 
	Boris Bromberg
	  
	A lightweight trace facility is less likely to distort performance in 
the final stress of Debugging.
	
Generic Constants for Generic Programming [Article, Visual C++] C++ Users Journal 01-Sep-2000, vol. 18, no. 9 by Fernando Cacciola
	Generic Constants for Generic Programming
	 
	Fernando Cacciola
	  
	If you’re going to write generic code, make sure it’s completely 
generic.
	
Collections and Algorithms [Collection, Algorithm, Java, Article, Visual C++] C++ Users Journal 01-Sep-2000, vol. 18, no. 9 by Chuck Allison
	Chuck Allison
	 
	Collections and Algorithms
	 
	Java lacks both a standard and templates, but it nevertheless offers 
something resembling the C++ Standard Template Library.
	
Using Microsoft Agents in Delphi [Agent, Article, Delphi] Delphi Developer 01-Sep-2000, vol. 6, no. 9 by Clay Shannon
	Using Microsoft Agents in Delphi
	 
	Clay Shannon
	 
	Microsoft's Agent technology is one of the most entertaining 
technologies to come out of Redmond in a long time. Agents allow you to give 
your software some personality and provide a new way of interacting with your 
users. Clay Shannon gives your computer some personality.
	
Making Password Validation a Snap [Password, Validation, Article, Delphi] Delphi Developer 01-Sep-2000, vol. 6, no. 9 by Mark Meyer
	Making Password Validation a Snap
	 
	Mark Meyer
	 
	Mark Meyer offers guidelines on how to make your own password 
component, complete with error checking and user feedback.
	
Using Item Lists [List, Article, Delphi] Delphi Developer 01-Sep-2000, vol. 6, no. 9 by Anthony Walter
	Using Item Lists
	 
	Anthony Walter
	 
	Anthony Walter explores item lists - from what they are to how they 
work and why you would want to use them.
	
Will the Real Timer Please Execute? [Timer, TTimer, Thread Safe, Article, Delphi] Delphi Developer 01-Sep-2000, vol. 6, no. 9 by Steve Zimmelman
	Will the Real Timer Please Execute?
	 
	Steve Zimmelman
	 
	Ever added a TTimer to your application only to find that its event 
isn't being executed because the main VCL thread is busy? While the TTimer 
component executes in a "Thread Safe" manner, there are times when you need a 
timer event to execute, even when the main thread is busy. Steve Zimmelman 
offers a new timer component that uses its own thread!
	
Word Control: Part I [Word, Automation, Article, Delphi] Delphi Informant 01-Sep-2000, vol. 6, no. 9 by Ron Gray
	Word Control: Part I
	 
	Ron Gray
	 
	Mr Gray presents the Microsoft Word object model, demonstrates how to 
control it using run-time and compile-time Automation, and provides sample 
source code for Delphi 4/5 and Word 97/2000.
	
Database Persistent Objects: Part I [Database, Persistent, RTTI, Article, Delphi] Delphi Informant 01-Sep-2000, vol. 6, no. 9 by Keith Wood
	Database Persistent Objects: Part I
	 
	Keith Wood
	 
	Mr Wood shows how classes can be set up to automatically store 
themselves to, and retrieve themselves from, a standard relational database, 
with minimal effort using RTTI.
	
InterBase 6 [InterBase, Article, Delphi] Delphi Informant 01-Sep-2000, vol. 6, no. 9 by Bill Todd
	InterBase 6
	 
	Bill Todd
	 
	Famous for being open source, Mr Todd explains there's much more that's 
new with IB6, including large exact numerics, new administrative tools, 
replication, and much more.
	
Raw API Programming [VCL, Article, Delphi] Delphi Informant 01-Sep-2000, vol. 6, no. 9 by Andrew J Wozniewicz
	Raw API Programming
	 
	Andrew J Wozniewicz
	 
	Mr Wozniewicz demonstrates how to code without the VCL, when an 
executable's size and speed are critical considerations, e.g. real-time data 
acquisition, restricted memory/CPU, etc.
	
The Gold Standard, MIDAS & COM: Part II [MIDAS, COM, Automation, Callback, Article, Delphi] Delphi Informant 01-Sep-2000, vol. 6, no. 9 by Bill Todd
	The Gold Standard, MIDAS & COM: Part II
	 
	Bill Todd
	 
	Completing his two-part series, Mr Todd presents two additional ways 
for a COM server to call a COM client's methods: via Automation, and through a 
Callback interface.
	
Advanced COM: Hide Activation Policies [COM, Activation, Moniker, Display Name, Article, Visual C++] Visual C++ Developers Journal 01-Sep-2000, vol. 3, no. 8 by George Shepherd
	Advanced COM: Hide Activation Policies
	 
	George Shepherd
	 
	It makes sense to abstract away differences behind a uniform mechanism. 
In COM, that means using Monikers and Display Names.
	
The Incredible Shrinking Executable [Executable, DLL, Article, Visual C++] Visual C++ Developers Journal 01-Sep-2000, vol. 3, no. 8 by Andy Harding
	The Incredible Shrinking Executable
	 
	Andy Harding
	 
	Learn how to shrink apps and uncover missing DLLs.
	
ATL Advantage [ATL, IDispatch Interface, Article, Visual C++] Visual C++ Developers Journal 01-Sep-2000, vol. 3, no. 8 by Richard Grimes
	ATL Advantage
	 
	Richard Grimes
	 
	If you want to give ATL a good workout, you've got to know how to use 
IDispatch. Learn the basics of using ATL to implement this interface.
	
Speed Up Interprocess Communication [Interprocess Communication, Memory Mapped File, Article, Visual C++] Visual C++ Developers Journal 01-Sep-2000, vol. 3, no. 8 by Tom Creighton
	Speed Up Interprocess Communication
	 
	Tom Creighton
	 
	Need a fast mechanism for posting data? Check out Memory Mapped Files - 
the fastest, most efficient way in Win32 to share information between processes.
	
Build Web Apps With C# [Web, C#, Article, Visual C++] Visual C++ Developers Journal 01-Sep-2000, vol. 3, no. 8 by Bob Lair, Jason Lefebvre
	Build Web Apps With C#
	 
	Bob Lair and Jason Lefebvre
	 
	Wondering what it's like to work in C#? The primary developers of 
ibuyspy.com show how they developed this demo site with C# - and how you can 
use it as a starting point to develop your own applications.
	
Create and Destroy Objects Properly [Object, C++, Object Oriented Programming, Article, Visual C++] Visual C++ Developers Journal 01-Sep-2000, vol. 3, no. 8 by David Steinhoff
	Create and Destroy Objects Properly
	 
	David Steinhoff
	 
	Poor execution of your classes means your code might not work, or 
(gasp!) can't be reused. Use C++ special class functions to make your Object 
Oriented Programming a success.
	
Develop Web Applications With ATL Server [Web, ATL Server, ATL, Article, Visual C++] Visual C++ Developers Journal 01-Sep-2000, vol. 3, no. 8 by Richard Grimes
	Develop Web Applications With ATL Server
	 
	Richard Grimes
	 
	The new ATL Server technology means a bright future for Visual C++ 
development. Learn how to use ATL Server classes, and find out how to build a 
high-performance Internet Server API extension without writing much code.
	
Navigate Skillfully Through MFC [MFC, Article, Visual C++] Visual C++ Developers Journal 01-Sep-2000, vol. 3, no. 8 by Bill Wagner
	Navigate Skillfully Through MFC
	 
	Bill Wagner
	 
	Get to know how MFC is organized and learn to find the classes you need 
to solve your programming problems.
	
Form Dynamic Queries on the Fly [CDynamicAccessor, Dynamic Query, Article, Visual C++] Visual C++ Developers Journal 01-Sep-2000, vol. 3, no. 8 by Ghanshyam Naik
	Form Dynamic Queries on the Fly
	 
	Ghanshyam Naik
	 
	Discover how you can easily reuse queries built with CDynamicAccessor 
in other applications, and get functionality and flexibility you can't get from 
using static accessors.
	
Is That App Hung? Find Out [Article, Visual Basic] Visual Basic Programmer's Journal 01-Sep-2000, vol. 10, no. 10 by Karl E Peterson
	Is That App Hung? Find Out
	 
	Karl E Peterson
	 
	Determine when tasks are hung
	
Hijack System Dialogs [System Dialog, Article, Visual Basic] Visual Basic Programmer's Journal 01-Sep-2000, vol. 10, no. 10 by Karl E Peterson
	Hijack System Dialogs
	 
	Karl E Peterson
	 
	Hijack System Dialogs
	
Intrinsic 16-Bit Limitations [16-Bit, Limitation, Article, Visual Basic] Visual Basic Programmer's Journal 01-Sep-2000, vol. 10, no. 10 by Karl E Peterson
	Intrinsic 16-Bit Limitations
	 
	Karl E Peterson
	 
	Defy intrinsic 16-bit limitations.
	
Speed Up ActiveX Control References [ActiveX Control, Extender Object, Article, Visual Basic] Visual Basic Programmer's Journal 01-Sep-2000, vol. 10, no. 10 by Francesco Balena
	Speed Up ActiveX Control References
	 
	Francesco Balena
	 
	Get rid of the performance hit you incur when you employ the Extender 
Object that's wrapped around real ActiveX controls.
	
Customize Your Controls [Control, VB Extensibility Model, Article, Visual Basic] Visual Basic Programmer's Journal 01-Sep-2000, vol. 10, no. 10 by Dan Fergus
	Customize Your Controls
	 
	Dan Fergus
	 
	Use events inside the VB Extensibility Model to build a control resizer 
add-in. This way, you can set defaults for controls dropped onto forms.
	
Use the Application Object [Application Object, Article, Visual Basic] Visual Basic Programmer's Journal 01-Sep-2000, vol. 10, no. 10 by Ron Schwarz
	Use the Application Object
	 
	Ron Schwarz
	 
	When you have to handle application/OS communication, the Application 
object provides some useful functions.
	
Manage Database Transactions [Database Transaction, Data Component, Transaction, Connection Pooling, Article, Visual Basic] Visual Basic Programmer's Journal 01-Sep-2000, vol. 10, no. 10 by Eric Litwin
	Manage Database Transactions
	 
	Eric Litwin
	 
	Create Data Components that handle Transactions and enable Connection 
Pooling whether the components are deployed remotely or locally.
	
Make Application Settings Easy [Registry, INI File, Article, Visual Basic] Visual Basic Programmer's Journal 01-Sep-2000, vol. 10, no. 10 by Stan Schultes
	Make Application Settings Easy
	 
	Stan Schultes
	 
	Learn how to store and load program settings with the CSettings class 
by using either the Windows Registry or an INI file.
	
Improve MTS and COM+ Performance [MTS, COM+, Performance, Microsoft Transaction Server, Article, Visual Basic] Visual Basic Programmer's Journal 01-Sep-2000, vol. 10, no. 10 by Yasser Shohoud
	Improve MTS and COM+ Performance
	 
	Yasser Shohoud
	 
	Discover how to avoid performance problems with Microsoft Transaction 
Server (MTS), and learn five tips on building high-performance apps with COM+ 
and MTS.
	
Connect Objects [Connect Object, Observer Pattern, Mediator Pattern, Article, Visual Basic] Visual Basic Programmer's Journal 01-Sep-2000, vol. 10, no. 10 by Stephen Hopkins
	Connect Objects
	 
	Stephen Hopkins
	 
	The Observer Pattern lets your objects broadcast any changes happening 
to them. You can easily connect objects that pass information between them by 
combining the Observer pattern with the Mediater Pattern.
	
Replace API Calls Using WMI [WMI, Windows Management Interface, System Information, Article, Visual Basic] Visual Basic Programmer's Journal 01-Sep-2000, vol. 10, no. 10 by Ken Getz
	Replace API Calls Using WMI
	 
	Ken Getz
	 
	Avoid those complex API calls by using the Windows Management Interface 
(WMI) to access computer information. Learn how to investigate the WMI classes 
and objects and use WMI to get useful System Information.
	
Extend SQL Server [SQL Server, OLE Automation, Stored Procedure, DLL, Article, Visual Basic] Visual Basic Programmer's Journal 01-Sep-2000, vol. 10, no. 10 by Dianne Siebold
	Extend SQL Server
	 
	Dianne Siebold
	 
	Find out how to extend the functionality of SQL Server by creating and 
calling extended stored procedures. Or use SQL Server's OLE Automation Stored 
Procedures to call functions in existing DLLs.
	
Synchronize Your Apps [Synchronize, Article, Visual Basic] Visual Basic Programmer's Journal 01-Sep-2000, vol. 10, no. 10 by Francesco Balena
	Synchronize Your Apps
	 
	Francesco Balena
	 
	There's a way to provide communication and synchronization among 
multiple executables when you break up large and complex Windows apps. Turn to 
Windows messages for the solution.
	
Web Developer [Web, Active Server Pages, Article, Visual Basic] Visual Basic Programmer's Journal 01-Sep-2000, vol. 10, no. 10 by Francesco Balena
	Web Developer
	 
	Francesco Balena
	 
	Use these 10 techniques to create robust and efficient Active Server 
Pages apps.
	
Microsoft .NET Framework Delivers the Platform for an Integrated, Service-Oriented Web [.NET, Article, Visual C++] MSDN Magazine 01-Sep-2000, vol. 15, no. 9 by Jeffrey Richter
	Microsoft .NET Framework Delivers the Platform for an Integrated, 
Service-Oriented Web
	 
	Jeffrey Richter
	 
	
	
The Programmable Web: Web Services Provides Building Blocks for the Microsoft .NET Framework [Web Services, .NET, Article, Visual C++] MSDN Magazine 01-Sep-2000, vol. 15, no. 9 by Mary Kirtland
	The Programmable Web: Web Services Provides Building Blocks for the 
Microsoft .NET Framework
	 
	Mary Kirtland
	 
	
	
Visual Studio .NET: Build Web Apps Faster and Easier Using Web Services and XML [Visual Studio, .NET, Web, Web Services, XML, Article, Visual C++] MSDN Magazine 01-Sep-2000, vol. 15, no. 9 by Dave Mendlen
	Visual Studio .NET: Build Web Apps Faster and Easier Using Web Services 
and XML
	 
	Dave Mendlen
	 
	
	
Sharp New Language: C# Offers the Power of C++ and Simplicity of Visual Basic [C#, C++, Visual Basic, Article, Visual C++] MSDN Magazine 01-Sep-2000, vol. 15, no. 9 by Joshua Trupin
	Sharp New Language: C# Offers the Power of C++ and Simplicity of Visual 
Basic
	 
	Joshua Trupin
	 
	
	
Active Server Pages+: ASP+ Improves Web App Deployment, Scalability, Security, and Reliability [Active Server Pages+, ASP+, Web, Scalability, Security, Article, Visual C++] MSDN Magazine 01-Sep-2000, vol. 15, no. 9 by Dave Sussman
	Active Server Pages+: ASP+ Improves Web App Deployment, Scalability, 
Security, and Reliability
	 
	Dave Sussman
	 
	
	
Marshaling Your Data: Efficient Data Transfer Techniques Using COM and Windows 2000 [Marshaling, Data Transfer, COM, Windows 2000, Article, Visual C++] MSDN Magazine 01-Sep-2000, vol. 15, no. 9 by Richard Grimes
	Marshaling Your Data: Efficient Data Transfer Techniques Using COM and 
Windows 2000
	 
	Richard Grimes
	 
	
	
Targeting Frames [Frame, Article, Visual C++] MSDN Magazine 01-Sep-2000, vol. 15, no. 9 by Robert Hess
	Targeting Frames
	 
	Robert Hess
	 
	
	
Hidden Fields [Article, Visual C++] MSDN Magazine 01-Sep-2000, vol. 15, no. 9 by Robert Hess
	Hidden Fields
	 
	Robert Hess
	 
	
	
Dropdown Menu Positioning [Menu, Article, Visual C++] MSDN Magazine 01-Sep-2000, vol. 15, no. 9 by Robert Hess
	Dropdown Menu Positioning
	 
	Robert Hess
	 
	
	
Distilling Other Web Sites [Web, Article, Visual C++] MSDN Magazine 01-Sep-2000, vol. 15, no. 9 by Robert Hess
	Distilling Other Web Sites
	 
	Robert Hess
	 
	
	
Client-side Environment for ASP Pages [ASP, Article, Visual C++] MSDN Magazine 01-Sep-2000, vol. 15, no. 9 by Dino Esposito
	Client-side Environment for ASP Pages
	 
	Dino Esposito
	 
	
	
MSXML 3.0 Supports XPath 1.0, XSLT 1.0, XDR, and SAX2 [MSXML, XPath, XSLT, XDR, SAX2, Article, Visual C++] MSDN Magazine 01-Sep-2000, vol. 15, no. 9 by Aaron Skonnard
	MSXML 3.0 Supports XPath 1.0, XSLT 1.0, XDR, and SAX2
	 
	Aaron Skonnard
	 
	
	
Using Visio 2000 Enterprise Edition to Model Applications [Visio 2000, Article, Visual C++] MSDN Magazine 01-Sep-2000, vol. 15, no. 9 by Ken Spencer
	Using Visio 2000 Enterprise Edition to Model Applications
	 
	Ken Spencer
	 
	
	
Automating COM+ Administration [COM+, Administration, Article, Visual C++] MSDN Magazine 01-Sep-2000, vol. 15, no. 9 by Ted Pattison
	Automating COM+ Administration
	 
	Ted Pattison
	 
	
	
A Tale of Real-world Debugging [Debugging, Article, Visual C++] MSDN Magazine 01-Sep-2000, vol. 15, no. 9 by Matt Pietrek
	A Tale of Real-world Debugging
	 
	Matt Pietrek
	 
	
	
CPopupText for Home-grown Tooltips [Tooltip, Article, Visual C++] MSDN Magazine 01-Sep-2000, vol. 15, no. 9 by Paul DiLascia
	CPopupText for Home-grown Tooltips
	 
	Paul DiLascia
	 
	
	
Controlling Application Instantiation [Instantiation, Article, Visual C++] MSDN Magazine 01-Sep-2000, vol. 15, no. 9 by Paul DiLascia
	Controlling Application Instantiation
	 
	Paul DiLascia
	 
	
	
Effective Project Mangement [Project Mangement, Article, Lotus Notes] Notes Advisor 01-Sep-2000 by Larry Palm
Project Management - Lotus Notes & Domino Advisor - September 2000 
	Effective Project Mangement
	 
	Larry Palm
	
Inside the R5 Outline [Outline, Article, Lotus Notes] Notes Advisor 01-Sep-2000 by Hans van der Burg
Web Development - Lotus Notes & Domino Advisor - September 2000 
	Inside the R5 Outline
	 
	Hans van der Burg
	
Code for Better Performance [Performance, Article, Lotus Notes] Notes Advisor 01-Sep-2000 by Matt Holthe
Notes Development - Lotus Notes & Domino Advisor - September 2000 
	Code for Better Performance
	 
	Matt Holthe
	
Notes to Access Data Integration without ODBC [ODBC, Article, Lotus Notes] Notes Advisor 01-Sep-2000 by David Kochan
Data Integration - Lotus Notes & Domino Advisor - September 2000 
	Notes to Access Data Integration without ODBC
	 
	David Kochan
	
FTP from LotusScript [FTP, LotusScript, Article, Lotus Notes] Notes Advisor 01-Sep-2000 by Scot Haberman
Notes Development - Lotus Notes & Domino Advisor - September 2000 
	FTP from LotusScript
	 
	Scot Haberman
	
Take Domino Applications to the Palm Pilot [Domino, Palm Pilot, Article, Lotus Notes] Notes Advisor 01-Sep-2000 by Bonnie Jo Schneider
Handheld Computing - Lotus Notes & Domino Advisor - September 2000 
	Take Domino Applications to the Palm Pilot
	 
	Bonnie Jo Schneider
	
Using the XML DOM with Visual C++ and COM [Article, Visual C++] www.earthweb.com 01-Sep-2000 by Tom Archer
	Using the XML DOM with Visual C++ and COM
	 
	Tom Archer
	 
	1-Sep-2000
	 
	1-Sep-2000
	 
	Learn how to use the XML Document Object Model (DOM) to load an XML 
document and iterate through its nodes using Visual C++ and COM.
	
Connection Points And Asynchronous calls, Part I [COM, DCOM, Article, Visual C++] www.codeproject.com 31-Aug-2000 by Ashish Dhar
	Connection Points And Asynchronous calls, Part I
	 
	Ashish Dhar
	 
	A tutorial on connections points and Aynchronous calls
	
A simple XML Parser [C++, MFC, STL, XML, Parser, Article, Visual C++] www.codeproject.com 31-Aug-2000 by Michael A Barnhart
	A simple XML Parser
	 
	Michael A Barnhart
	 
	A class to read and write non validated XML files
	
3D Text FX [Article, Visual Basic] visualbasic.about.com 31-Aug-2000
	31-Aug-2000
	 
	31-Aug-2000
	  
	3D Text FX
	 
	In the second part of our 'spice up your apps' series, I'll be taking a 
look at some quick'n'dirty code that makes it easy to print 3D text on your 
form without resorting to any third-party controls.
	
Direct Input 7 Joystick Class [DirectX, Article, Visual C++] www.codeguru.com 31-Aug-2000 by Jason Brooks
	Direct Input 7 Joystick Class
	 
	Jason Brooks
	 
	Class that utilizes DirectX7 to control multiple Joystick Controls.
	
Direct Input 7 Keyboard Class [DirectX, Article, Visual C++] www.codeguru.com 31-Aug-2000 by Jason Brooks
	Direct Input 7 Keyboard Class
	 
	Jason Brooks
	 
	DirectInput is essential for responsive games. This article presents a 
class to read the keyboard.
	
Code to Calculate Time Left on Timer [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 31-Aug-2000 by Dustin Fast
	Code to Calculate Time Left on Timer
	 
	Dustin Fast
	 
	Enables you to display to the end-user how much time is left on a timer
	
Limiting Applications to a Single Instance [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 31-Aug-2000 by Jean-Claude Garreau
	Limiting Applications to a Single Instance
	 
	Jean-Claude Garreau
	 
	Standard concept with a twist ; in this version if the app is running 
it is brought to the foreground and passed any command-line arguments
	
Non-Modal File Dialog Class [Dialog, Article, Visual C++] www.codeguru.com 31-Aug-2000 by John McManus
	Non-Modal File Dialog Class
	 
	John McManus
	 
	Nicely done class that allows for non-modal display of the common file 
dialog
	
Printing in OpenGL [OpenGL, Article, Visual C++] www.codeguru.com 31-Aug-2000 by Jongwhan Lee
	Printing in OpenGL
	 
	Jongwhan Lee
	 
	Illustrates how to render images using OpenGL
	
Non-Modal File Dialog Class [Article, Visual C++] www.earthweb.com 31-Aug-2000 by John McManus
	Non-Modal File Dialog Class
	 
	John McManus
	 
	31-Aug-2000
	 
	31-Aug-2000
	 
	Nicely done class that allows for non-modal display of the common file 
dialog
	
Direct Input 7 Keyboard Class [Article, Visual C++] www.earthweb.com 31-Aug-2000 by Jason Brooks
	Direct Input 7 Keyboard Class
	 
	Jason Brooks
	 
	31-Aug-2000
	 
	31-Aug-2000
	 
	DirectInput is essential for responsive games. This article will help 
ease the transition of DOS games programmers.
	
Direct Input 7 Joystick Class [Article, Visual C++] www.earthweb.com 31-Aug-2000 by Jason Brooks
	Direct Input 7 Joystick Class
	 
	Jason Brooks
	 
	31-Aug-2000
	 
	31-Aug-2000
	 
	DirectX isn't the most friendly of API's available, so here's a simple 
class that you can use to utilise DirectX7 for multiple Joystick Control.
	
A Network Chat Program using Windows Sockets [Internet, Network, Article, Visual C++] www.codeproject.com 30-Aug-2000 by Shanker Chandrabose
	A Network Chat Program using Windows Sockets
	 
	Shanker Chandrabose
	 
	A program that allows users across a homogeneous network to communicate 
with each other using the TCP/IP protocol
	
Level Add-in [Macro, Add-in, Article, Visual C++] www.codeproject.com 30-Aug-2000 by Red Pilgrim
	Level Add-in
	 
	Red Pilgrim
	 
	An add-in that helps you hide 'inactive' pieces of your code in include 
files
	
MFC Grid Control 2.21 [Control, MFC, Grid Control, Article, Visual C++] www.codeproject.com 30-Aug-2000 by Chris Maunder
	MFC Grid Control 2.21
	 
	Chris Maunder
	 
	A fully featured MFC grid control for displaying tabular data. The grid 
is a custom control derived from CWnd
	
Using the Grid Control in a Document/View framework [Control, Grid Control, Document/View, Article, Visual C++] www.codeproject.com 30-Aug-2000 by Chris Maunder
	Using the Grid Control in a Document/View framework
	 
	Chris Maunder
	 
	A simple tutorial that demonstrates how to use the grid control in a 
doc/view application.
	
Shell Secrets [Article, Visual Basic] visualbasic.about.com 30-Aug-2000
	30-Aug-2000
	 
	30-Aug-2000
	  
	Shell Secrets
	 
	In this article, your Visual Basic Guide let's you into a little secret 
buried within Internet Explorer. As well as giving VB developers the chance to 
embed a complete browser in their own applications, IE also allows coders to 
interface with the Windows shell to a degree only previously possible by 
delving into subclassing and callbacks.
	
ProTracker 1.0 [Article, Visual C++] www.mindcracker.com 30-Aug-2000 by KSheeraj Kumud
	ProTracker 1.0
	 
	A dialog based simple application which displays all running processes 
of your machine. It's a sub module of SysUtil Advanced.
	 
	KSheeraj Kumud
	 
	30-Aug-2000
	 
	30-Aug-2000
	
Simple ODBC classes without MFC [Database, ODBC, MFC, Article, Visual C++] www.codeproject.com 29-Aug-2000 by Justin Kirby
	Simple ODBC classes without MFC
	 
	Justin Kirby
	 
	A collection of simple classes to connect to ODBC capable DBMS and 
share those connections
	
Getting Your First Visual Basic Job [Article, Visual Basic] visualbasic.about.com 29-Aug-2000
	29-Aug-2000
	 
	29-Aug-2000
	  
	Getting Your First Visual Basic Job
	 
	Do you want to convert your Visual Basic coding knowledge into wads of 
cash? If so, check out this insightful article from Vickie McCullough, who 
offers tips to help you find a high paid tech job in minutes!
	
Hey Windows, Call me! [Article, Delphi] delphi.about.com 29-Aug-2000
	29-Aug-2000
	 
	29-Aug-2000
	 
	Hey Windows, Call me!
	 
	Let Windows work for you: implementing function callbacks with Delphi.
	
ATL Collection Wizard [ATL, ATL Collection Wizard, ATL Object Wizard, COM, Article, Visual C++] www.codeproject.com 28-Aug-2000 by David Peterson
	ATL Collection Wizard
	 
	David Peterson
	 
	ATL Object Wizard that creates a collection of other COM objects
	
CWebImageDC [Font, GDI, GUI, Memory, Article, Visual C++] www.codeproject.com 28-Aug-2000 by Randy More
	CWebImageDC
	 
	Randy More
	 
	Provides a Memory based DC into which an image may be drawn using 
standard GDI calls
	
Download a URL using UrlDownloadToFile [Article, Visual C++] www.mindcracker.com 28-Aug-2000 by Jeniffer P Walker
	Download a URL using UrlDownloadToFile
	 
	Download a file as bits and save as a local file.
	 
	Jeniffer P Walker
	 
	28-Aug-2000
	 
	28-Aug-2000
	
SysUtil 1.0 [Article, Visual C++] www.mindcracker.com 28-Aug-2000 by Mahesh Chand
	SysUtil 1.0
	 
	A dialog based simple application which gives you information about 
your system such as user, memory, OS etc. Update is coming soon.
	 
	Mahesh Chand
	 
	28-Aug-2000
	 
	28-Aug-2000
	
New version of Antechinus C# Programmers' Editor [C#, Article, Visual C++] www.codeproject.com 27-Aug-2000 by Alex Davidovic
	New version of Antechinus C# Programmers' Editor
	 
	Alex Davidovic
	 
	C Point has announced the version 2.2 of Antechinus C# Editor, the 
first professional developers' editor for the exciting new Microsoft's C# (C 
Sharp) programming language.
	
Launching an Application on Windows Startup [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 27-Aug-2000 by Partha Sarathi Dhar
	Launching an Application on Windows Startup
	 
	Partha Sarathi Dhar
	 
	Great little application (with source) that illustrates how to specify 
an application to launch upon Windows startup
	
Office 2000-like Dockable Menu Bar and Intelligent Menus [Menu, Article, Visual C++] www.codeguru.com 27-Aug-2000 by Piero Viano
	Office 2000-like Dockable Menu Bar and Intelligent Menus
	 
	Piero Viano
	 
	Create your own "intelligent menus" like Windows 2000 and Office 2000 !!
	
Office 2000-like Dockable Menu Bar and Intelligent Menus [Article, Visual C++] www.earthweb.com 27-Aug-2000 by Piero Viano
	Office 2000-like Dockable Menu Bar and Intelligent Menus
	 
	Piero Viano
	 
	27-Aug-2000
	 
	27-Aug-2000
	 
	Create your own "intelligent menus" like Windows 2000 and Office 2000!!
	
MB MouseHelper Control [Mouse, Control, Article, Visual Basic] www.vb2themax.com 26-Aug-2000 by Marco Bellinaso
	MB MouseHelper Control
	  
	26-Aug-2000
	 
	26-Aug-2000
	 
	Marco Bellinaso
	 
	This ActiveX gives you the complete control over the mouse. The 
MouseEnter and MouseLeave events tell you when the mouse cursor enters or 
leaves any control on the form, which lets you create cool hot-tracking 
effects. The MouseWheel event fires when the mouse wheel is rotated, so you can 
use this event to let the end user scroll a horizontal scroll or zoom in/out, 
as in Internet Explorer. There are also several methods that let you move, snap 
or clip the cursor where you want, to load an animated cursor, to simulate the 
Click, DblClick, MouseDown, MouseUp events, as well as to retrieve all the 
information related to the mouse, such as the cursor position, the button 
state, the swapped buttons state, and the window or the control under the 
cursor.
	
Using the Visual Studio 6.0 Driver Build Environment [System, Article, Visual C++] www.codeguru.com 26-Aug-2000 by Christiaan Ghijselinck
	Using the Visual Studio 6.0 Driver Build Environment
	 
	Christiaan Ghijselinck
	 
	Explores how to use the standard Visual Studio environment while 
developing device drivers
	
SmartHelp 2.0 [Macro, Update, Article, Visual C++] www.codeguru.com 26-Aug-2000 by Goran Mitrovic
	SmartHelp 2.0
	 
	Goran Mitrovic
	 
	Update to version 2.0
	
SmartHelp 1.01 [Article, Visual C++] www.earthweb.com 26-Aug-2000 by Gorin Mitrovic
	SmartHelp 1.01
	 
	Gorin Mitrovic
	 
	26-Aug-2000
	 
	26-Aug-2000
	 
	You probably discovered how complex MSDN Library is - there are 
thousands of articles nicely sorted in its Contents Tree. However, have you 
noticed how hard is it to find articles you used, every time you resume work on 
your project? If you had, I believe you'll find SmartHelp (very) useful
	
Drawing Transparent Bitmap with ease with on the fly masks in MFC [Bitmap, Palette, MFC, Article, Visual C++] www.codeproject.com 25-Aug-2000 by Raja Segar
	Drawing Transparent Bitmap with ease with on the fly masks in MFC
	 
	Raja Segar
	 
	A few routines that makes implementing the ideas in Chris Becke's GDI 
tutorial a snap
	
Select Folder dialog with a difference [Dialog, Windows Programming, Folder, Article, Visual C++] www.codeproject.com 25-Aug-2000 by Sridhar Rao
	Select Folder dialog with a difference
	 
	Sridhar Rao
	 
	The windows 'Select Folder' dialog with some extra functionality
	
CreateRegionFromFile [Font, GDI, GUI, Article, Visual C++] www.codeproject.com 25-Aug-2000 by Yuriy Zaporozhets
	CreateRegionFromFile
	 
	Yuriy Zaporozhets
	 
	Very primitive function that creates region from *.bmp files
	
KanjiFont [Font, GDI, GUI, Article, Visual C++] www.codeproject.com 25-Aug-2000 by Eric Crahen
	KanjiFont
	 
	Eric Crahen
	 
	Display Chinese & Japanse characters on unicode & non-unicode systems
	
Replace in Files AddIn [Macro, Add-in, Article, Visual C++] www.codeproject.com 25-Aug-2000 by Daniel Zilcsak
	Replace in Files AddIn
	 
	Daniel Zilcsak
	 
	Search and Replace in multiple files Add-in for Visual C++ 6.0
	
Colored/Blinking Controls and Dialogs with any Font [Control, Color, Dialog, Font, Article, Visual C++] www.codeproject.com 25-Aug-2000 by Yury Goltsman
	Colored/Blinking Controls and Dialogs with any Font
	 
	Yury Goltsman
	 
	The simplest way to change color, font or set blinking mode for any 
standard control
	
Fancy Forms [Article, Visual Basic] visualbasic.about.com 25-Aug-2000
	25-Aug-2000
	 
	25-Aug-2000
	  
	Fancy Forms
	 
	Are you tired of the dull default grey forms in Visual Basic? Do you 
want to spice up your application interface with only a few lines of VB code? 
In this article, your VB Guide uncovers a handy code tip to beautify your 
dreary apps.
	
SCSI Information DLL [Tool, Update, Article, Visual C++] www.codeguru.com 25-Aug-2000 by Michael Becker
	SCSI Information DLL
	 
	Michael Becker
	 
	Exported GetDriveNumber function, returning 0-based driver number for 
specified SCSI parameter
	
Color Listbox [Listbox, Article, Visual C++] www.codeguru.com 25-Aug-2000 by Rick Jones
	Color Listbox
	 
	Rick Jones
	 
	Listbox where you can use a color strip in a colomn as a kind of legend 
for the text's meaning
	
Color Listbox [Article, Visual C++] www.earthweb.com 25-Aug-2000 by Rick Jones
	Color Listbox
	 
	Rick Jones
	 
	25-Aug-2000
	 
	25-Aug-2000
	 
	Listbox where you can use a color strip in a column as a kind of legend 
for the text's meaning
	
Tool Group Manager [Toolbar, Docking Window, Template, Article, Visual C++] www.codeproject.com 24-Aug-2000 by Craig Henderson
	Tool Group Manager
	 
	Craig Henderson
	 
	A reusable Template class for managing multiple toolbars, only one of 
which is displayed at a time.
	
A WTL-based Font preview combo box [Windows Template Library, WTL, Font, Article, Visual C++] www.codeproject.com 24-Aug-2000 by Ramon Smits
	A WTL-based Font preview combo box
	 
	Ramon Smits
	 
	A font combo box that previews the fonts in the dropdown view
	
A Java Class Browser written in C++ using WTL [JCB, Article, Visual C++] www.codeproject.com 24-Aug-2000 by Franky Braem
	A Java Class Browser written in C++ using WTL
	 
	Franky Braem
	 
	A Java Class Browser written in C++ using WTL
	
Antechinus C# Editor [Tool, Article, Visual C++] www.codeguru.com 24-Aug-2000 by Alex Davidovic
	Antechinus C# Editor
	 
	Alex Davidovic
	 
	The very first professional C# editor, supporting projects, color-coded 
syntax and compilation/execution from a fully integrated IDE.
	
Implementing Band Objects using ATL HTML Contol [Article, Visual C++] www.mindcracker.com 24-Aug-2000 by Neeraj Srivastava
	Implementing Band Objects using ATL HTML Contol
	 
	Sample code attached.
	 
	Neeraj Srivastava
	 
	24-Aug-2000
	 
	24-Aug-2000
	
Using button controls in an application [Button Control, Article, Visual C++] www.codeproject.com 23-Aug-2000 by Chris Smith
	Using button controls in an application
	 
	Chris Smith
	 
	How to get a button control wired-in and working
	
Using the CFindReplaceDialog class [Dialog, Windows Programming, CFindReplaceDialog, Article, Visual C++] www.codeproject.com 23-Aug-2000 by Tibor Blazko
	Using the CFindReplaceDialog class
	 
	Tibor Blazko
	 
	How to use the CFindReplaceDialog dialog for text searching
	
Changing toolbars dynamically at runtime [Toolbar, Docking Window, Article, Visual C++] www.codeproject.com 23-Aug-2000 by Masoud Samimi
	Changing toolbars dynamically at runtime
	 
	Masoud Samimi
	 
	A simple tutorial that shows how to dynamically replace toolbars at 
runtime
	
Lon Fisher on .NET 23 August 2000 [Interview, .NET, Article, Visual C++] www.codeproject.com 23-Aug-2000 by Chris Maunder
	Lon Fisher on .NET 23 August 2000
	 
	Chris Maunder
	 
	Lon Fisher answers your questions on .NET
	
Command Routing for Popup Menu [Menu, Pop-up Menu, Article, Visual C++] www.codeproject.com 23-Aug-2000 by Noel Dillabough
	Command Routing for Popup Menu
	 
	Noel Dillabough
	 
	Handle grayed/disabled/checked menu items using the familiar OnUpdate 
interface
	
Pie Progress Control [Control, Progress Control, Article, Visual C++] www.codeproject.com 23-Aug-2000 by Norm Almond
	Pie Progress Control
	 
	Norm Almond
	 
	A progress control with a difference
	
Enhanced ProgressBar Control v1.1 [Control, Article, Visual C++] www.codeguru.com 22-Aug-2000 by Yury Goltsman
	Enhanced ProgressBar Control v1.1
	 
	Yury Goltsman
	 
	Incredible progress control class with full-featured testing 
application!
	
Color Chooser [Article, Visual C++] www.mindcracker.com 22-Aug-2000 by Rajiv Ramachandran
	Color Chooser
	 
	Corel PhotoHouse-like Color Chooser
	 
	Rajiv Ramachandran
	 
	22-Aug-2000
	 
	22-Aug-2000
	
File Preview dialog class [Article, Visual C++] www.mindcracker.com 22-Aug-2000 by Rajiv Ramachandran
	File Preview dialog class
	 
	Rajiv Ramachandran
	 
	22-Aug-2000
	 
	22-Aug-2000
	
Using ADSI to Mirror Exchange Users [ADSI, Exchange, Article, Visual Basic] www.earthweb.com 22-Aug-2000 by Doyle Vann
	Using ADSI to Mirror Exchange Users
	 
	Doyle Vann
	 
	22-Aug-2000
	 
	22-Aug-2000
	 
	Coordinating data between applications can be tricky, even with 
facilities like Microsoft's Active Directory Services Interface. Here's a way 
around some of the pitfalls using a SQL Server table that's periodically 
updated with a background process.
	
Who Wants to be a Delphi Guru - The trivia game. [Article, Delphi] delphi.about.com 22-Aug-2000
	22-Aug-2000
	 
	22-Aug-2000
	 
	Who Wants to be a Delphi Guru - The trivia game.
	 
	Ever wonder what 'Who Wants to be a Millionaire' might look like if 
there were only Delphi programming questions? Take my quiz and find out how you 
would do...
	
Comparing C and C++ [Article, Visual C++] cplus.about.com 21-Aug-2000
	21-Aug-2000
	 
	21-Aug-2000
	  
	Comparing C and C++
	 
	A look at the similarities and differences in C and C++
	
CSelf XResource [DLL, Article, Visual C++] www.codeguru.com 21-Aug-2000 by Michael Becker
	CSelf XResource
	 
	Michael Becker
	 
	Class for self extracting binary resources
	
PocketWine [CE Programming, Article, Visual C++] www.codeguru.com 21-Aug-2000 by Christian Skovdal Andersen
	PocketWine
	 
	Christian Skovdal Andersen
	 
	A wine database application sample for Pocket Windows
	
A C++ wrapper for TWAIN [Article, Visual C++] www.mindcracker.com 21-Aug-2000 by Rajiv Ramachandran
	A C++ wrapper for TWAIN
	 
	Add scanner support to your VC++ application
	 
	Rajiv Ramachandran
	 
	21-Aug-2000
	 
	21-Aug-2000
	
PocketWine [Article, Visual C++] www.earthweb.com 21-Aug-2000 by Christian Skovdal
	PocketWine
	 
	Christian Skovdal
	 
	21-Aug-2000
	 
	21-Aug-2000
	 
	A wine database application sample for Pocket Windows.
	
CSelf XResource [Article, Visual C++] www.earthweb.com 21-Aug-2000 by Michael Becker
	CSelf XResource
	 
	Michael Becker
	 
	21-Aug-2000
	 
	21-Aug-2000
	 
	A look at CSelf XResource
	
Transparency without Source Code [Windows 2000, Article, Visual C++] www.codeproject.com 20-Aug-2000 by Bernhard Hammer
	Transparency without Source Code
	 
	Bernhard Hammer
	 
	Adding transparency to any window, even if you don't have its source
	
SmartHelp 2.0 [Macro, Article, Visual C++] www.codeguru.com 20-Aug-2000 by Goran Mitrovic
	SmartHelp 2.0
	 
	Goran Mitrovic
	 
	Fantastic Add-In that interfaces with MSDN Library
	
CGraph: Graph Class for Plotting Groups of Data [Control, Update, Article, Visual C++] www.codeguru.com 20-Aug-2000 by Brian Convery
	CGraph: Graph Class for Plotting Groups of Data
	 
	Brian Convery
	 
	Extremely useful graph and chart class for plotting groups of data
	
CGraph - Graph Class for Plotting Groups of Data [Article, Visual C++] www.earthweb.com 20-Aug-2000 by Brian Convery
	CGraph - Graph Class for Plotting Groups of Data
	 
	Brian Convery
	 
	20-Aug-2000
	 
	20-Aug-2000
	 
	Have you ever tried to find a usable graph and chart class for plotting 
groups of data? I have. And when trying to find some cheap or free classes for 
plotting graph data, I found very few.
	
URLLabel Control [Control, URL, Article, Visual Basic] www.vb2themax.com 19-Aug-2000 by Francesco Duranti
	URLLabel Control
	  
	19-Aug-2000
	 
	19-Aug-2000
	 
	Francesco Duranti
	 
	This control is a label/picture with hyperlink functionality. All 
you've to do is to place URLLabel on a form, choose the style (Underline, 
NoUnderline, GotFocus, Graphic), the color or picture for non-visited, visited, 
mouseover status and the URL/Caption. You can also link the URL/caption text or 
display the URL as the ToolTipText of the control, and use the Execute method 
to manually launch the URL. The BeforeExecute event let you change the URL on 
the fly as well as cancel the operation. The AfterExecute event will be 
launched upon completion of the Execute event, if you didn't cancel it.
	
Dialog Resize Helper [Dialog, Article, Visual C++] www.codeguru.com 19-Aug-2000 by Stephan Keil
	Dialog Resize Helper
	 
	Stephan Keil
	 
	Easiest way yet to have a "resizable dialog" where controls more and 
resize according to your specs
	
Code to View/Hide Status Bar in SDI and MDI Applications [Status Bar, Article, Visual C++] www.codeguru.com 19-Aug-2000 by Volker Bartheld
	Code to View/Hide Status Bar in SDI and MDI Applications
	 
	Volker Bartheld
	 
	OnViewStatusBar message handler that overrides the standard View/Hide 
functionality so that the application window changes it's height accordingly 
and preserves the size of the visible client area.
	
Code to View/Hide Status Bar in SDI and MDI Applications [Article, Visual C++] www.earthweb.com 19-Aug-2000 by Volker Bartheld
	Code to View/Hide Status Bar in SDI and MDI Applications
	 
	Volker Bartheld
	 
	19-Aug-2000
	 
	19-Aug-2000
	 
	Here's a little handler for the OnViewStatusBar message handler to 
change the "View/Hide Status Bar" menu option so that the application (main) 
window changes its height according to the size of the visible client area.
	
Dialog Resize Helper [Article, Visual C++] www.earthweb.com 19-Aug-2000 by Stephan Keil
	Dialog Resize Helper
	 
	Stephan Keil
	 
	19-Aug-2000
	 
	19-Aug-2000
	 
	Easiest way yet to have a "resizable dialog" that controls resize 
according to your specs
	
PocketWine [CE Programming, Database, Article, Visual C++] www.codeproject.com 18-Aug-2000 by Christian Skovdal Andersen
	PocketWine
	 
	Christian Skovdal Andersen
	 
	A wine Database for Pocket Windows
	
Timed Update Edit Control [Edit Control, Article, Visual C++] www.codeproject.com 18-Aug-2000 by Craig Henderson
	Timed Update Edit Control
	 
	Craig Henderson
	 
	An edit control to periodically validate and reformat it's contents
	
Report Control: An Outlook 2000-Style SuperGrid Control [Listview, Update, Article, Visual C++] www.codeguru.com 18-Aug-2000 by Maarten Hoeben
	Report Control: An Outlook 2000-Style SuperGrid Control
	 
	Maarten Hoeben
	 
	Incredible array of updates and fixes (see version history in article)
	
Tips for using Dynamic Link Libraries (DLLs) with MFC [DLL, Article, Visual C++] www.codeguru.com 18-Aug-2000 by xicoloko
	Tips for using Dynamic Link Libraries (DLLs) with MFC
	 
	xicoloko
	 
	Tips on using DLLs from MFC applications
	
Tips for using Dynamic Link Libraries (DLLs) with MFC [Article, Visual C++] www.earthweb.com 18-Aug-2000
	Tips for using Dynamic Link Libraries (DLLs) with MFC
	 
	-N/A
	 
	18-Aug-2000
	 
	18-Aug-2000
	 
	This documents intends to give a beginner some knowledge that can be 
helpfull when designing a project to the Windows plataform.
	
ucCalendar .... Calendar control [Calendar, Visual Basic, VB UserControl] www.codeoftheweek.com 17-Aug-2000, no. 127
Requirements

Visual Basic 5.0 or higher.

In this Issue

In this issue we discuss how enhance the calendar control we
created last week.

ucCalendar

See issue number 126 for the basic description of this control.

This week we have enhanced this control to have built-in methods
for moving forward and backward within the calendar.  It now
supports move forward and backward one month and one year.  It
also supports a quick month change feature.  If you click on the
month of the calendar you will get a drop down list of all
available months.  This allows a very fast way to switch months.

The mechanism used to implement these features is very
extensible.  The source code is commented heavily in order to
explain some of the processes as you view the source code.

The place to start is to look at the CalendarCommand enumerator.
This is where all the commands are added in order to implement new
features.  Let's say you want to add a feature to highlight a
column when you click on the day of the week.  You can add a
command called ccHighlightColumn to the CalendarCommand enum.  In
the RedrawCalendar routine you would need to add a call to
AddRangeCheck with the dimensions of the day of the week cell and
the command ccHighlightColumn.  This would add the range to the
range array (maClickRanges) which is used in CheckMouseClick.  In
CheckMouseClick you would add your command to the select case
statement with the logic that highlights the column.  Take a look
at the source code.  It really is fairly simple.  The hardest part
is figuring out the dimensions of the range you want to define for
a command.

There are many additional ways this control can be enhanced.  If
an enhanced version of this control would be useful to you, please
email us at calendar@codeoftheweek.com


Properties

All of these properties were discussed last week.  We have left
them out in order to save space since the source code in this
issue is pretty long.  The issue can be read at
http://www.codeoft ... (cont.)
Jeff Prosise on .NET [Interview, .NET, Article, Visual C++] www.codeproject.com 17-Aug-2000 by Chris Maunder
	Jeff Prosise on .NET
	 
	Chris Maunder
	 
	Jeff Prosise answers your questions on .NET
	
Converting the CONNECT Sample to a Local Server [ATL, COM, Article, Visual C++] www.codeguru.com 17-Aug-2000 by Paul Shaffer
	Converting the CONNECT Sample to a Local Server
	 
	Paul Shaffer
	 
	Major update of article and demo code to fix bugs when running NT or 
Win2K
	
Window Handle Picker Sample [Sample, Article, Visual C++] www.codeguru.com 17-Aug-2000 by Mike Marquet
	Window Handle Picker Sample
	 
	Mike Marquet
	 
	"Spy"-like tool that displays a window's styles when you drag the mouse 
over any window
	
Converting the CONNECT Sample to a Local Server [Article, Visual C++] www.earthweb.com 17-Aug-2000 by Paul Shaffer
	Converting the CONNECT Sample to a Local Server
	 
	Paul Shaffer
	 
	17-Aug-2000
	 
	17-Aug-2000
	 
	Learn how to use connection points between different processes with ATL.
	
CSizingControlBar: a resizable Control bar [Toolbar, Docking Window, Control, Article, Visual C++] www.codeproject.com 16-Aug-2000 by Cristi Posea
	CSizingControlBar: a resizable Control bar
	 
	Cristi Posea
	 
	DevStudio-like docking window
	
Network Development Kit [Internet, Network, Article, Visual C++] www.codeproject.com 16-Aug-2000 by S?bastien Lachance, Yannick L?tourneau
	Network Development Kit
	 
	S?bastien Lachance and Yannick L?tourneau
	 
	Network Development Kit is a set of simple classes for a client-server 
architecture.
	
Macro For Stepping Into #import Wrapped COM Methods [Macro, Article, Visual C++] www.codeguru.com 16-Aug-2000 by Graham Jest
	Macro For Stepping Into #import Wrapped COM Methods
	 
	Graham Jest
	 
	Very useful macro that by passes the wrapper class' implementation and 
directly into the method you want to view
	
WTL: Button Menu [ATL, COM, Update, Article, Visual C++] www.codeguru.com 16-Aug-2000 by David Peterson
	WTL: Button Menu
	 
	David Peterson
	 
	Fixed a bug that resulted in two different CButtonMenu controls on the 
same dialog always painting the same caption
	
Macro For Stepping Into #import Wrapped COM Methods [Article, Visual C++] www.earthweb.com 16-Aug-2000 by Graham Jest
	Macro For Stepping Into #import Wrapped COM Methods
	 
	Graham Jest
	 
	16-Aug-2000
	 
	16-Aug-2000
	 
	Very useful macro that bypasses the wrapper class' implementation and 
directly into the method you want to view
	
CWindowImpl ATL Object Wizard [ATL, ATL Object Wizard, Article, Visual C++] www.codeproject.com 15-Aug-2000 by Erik Thompson
	CWindowImpl ATL Object Wizard
	 
	Erik Thompson
	 
	This is an ATL Object Wizard that eases window development using 
CWindowImpl. It removes the redundant copy-n-paste of code between class 
implementations
	
Windows like Menus on web pages [JavaScript, Menu, HTML, Article, Visual C++] www.codeproject.com 15-Aug-2000 by Shoaib Ali
	Windows like Menus on web pages
	 
	Shoaib Ali
	 
	How to create menus using Javascript and HTML.
	
Download a URL contents ( using HTTP WinInet API) [Article, Visual C++] www.mindcracker.com 15-Aug-2000 by Mahesh Chand
	Download a URL contents ( using HTTP WinInet API)
	 
	Sample code available.
	 
	Mahesh Chand
	 
	15-Aug-2000
	 
	15-Aug-2000
	
WinInet for Beginners [Article, Visual C++] www.mindcracker.com 15-Aug-2000 by Mahesh Chand
	WinInet for Beginners
	 
	A simple tutorial for beginners with introduction to WinInet and sample 
code
	 
	Mahesh Chand
	 
	15-Aug-2000
	 
	15-Aug-2000
	
Learn to Earn [Article, Delphi] delphi.about.com 15-Aug-2000
	15-Aug-2000
	 
	15-Aug-2000
	 
	Learn to Earn
	 
	Skills pay. If you have the right ones, you will get the career you 
want - superior job, more money, and mastery of what you do. See how to become 
a certified Delphi developer.
	
Debugging & Testing Tips for Win9x [Debugging, Article, Visual C++] www.codeproject.com 14-Aug-2000 by Keith Rule
	Debugging & Testing Tips for Win9x
	 
	Keith Rule
	 
	Debugging & Testing Tips from the Trenches
	
File Stream Encryption (using a Context Menu) [File, Folder, Context Menu, Explorer, Article, Visual C++] www.codeproject.com 14-Aug-2000 by Daniel Madden
	File Stream Encryption (using a Context Menu)
	 
	Daniel Madden
	 
	An article on file stream encryption (using Crypt++ v3.2) from an 
Explorer Context Menu
	
WTL: Button Menu [Windows Template Library, WTL, Menu, Article, Visual C++] www.codeproject.com 14-Aug-2000 by David Peterson
	WTL: Button Menu
	 
	David Peterson
	 
	Use WTL to create simple button that implements drop-down menu
	
Defining and Declaring Functions in C++ [Article, Visual C++] cplus.about.com 14-Aug-2000
	14-Aug-2000
	 
	14-Aug-2000
	  
	Defining and Declaring Functions in C++
	 
	How to create and use functions in C++
	
Converting the CONNECT Sample to a Local Server [ATL, COM, Event, Thread, Article, Visual C++] www.codeproject.com 13-Aug-2000 by Paul Shaffer
	Converting the CONNECT Sample to a Local Server
	 
	Paul Shaffer
	 
	An article on ATL COM Event connection point Threading issues
	
Using Worker Threads [Thread, Process, Inteprocess Communication, Article, Visual C++] www.codeproject.com 13-Aug-2000 by Joseph M Newcomer
	Using Worker Threads
	 
	Joseph M Newcomer
	 
	Learn how to create and use worker threads in your applications.
	
Optimization: Your Worst Enemy [Tip, Article, Visual C++] www.codeproject.com 13-Aug-2000 by Joseph M Newcomer
	Optimization: Your Worst Enemy
	 
	Joseph M Newcomer
	 
	Learn about the potential pitfalls of code optimization.
	
DCOM D-Mystified: A DCOM Tutorial, Step 1 [COM, DCOM, Article, Visual C++] www.codeproject.com 12-Aug-2000 by Brian Hart
	DCOM D-Mystified: A DCOM Tutorial, Step 1
	 
	Brian Hart
	 
	This tutorial shows you how to write DCOM software, with all the latest 
features, in a simple, straightforward manner.
	
DCOM D-Mystified: A DCOM Tutorial, Step 2 [COM, DCOM, ATL, Article, Visual C++] www.codeproject.com 12-Aug-2000 by Brian Hart
	DCOM D-Mystified: A DCOM Tutorial, Step 2
	 
	Brian Hart
	 
	We modify starter files, provided by the ATL COM AppWizard, to improve 
the user-friendliness of our server.
	
DCOM D-Mystified: A DCOM Tutorial, Step 3 [COM, DCOM, ATL, Article, Visual C++] www.codeproject.com 12-Aug-2000 by Brian Hart
	DCOM D-Mystified: A DCOM Tutorial, Step 3
	 
	Brian Hart
	 
	In this step we add a simple COM object to our server using the New ATL 
Object Wizard.
	
DCOM D-Mystified: A DCOM Tutorial, Step 4 [COM, DCOM, Article, Visual C++] www.codeproject.com 12-Aug-2000 by Brian Hart
	DCOM D-Mystified: A DCOM Tutorial, Step 4
	 
	Brian Hart
	 
	Here we add a method to our DCOM-remoted object, and start on 
implementing its functionality.
	
DCOM D-Mystified: A DCOM Tutorial, Step 5 [COM, DCOM, Article, Visual C++] www.codeproject.com 12-Aug-2000 by Brian Hart
	DCOM D-Mystified: A DCOM Tutorial, Step 5
	 
	Brian Hart
	 
	We look at connection points and set up the server's end of one. We'll 
also finish implementing our SayHello() method.
	
DCOM D-Mystified: A DCOM Tutorial, Step 6 [COM, DCOM, Article, Visual C++] www.codeproject.com 12-Aug-2000 by Brian Hart
	DCOM D-Mystified: A DCOM Tutorial, Step 6
	 
	Brian Hart
	 
	We build our new server and install it on the server machine.
	
DCOM D-Mystified: A DCOM Tutorial, Step 7 [COM, DCOM, MFC, Article, Visual C++] www.codeproject.com 12-Aug-2000 by Brian Hart
	DCOM D-Mystified: A DCOM Tutorial, Step 7
	 
	Brian Hart
	 
	At last! We finish our tutorial by writing a client with MFC, 
AppWizard, and ClassWizard, like back in the good ol' days (sighhh...)
	
DCOM D-Mystified: Questions and Answers [COM, DCOM, Article, Visual C++] www.codeproject.com 12-Aug-2000 by Brian Hart
	DCOM D-Mystified: Questions and Answers
	 
	Brian Hart
	 
	Brian's detailed answers to your most frequently asked questions about 
his DCOM tutorial.
	
Generic Serializer: Serializing arbitrary data structures [C++, MFC, STL, Serializing, Template, Article, Visual C++] www.codeproject.com 12-Aug-2000 by Martin Holzherr
	Generic Serializer: Serializing arbitrary data structures
	 
	Martin Holzherr
	 
	Template functions for serializing arbitrary linked nodes.
	
CODBCRecordset class [Database, MFC, Article, Visual C++] www.codeproject.com 12-Aug-2000 by Stefan Chekanov
	CODBCRecordset class
	 
	Stefan Chekanov
	 
	CODBCRecordset class is intended to be full replacement of all 
ClassWizard generated CRecordset derived classes in MFC projects.
	
A Beginners Guide to Dialog Based Applications, Part One [Dialog, Windows Programming, MFC, Article, Visual C++] www.codeproject.com 12-Aug-2000 by Dr Asad Altimeemy
	A Beginners Guide to Dialog Based Applications, Part One
	 
	Dr Asad Altimeemy
	 
	A step by step tutorial showing how to create your first windows 
program using MFC
	
CString Management [String, Article, Visual C++] www.codeproject.com 12-Aug-2000 by Joseph M Newcomer
	CString Management
	 
	Joseph M Newcomer
	 
	Learn how to effectively use CStrings.
	
Non-MFC String Class for ATL [String, MFC, ATL, Component, Article, Visual C++] www.codeproject.com 12-Aug-2000 by Paul E Bible
	Non-MFC String Class for ATL
	 
	Paul E Bible
	 
	A Non-MFC String Class for use in ATL Components
	
AVEPopup ActiveX Control [ActiveX Control, Combobox, Article, Visual Basic] www.vb2themax.com 12-Aug-2000 by Jaroslaw Zwierz
	AVEPopup ActiveX Control
	  
	12-Aug-2000
	 
	12-Aug-2000
	 
	Jaroslaw Zwierz
	 
	This Combobox-like ActiveX control lets you host nearly every 
coincevable control inside it, so that you can save precious screen estate. For 
example, you can host a TreeView or a ListView control inside the drop-down 
area of the AVEPopup control, and you can do the same with any control that 
exposes the hWnd property. The demo program shows how you can use it in an MDI 
environment, in modeless and modal forms. The best news is that the AVEPopup 
control is provided with its source code!
	 
	Visit the author's web site at www.ave.com.pl
	
Combo box and SetItemDataPtr [Article, Visual C++] www.mindcracker.com 12-Aug-2000 by Rail Jon Rogut
	Combo box and SetItemDataPtr
	. 
	Add data to combobox using SetItemDataPtr
	 
	Rail Jon Rogut
	 
	12-Aug-2000
	 
	12-Aug-2000
	
How to transfer data from one dialog to another [Article, Visual C++] www.mindcracker.com 12-Aug-2000 by Rail Jon Rogut
	How to transfer data from one dialog to another
	 
	Rail Jon Rogut
	 
	12-Aug-2000
	 
	12-Aug-2000
	
How to use CBitmap in your application [Article, Visual C++] www.mindcracker.com 12-Aug-2000 by Rail Jon Rogut
	How to use CBitmap in your application
	 
	Rail Jon Rogut
	 
	12-Aug-2000
	 
	12-Aug-2000
	
Open/Read a text file with Print/Print preview [Article, Visual C++] www.mindcracker.com 12-Aug-2000 by Rail Jon Rogut
	Open/Read a text file with Print/Print preview
	 
	Rail Jon Rogut
	 
	12-Aug-2000
	 
	12-Aug-2000
	
Search for files [Article, Visual C++] www.mindcracker.com 12-Aug-2000 by Rail Jon Rogut
	Search for files
	 
	This example upon launching searches all drives for any MP3 files and 
lists them .....
	 
	Rail Jon Rogut
	 
	12-Aug-2000
	 
	12-Aug-2000
	
Find in CWebBrowser Control [Control, Article, Visual C++] www.codeproject.com 11-Aug-2000 by Jeremy Davis
	Find in CWebBrowser Control
	 
	Jeremy Davis
	 
	How to display the "Find" window in a CWebBrowser control.
	
Using ATL to Automate an MFC Application [ATL, COM, Article, Visual C++] www.codeguru.com 11-Aug-2000 by Bart De Lathouwer
	Using ATL to Automate an MFC Application
	 
	Bart De Lathouwer
	 
	Article that illustrates MS Office-like automation with remotely 
creatable documents.
	
SCSI Information DLL [Tool, Article, Visual C++] www.codeguru.com 11-Aug-2000 by Michael Becker
	SCSI Information DLL
	 
	Michael Becker
	 
	DLL that identifies and retrieves parameters from local SCSI devices
	
How to save list box contents between sessions [Article, Visual C++] www.mindcracker.com 11-Aug-2000 by Rail Jon Rogut
	How to save list box contents between sessions
	 
	Rail Jon Rogut
	 
	11-Aug-2000
	 
	11-Aug-2000
	
How to save list box contents between sessions [Article, Visual C++] www.mindcracker.com 11-Aug-2000 by Rail Jon Rogut
	How to save list box contents between sessions
	 
	Rail Jon Rogut
	 
	11-Aug-2000
	 
	11-Aug-2000
	
How to insert, delete, grayed out, enable/disable menus on runtime? [Article, Visual C++] www.mindcracker.com 11-Aug-2000 by Mahesh Chand
	How to insert, delete, grayed out, enable/disable menus on runtime?
	 
	Mahesh Chand
	 
	11-Aug-2000
	 
	11-Aug-2000
	
Add your own controls to CFileDialog Rail [Article, Visual C++] www.mindcracker.com 11-Aug-2000 by Jon Rogut
	Add your own controls to CFileDialog Rail
	 
	Jon Rogut
	 
	11-Aug-2000
	 
	11-Aug-2000
	
MRU Folders Rail [Article, Visual C++] www.mindcracker.com 11-Aug-2000 by Jon Rogut
	MRU Folders Rail
	 
	Jon Rogut
	 
	11-Aug-2000
	 
	11-Aug-2000
	
Directory Chooser [Article, Visual C++] www.mindcracker.com 11-Aug-2000 by Rail Jon Rogut
	Directory Chooser
	 
	Rail Jon Rogut
	 
	11-Aug-2000
	 
	11-Aug-2000
	
Using ATL to Automate an MFC application [Article, Visual C++] www.earthweb.com 11-Aug-2000 by Bart De Lathouwer
	Using ATL to Automate an MFC application
	 
	Bart De Lathouwer
	 
	11-Aug-2000
	 
	11-Aug-2000
	 
	MS Office-like automation with remotely creatable documents.
	
Visual C++/MFC Tutorial: Lesson 7: Data Viewer [C++, MFC, Article, Visual C++] www.codeguru.com 10-Aug-2000 by Brian Martin
	Visual C++/MFC Tutorial: Lesson 7: Data Viewer
	 
	Brian Martin
	 
	In the final installment of Brian's tutorial, you put to use what 
you've learned the past week by coding a sample data viewer application
	
Extended Time Format Functions (with Milliseconds) [Date, Time, Article, Visual C++] www.codeguru.com 10-Aug-2000 by Roland J Graf
	Extended Time Format Functions (with Milliseconds)
	 
	Roland J Graf
	 
	Very useful set of time formatting routines that can easily be inserted 
into your C++ code
	
Interactive SQL Tool (using ADO) [SQL, Tool, OLE DB, SQL Script, Article, Visual C++] www.mindcracker.com 10-Aug-2000 by George Poulose
	Interactive SQL Tool (using ADO)
	 
	A tool that allows you to query OLE DB sources, author SQL Scripts, 
return query results to a grid and more ...
	 
	George Poulose
	 
	10-Aug-2000
	 
	10-Aug-2000
	
In-process Servers and DCOMCNFG Utility [In-process Server, DCOMCNFG, Article, Visual C++] www.mindcracker.com 10-Aug-2000 by George Poulose
	In-process Servers and DCOMCNFG Utility
	 
	George Poulose
	 
	10-Aug-2000
	 
	10-Aug-2000
	
How to subclass a CEdit control [Article, Visual C++] www.mindcracker.com 10-Aug-2000 by Rail Jon Rogut
	How to subclass a CEdit control
	. 
	This shows how to subclass the CEdit control when user left clicks. 
Sample project attached.
	 
	Rail Jon Rogut
	 
	10-Aug-2000
	 
	10-Aug-2000
	
Interactive SQL Tool (using ODBC) [Article, Visual C++] www.mindcracker.com 10-Aug-2000 by George Poulose
	Interactive SQL Tool (using ODBC)
	 
	A tool that allows you to query ODBC sources
	 
	George Poulose
	 
	10-Aug-2000
	 
	10-Aug-2000
	
Interactive SQL Tool (using ADO) [Article, Visual C++] www.mindcracker.com 10-Aug-2000 by George Poulose
	Interactive SQL Tool (using ADO)
	 
	A tool that allows you to query OLE DB sources, author SQL scripts, 
return query results to a grid and more ...
	 
	George Poulose
	 
	10-Aug-2000
	 
	10-Aug-2000
	
How to subclass a CEdit control [Article, Visual C++] www.mindcracker.com 10-Aug-2000 by Rail Jon Rogut
	How to subclass a CEdit control
	. 
	This shows how to subclass the CEdit control when user left clicks. 
Sample project attached.
	 
	Rail Jon Rogut
	 
	10-Aug-2000
	 
	10-Aug-2000
	
Visual C++/MFC Tutorial - Lesson 7: Data Viewer [Article, Visual C++] www.earthweb.com 10-Aug-2000 by Brian Martin
	Visual C++/MFC Tutorial - Lesson 7: Data Viewer
	 
	Brian Martin
	 
	10-Aug-2000
	 
	10-Aug-2000
	 
	In the final installment of Brian's tutorial, you put to use what 
you've learned the past week by coding a sample data viewer application
	
ComboTree [Combobox, List Control, Article, Visual C++] www.codeproject.com 09-Aug-2000 by Dennis Howard
	ComboTree
	 
	Dennis Howard
	 
	ComboBox with a tree control drop down
	
The Next Generation Internet: Visual Studio.NET screen shots [.NET, Visual Studio, Article, Visual C++] www.codeproject.com 09-Aug-2000 by Chris Maunder
	The Next Generation Internet: Visual Studio.NET screen shots
	 
	Chris Maunder
	 
	Some Visual Studio.NET screen shots to tease
	
Load a CString from DLL within that DLL [Win32, SDK Programming, DLL, Article, Visual C++] www.codeproject.com 09-Aug-2000 by Jim Koornneef
	Load a CString from DLL within that DLL
	 
	Jim Koornneef
	 
	CString::LoadString(), resource will not load under certain conditions.
	
Visual C++/MFC Tutorial: Lesson 6: SDI and MDI Applications [C++, MFC, Article, Visual C++] www.codeguru.com 09-Aug-2000 by Brian Martin
	Visual C++/MFC Tutorial: Lesson 6: SDI and MDI Applications
	 
	Brian Martin
	 
	In this penultimate part of the series, Brian teaches you the basic of 
creating Document/View applications
	
Making a Window "Always On Top" [Dialog, Article, Visual C++] www.codeguru.com 09-Aug-2000 by Christopher Tan
	Making a Window "Always On Top"
	 
	Christopher Tan
	 
	Shows how to set a windows properties such that it is always shown on 
top of other windows
	
Stored Procedure Class Wizard (SPCW) [Stored Procedure, Class Wizard, Article, Visual C++] www.mindcracker.com 09-Aug-2000 by George Poulose
	Stored Procedure Class Wizard (SPCW)
	 
	A tool to generate class files to implement stored procedures
	 
	George Poulose
	 
	09-Aug-2000
	 
	09-Aug-2000
	
Stored Procedure Class Wizard (SPCW) [Article, Visual C++] www.mindcracker.com 09-Aug-2000 by George Poulose
	Stored Procedure Class Wizard (SPCW)
	 
	A tool to generate class files to implement stored procedures
	 
	George Poulose
	 
	09-Aug-2000
	 
	09-Aug-2000
	
Solving Complex SQL Problems with Full-Text Indexing [Article, Visual C++] www.earthweb.com 09-Aug-2000 by Tom Archer
	Solving Complex SQL Problems with Full-Text Indexing
	 
	Tom Archer
	 
	9-Aug-2000
	 
	9-Aug-2000
	 
	Real-world problems can turn an ordinary SQL statement into a Cartesian 
product-producing, index-ignoring, performance nightmare. In such cases, SQL 
Server's Full-Text Index may offer the perfect mix of flexibility and 
performance.
	
Visual C++/MFC Tutorial - Lesson 6: SDI and MDI Applications [Article, Visual C++] www.earthweb.com 09-Aug-2000 by Brian Martin
	Visual C++/MFC Tutorial - Lesson 6: SDI and MDI Applications
	 
	Brian Martin
	 
	9-Aug-2000
	 
	9-Aug-2000
	 
	In this penultimate part of the series, Brian teaches you the basic of 
creating doc/view applications
	
Making a Window "Always On Top" [Article, Visual C++] www.earthweb.com 09-Aug-2000 by Christopher Tan
	Making a Window "Always On Top"
	 
	Christopher Tan
	 
	9-Aug-2000
	 
	9-Aug-2000
	 
	Shows how to set a windows properties such that it is always shown on 
top of other windows
	
Universal Table Editor [Active Server Pages, Table, Database, Article, Visual C++] www.codeproject.com 08-Aug-2000 by Tom Wellige
	Universal Table Editor
	 
	Tom Wellige
	 
	Viewer and Editor for any table in any Database you can reach from your 
IIS/PWS.
	
Visual C++/MFC Tutorial: Lesson 5: Dialog-Based Applications [C++, MFC, Article, Visual C++] www.codeguru.com 08-Aug-2000 by Brian Martin
	Visual C++/MFC Tutorial: Lesson 5: Dialog-Based Applications
	 
	Brian Martin
	 
	In this installment of the series, Brian covers the basics of dialogs 
and dialog-based applications
	
"Toggle Header" Add-In for Visual Studio [Macro, Article, Visual C++] www.codeguru.com 08-Aug-2000
	"Toggle Header" Add-In for Visual Studio
	 
	-N/A
	 
	Add-In that solves problem of macros crashing when they can't open the 
current file's associated header file
	
Visual C++/MFC Tutorial - Lesson 5: Dialog-Based Applications [Article, Visual C++] www.earthweb.com 08-Aug-2000 by Brian Martin
	Visual C++/MFC Tutorial - Lesson 5: Dialog-Based Applications
	 
	Brian Martin
	 
	8-Aug-2000
	 
	8-Aug-2000
	 
	In this installment of the series, Brian covers the basics of dialogs 
and dialog-based applications
	
"Toggle Header" Add-In for Visual Studio [Article, Visual C++] www.earthweb.com 08-Aug-2000 by Power Station
	"Toggle Header" Add-In for Visual Studio
	 
	Power Station
	 
	8-Aug-2000
	 
	8-Aug-2000
	 
	Add-In that solves problem of macros crashing when they can't open the 
current file's associated header file
	
Files With NO Structure [Article, Delphi] delphi.about.com 08-Aug-2000
	08-Aug-2000
	 
	08-Aug-2000
	 
	Files With NO Structure
	 
	Using Delphi's Pascal to manage operations on untyped files - direct 
access to disk files regardless of type and structuring.
	
File uploading with COM and ASP [Active Server Pages, File, COM, ASP, Component, Article, Visual C++] www.codeproject.com 07-Aug-2000 by Xicoloko
	File uploading with COM and ASP
	 
	Xicoloko
	 
	A simple COM Component with source that provides file upload 
capabilities for your ASP pages.
	
Address Book [Sample, Article, Visual C++] www.codeproject.com 07-Aug-2000 by Xavier John
	Address Book
	 
	Xavier John
	 
	
	
Visual C++/MFC Tutorial: Lesson 4: MFC Basics [C++, MFC, Article, Visual C++] www.codeguru.com 07-Aug-2000 by Brian Martin
	Visual C++/MFC Tutorial: Lesson 4: MFC Basics
	 
	Brian Martin
	 
	Start dipping your toes in the MFC waters in preperation for the really 
cool stuff
	
Tool for Globally Changing Class Names [Tool, Article, Visual C++] www.codeguru.com 07-Aug-2000 by Manuel Lucas Viñas Livschitz
	Tool for Globally Changing Class Names
	 
	Manuel Lucas Viñas Livschitz
	 
	Very useful application for handling mass class changes across large 
projects
	
Visual C++/MFC Tutorial - Lesson 4: MFC Basics [Article, Visual C++] www.earthweb.com 07-Aug-2000 by Brian Martin
	Visual C++/MFC Tutorial - Lesson 4: MFC Basics
	 
	Brian Martin
	 
	7-Aug-2000
	 
	7-Aug-2000
	 
	Start dipping your toes in the MFC waters in preperation for the really 
cool stuff
	
Setting Properties with OLE Automation [ATL, Article, Visual C++] www.codeproject.com 06-Aug-2000 by Konstantin Boukreev
	Setting Properties with OLE Automation
	 
	Konstantin Boukreev
	 
	Describes an ActiveX Control to use OLE Automation to set an object's 
properties.
	
kPad: A lightweight WTL based text editor [Windows Template Library, WTL, Article, Visual C++] www.codeproject.com 06-Aug-2000 by Konstantin Boukreev
	kPad: A lightweight WTL based text editor
	 
	Konstantin Boukreev
	 
	An example of using the WTL library and RichEdit control
	
WBEM Class Wrapper for Local and Remote Process Creation [System, Article, Visual C++] www.codeguru.com 06-Aug-2000 by Brandon Clark
	WBEM Class Wrapper for Local and Remote Process Creation
	 
	Brandon Clark
	 
	Wraps the Microsoft Windows 2000 implementation of the industry 
standard WBEM
	
kPad: Lightweight Text Editor [ATL, COM, Article, Visual C++] www.codeguru.com 06-Aug-2000 by Konstantin Boukreev
	kPad: Lightweight Text Editor
	 
	Konstantin Boukreev
	 
	Great example of the types of things you can do with WTL !!
	
Visual C++/MFC Tutorial:Lesson 3: Visual C++ IDE and Workspaces [C++, MFC, Article, Visual C++] www.codeguru.com 06-Aug-2000 by Brian Martin
	Visual C++/MFC Tutorial:Lesson 3: Visual C++ IDE and Workspaces
	 
	Brian Martin
	 
	Third installment of the seven-part Visual C++ tutorial series
	
Visual C++/MFC Tutorial - Lesson 3: Visual C++ IDE and Workspaces [Article, Visual C++] www.earthweb.com 06-Aug-2000 by Brian Martin
	Visual C++/MFC Tutorial - Lesson 3: Visual C++ IDE and Workspaces
	 
	Brian Martin
	 
	6-Aug-2000
	 
	6-Aug-2000
	 
	Third installment of the seven-part Visual C++ tutorial series
	
WBEM Class Wrapper for Local and Remote Process Creation [Article, Visual C++] www.earthweb.com 06-Aug-2000 by Brandon Clark
	WBEM Class Wrapper for Local and Remote Process Creation
	 
	Brandon Clark
	 
	6-Aug-2000
	 
	6-Aug-2000
	 
	This class will allow the creation of any specified process on a remote 
or local Windows machine.
	
Layout Manager for Dialogs, Formviews, DialogBars and PropertyPages [Dialog, Windows Programming, Article, Visual C++] www.codeproject.com 05-Aug-2000 by Erwin Tratar
	Layout Manager for Dialogs, Formviews, DialogBars and PropertyPages
	 
	Erwin Tratar
	 
	A framework to provide automatic layout control for dialogs and forms
	
CopyProc Add-in [Add-in, Subroutine, Function, Property Procedure, Declaration, Article, Visual Basic] www.vb2themax.com 05-Aug-2000 by Roshan Dawrani
	CopyProc Add-in
	  
	5-Aug-2000
	 
	5-Aug-2000
	 
	Roshan Dawrani
	 
	This add-in breaks up the selected VB component's code and prepares a 
list of all the procedures(Subroutines, Functions, Property Procedures and the 
Declaration section). You can select the methods and the add-in gets the 
definition of the selected methods for you. No need to browse through all the 
code to see the definition of various functions. You can also print the code 
using the add-in. It is especially useful if you want to copy code in all the 
events of a particular object like a command button, a listbox, etc.
	
How To Get Certified in C++ [Article, Visual C++] cplus.about.com 05-Aug-2000
	05-Aug-2000
	 
	05-Aug-2000
	  
	How To Get Certified in C++
	 
	Understand the types of certification and how to get certified.
	
Visual C++/MFC Tutorial:Lesson 2: C++ Essentials [C++, MFC, Article, Visual C++] www.codeguru.com 05-Aug-2000 by Brian Martin
	Visual C++/MFC Tutorial:Lesson 2: C++ Essentials
	 
	Brian Martin
	 
	Before jumping into MFC specifics, Brian now leads you through a quick 
C++ class to get you prepared for the next step
	
SetColor: A Console-Window Color-Changing Tool [Tool, Article, Visual C++] www.codeguru.com 05-Aug-2000 by Simon Cooke
	SetColor: A Console-Window Color-Changing Tool
	 
	Simon Cooke
	 
	Win32 console-mode application (written in C) that allows the user to 
set the color of following output text
	
Visual C++/MFC Tutorial - Lesson 2: C++ Essentials [Article, Visual C++] www.earthweb.com 05-Aug-2000 by Brian Martin
	Visual C++/MFC Tutorial - Lesson 2: C++ Essentials
	 
	Brian Martin
	 
	5-Aug-2000
	 
	5-Aug-2000
	 
	Before jumping into MFC specifics, Brian now leads you through a quick 
C++ class to get you prepared for the next step
	
ATL Developer's Guide [ATL, COM, Visual C++, Book] Purchased 03-Aug-2000, $59.99

How to start the screen saver in code (using: Visual Basic 6.0) [GetDesktopWindow(), Screen Saver, SendMessage(), Visual Basic, Tip] visualbasic.about.com 04-Aug-2000
How to start the screen saver in code 


Start up Visual Basic and add a form to the project. 
Copy this code into the declarations section of the form: 

Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByVal hWnd As Long, ByVal _
wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Const WM_SYSCOMMAND As Long = &H112&
Private Const SC_SCREENSAVE As Long = &HF140&

Create a new procedure to the form, called "StartScreenSaver". 
Add the following code to this procedure: 

Dim hWnd&
On Error Resume Next
hWnd& = GetDesktopWindow()
Call SendMessage(hWnd&, WM_SYSCOMMAND, SC_SCREENSAVE, 0&)

To activate the screen saver, simply add this code to call the procedure: 

Call StartScreenSaver
A very simple COM server without ATL or MFC [COM, DCOM, ATL, MFC, Article, Visual C++] www.codeproject.com 04-Aug-2000 by Shoaib Ali
	A very simple COM server without ATL or MFC
	 
	Shoaib Ali
	 
	A step by step guide to writing a COM server using C++ without MFC or 
ATL
	
SkDCOMbridge: COM/DCOM Handler Object [ATL, COM, Article, Visual C++] www.codeguru.com 04-Aug-2000 by Shai Korianski
	SkDCOMbridge: COM/DCOM Handler Object
	 
	Shai Korianski
	 
	
	
Visual C++/MFC Tutorial: Lesson 1: Behind the Scenes with Handles and Messages [C++, MFC, Article, Visual C++] www.codeguru.com 04-Aug-2000 by Brian Martin
	Visual C++/MFC Tutorial: Lesson 1: Behind the Scenes with Handles and 
Messages
	 
	Brian Martin
	 
	This is the first in an installment of great Visual C++ / MFC tutorials 
from Brian Martin
	
How to use deque container to add and delete items? [Article, Visual C++] www.mindcracker.com 04-Aug-2000 by Mahesh Chand
	How to use deque container to add and delete items?
	 
	Mahesh Chand
	 
	04-Aug-2000
	 
	04-Aug-2000
	
Merging contents of two vectrors [Article, Visual C++] www.mindcracker.com 04-Aug-2000 by Mahesh Chand
	Merging contents of two vectrors
	 
	Mahesh Chand
	 
	04-Aug-2000
	 
	04-Aug-2000
	
How to use map container? [Article, Visual C++] www.mindcracker.com 04-Aug-2000 by Mahesh Chand
	How to use map container?
	 
	Mahesh Chand
	 
	04-Aug-2000
	 
	04-Aug-2000
	
A beginner's tutorial on STL [Article, Visual C++] www.mindcracker.com 04-Aug-2000 by Mahesh Chand
	A beginner's tutorial on STL
	 
	A tutorial teaches you how to use STL in your program with various 
sample examples.
	 
	Mahesh Chand
	 
	04-Aug-2000
	 
	04-Aug-2000
	
Visual C++/MFC Tutorial - Lesson 1: Behind the Scenes with Handles and Messages [Article, Visual C++] www.earthweb.com 04-Aug-2000 by Brian Martin
	Visual C++/MFC Tutorial - Lesson 1: Behind the Scenes with Handles and 
Messages
	 
	Brian Martin
	 
	4-Aug-2000
	 
	4-Aug-2000
	 
	This is the first in an installment of great Visual C++/MFC tutorials 
from Brian Martin
	
SkDCOMbridge : COM/DCOM Handler Object [Article, Visual C++] www.earthweb.com 04-Aug-2000 by Shai Korianski
	SkDCOMbridge : COM/DCOM Handler Object
	 
	Shai Korianski
	 
	4-Aug-2000
	 
	4-Aug-2000
	 
	Use Windows API for handling COM/DCOM objects and create a wrapper for 
a given interface.
	
Changing the Color of Edit and Combobox Controls in ATL [ATL, COM, Article, Visual C++] www.codeguru.com 03-Aug-2000 by Anita Rodriquez
	Changing the Color of Edit and Combobox Controls in ATL
	 
	Anita Rodriquez
	 
	Simple step-by-step instructions on changing control colors when using 
ATL
	
Empty Directory Utility Under NT [File, Folder, Article, Visual C++] www.codeguru.com 03-Aug-2000 by Michel Yossef David
	Empty Directory Utility Under NT
	 
	Michel Yossef David
	 
	Useful Win32 API-based function that deletes all folders and files 
within a specified folder
	
Sorting contents of a list using sort algorithm [Article, Visual C++] www.mindcracker.com 03-Aug-2000 by Mahesh Chand
	Sorting contents of a list using sort algorithm
	 
	Mahesh Chand
	 
	03-Aug-2000
	 
	03-Aug-2000
	
Empty Directory Utility Under NT [Article, Visual C++] www.earthweb.com 03-Aug-2000 by Michel Yossef David
	Empty Directory Utility Under NT
	 
	Michel Yossef David
	 
	3-Aug-2000
	 
	3-Aug-2000
	 
	Description and explanation of Empty Directory Utility
	
Changing the Color of Edit and Combobox Controls in ATL [Article, Visual C++] www.earthweb.com 03-Aug-2000 by Anita Rodriquez
	Changing the Color of Edit and Combobox Controls in ATL
	 
	Anita Rodriquez
	 
	3-Aug-2000
	 
	3-Aug-2000
	 
	Simple step-by-step instructions on changing control colors when using 
ATL.
	
BookNote .... Uses Automation to Make Persistent Bookmarks and Add Notes About Code [Developer Studio, Visual C++, Visual Studio, VC++ Add-in, Visual Studio Add-in] www.microsoft.com 02-Aug-2000
BookNote: Uses Automation to Make Persistent Bookmarks and Add Notes About Code

BookNote lets you record notes (like permanent bookmarks), associating them 
with code. The sample also shows using the registry to persist a number of 
items in an MRU list. BookNote was created with the ATL COM AppWizard. Support 
MFC was checked in the wizard, and then an Add-in object was added to the 
project with the ATL Object Wizard. Most of the code added is in MarkIt.cpp. 

If you modify the sample, precede each function that could be called from an 
external interface with the following code:

AFX_MANAGE_STATE(AfxGetStaticModuleState());

This allows you to access your resources and is necessary because of the MFC 
support.

The CMRUStrings class is used to do the persistence for a drop-down combo box. 
You can use this class and other classes from the add-ins in other projects. 
See Reusing Code Topics and Adding Classes to the Gallery for information on 
how to reuse code.

To build the sample 

Click the link at the beginning of this topic to download the sample files. 
In Visual C++, open the project file BookNote.dsp.
Choose an appropriate configuration (Win32 Release is best if you plan to use 
this add-in). 
Click Rebuild All from the Build menu. 

To run the add-in 

From the Tools menu, click Customize.
Select the BookNote.dll file or browse for it. See Tips for Using Add-ins.
Visual C++ will load the add-in. When you close the Customize dialog box, 
BookNote’s toolbar will appear.
Run the BookNote add-in by clicking the toolbar button. Once the add-in has 
been loaded, it will open a dialog box. It will record the current selection 
(file, line, end of selection if applicable). You can type a note into the main 
edit box. When you click OK, the current selection will be copied into a file, 
which you can specify in this dialog box via a combo box that holds up to 10 
file names. You can also immediately dump the current note to the output 
window. You can then use this wit ... (cont.)
Specifying multiple actions from a single Form [JavaScript, Article, Visual C++] www.codeproject.com 02-Aug-2000 by Chris Maunder
	Specifying multiple actions from a single Form
	 
	Chris Maunder
	 
	A simple way to send the data from a single form to different pages, 
depending on which 'submit' button the user chooses
	
RichEdit Overlay (non-MFC) [Rich Edit, Article, Visual C++] www.codeguru.com 02-Aug-2000 by Matt Slot
	RichEdit Overlay (non-MFC)
	 
	Matt Slot
	 
	Code that enables you to make a RichEdit transparent so that the text 
draws over top of the contents of the parent window (or even a memory DC)!
	
Placing Logo on the Top DockBar of the Frame Window [Toolbar, Article, Visual C++] www.codeguru.com 02-Aug-2000 by Andrey Abelyashev
	Placing Logo on the Top DockBar of the Frame Window
	 
	Andrey Abelyashev
	 
	Great class that enables you to place your logo on the main dockbar of 
your SDI/MDI applications!
	
Placing Logo on the Top DockBar of the Frame Window [Article, Visual C++] www.earthweb.com 02-Aug-2000 by Andrey Abelyashev
	Placing Logo on the Top DockBar of the Frame Window
	 
	Andrey Abelyashev
	 
	2-Aug-2000
	 
	2-Aug-2000
	 
	Great class that enables you to place your logo on the main dockbar of 
your SDI/MDI applications!
	
RichEdit Overlay (non-MFC) [Article, Visual C++] www.earthweb.com 02-Aug-2000 by Matt Slot
	RichEdit Overlay (non-MFC)
	 
	Matt Slot
	 
	2-Aug-2000
	 
	2-Aug-2000
	 
	This snippet demonstrates how to make a RichEdit control transparent, 
so that the text draws over top of the contents of the parent window (or even a 
memory DC).
	
Use Transactions Efficiently [Transaction, SQL Server, Data Integrity, Database, Article, Visual Basic] Visual Basic Programmer's Journal 01-Aug-2000, vol. 10, no. 9 by Barry Fridley
	Use Transactions Efficiently
	 
	Barry Fridley
	 
	Take advantage of SQL Server transactions to create dependable apps and 
preserve Data Integrity in your SQL Server Database.
	
Build Scalable WebClass Applications [WebClass, Article, Visual Basic] Visual Basic Programmer's Journal 01-Aug-2000, vol. 10, no. 9 by Keith Franklin
	Build Scalable WebClass Applications
	 
	Keith Franklin
	 
	Use VB WebClasses to build highly scalable and flexible Web-based 
applications.
	
Use UML for Object Modeling [UML, Object Modeling, Visual Modeler, Article, Visual Basic] Visual Basic Programmer's Journal 01-Aug-2000, vol. 10, no. 9 by Rockford Lhotka
	Use UML for Object Modeling
	 
	Rockford Lhotka
	 
	Using UML with Visual Modeler, you can create diagrams that help you 
map out your object model.
	
Create an Expense Report [VBA, Excel, PalmPilot, Article, Visual Basic] Visual Basic Programmer's Journal 01-Aug-2000, vol. 10, no. 9 by Chris Barlow
	Create an Expense Report
	 
	Using VBA hosted by Excel 2000, you can develop a simple application 
creating a corporate expense report. Find out how the report pulls data files 
from your PalmPilot.
	 
	Chris Barlow
	
Use Linked Lists to Structure Data [Linked List, Article, Visual Basic] Visual Basic Programmer's Journal 01-Aug-2000, vol. 10, no. 9 by Nick Snowdon
	Use Linked Lists to Structure Data
	 
	Use linked lists to store data when you want a more flexible structure 
than stacks or queues.
	 
	Nick Snowdon
	
Implement Advanced COM+ Transactions [COM+, Transaction, ASP, Database Locking, Article, Visual Basic] Visual Basic Programmer's Journal 01-Aug-2000, vol. 10, no. 9 by Yasser Shohoud
	Implement Advanced COM+ Transactions
	 
	Designing COM+ transactions for complex ASP applications poses a few 
challenges. The author takes you through the intricacies of Database Locking 
and transactional COM+ components.
	 
	Yasser Shohoud
	
Create a Clipboard Object [Clipboard, Explorer, Article, Visual Basic] Visual Basic Programmer's Journal 01-Aug-2000, vol. 10, no. 9 by Martin America
	Create a Clipboard Object
	 
	Learn how to use Windows Explorer to store filenames during copy and 
paste. Also discover how to access the filenames from your applications.
	 
	Martin America
	
Listen to Objects With Interface [Object, Interface, Notification Interface, Article, Visual Basic] Visual Basic Programmer's Journal 01-Aug-2000, vol. 10, no. 9 by Karl E Peterson
	Listen to Objects With Interface
	 
	A Notification Interface opens your clients to notifications from many 
objects when you can't use arrays.
	 
	Karl E Peterson
	
First Look at Visual Studio 7.0 [Visual Studio, C#, Common Language Runtime, IDE, Article, Visual C++] Visual C++ Developers Journal 01-Aug-2000, vol. 3, no. 7 by Brian Noyes
	First Look at Visual Studio 7.0
	 
	Brian Noyes
	 
	VS7 has something for everyone. Get the skinny on the new C# language 
and the Common Language Runtime, Web services and other enterprise development 
technologies, and IDE enhancements that increase your productivity.
	
Shared Settings Basics [Registry, Article, Visual C++] Visual C++ Developers Journal 01-Aug-2000, vol. 3, no. 7 by Tom Creighton
	Online Only!
	 
	Shared Settings Basics
	 
	Tom Creighton
	 
	Intrigued by this month's Black Belt column, but feel a little out of 
your depth? Read this online companion piece to "Share Settings Across 
Programs" for a quick overview of the Registry and a simple demonstration of 
the tool's functionality.
	
Make the Most of the IDE [IDE, AppWizard, Article, Visual C++] Visual C++ Developers Journal 01-Aug-2000, vol. 3, no. 7 by Bill Wagner
	Make the Most of the IDE
	 
	Bill Wagner
	 
	You know how to start applications using the AppWizard. Now learn to 
work with Visual C++’s productivity tools to program more effectively.
	
Integrate Message Queuing [Message Queuing, Queued Component, MSMQ, COM+, Article, Visual C++] Visual C++ Developers Journal 01-Aug-2000, vol. 3, no. 7 by Yasser Shohoud
	Integrate Message Queuing
	 
	Yasser Shohoud
	 
	Queued Components aren't magic - they simply provide a nice wrapper 
around MSMQ and integrate tightly with the COM+ programming model. Use them to 
integrate message queuing into your COM+ applications.
	
Port Combobox Data From MFC [Combobox, MFC, Resource, Article, Visual C++] Visual C++ Developers Journal 01-Aug-2000, vol. 3, no. 7 by Andy Harding
	Port Combobox Data From MFC
	 
	Andy Harding
	 
	Get your MFC app's combo box data to show up in your ported Win32 app,
	
String Conversion Macros [String Conversion, Macro, Article, Visual C++] Visual C++ Developers Journal 01-Aug-2000, vol. 3, no. 7 by Andy Harding
	String Conversion Macros
	 
	Andy Harding
	 
	Experience the joys of string conversion macros.
	
Use Type Libraries With ATL [ATL, COM, COM+, ATL Server, Type Library, Article, Visual C++] Visual C++ Developers Journal 01-Aug-2000, vol. 3, no. 7 by Richard Grimes
	Use Type Libraries With ATL
	 
	Richard Grimes
	 
	ATL recognizes type libraries' importance to COM and COM+ by ensuring 
every ATL Server has a bound type library. Learn how to use this fact to your 
advantage, and when to break the rules safely and effectively.
	
Speed Up Your EXE Server [EXE, Server, ATL, Thread Pool, MTA, STA, Article, Visual C++] Visual C++ Developers Journal 01-Aug-2000, vol. 3, no. 7 by George Shepherd
	Speed Up Your EXE Server
	 
	George Shepherd
	 
	ATL's Thread Pooling abilities give you the same throughput advantage 
as MTA, even when interacting with STA objects. This means a fast EXE server.
	
Share Settings Across Programs [Article, Visual C++] Visual C++ Developers Journal 01-Aug-2000, vol. 3, no. 7 by Tom Creighton
	Share Settings Across Programs
	 
	Tom Creighton
	 
	Do you need a facility for sharing program settings across multiple, 
concurrent and distributed programs? Use a simple database whose schema you can 
implement on a variety of DBMS platforms.
	
Detecting Vertical Retrace [Vertical Retrace, Animation, Device Driver, Article, Visual C++] Windows Developer's Journal 01-Aug-2000, vol. 11, no. 8 by Thiadmer Riemersma
	Detecting Vertical Retrace
	 
	Thiadmer Riemersma
	  
	For Animation with no annoying "tearing", you really need to avoid 
drawing to the graphics adaptor when the CRT is also reading from the graphics 
adaptor. You can’t just read VGA registers directly to sync up with the 
vertical retrace, though - you need a Device Driver, as this article shows.
	
A Generic Property Window for MFC [Property Window, MFC, Article, Visual C++] Windows Developer's Journal 01-Aug-2000, vol. 11, no. 8 by Chris Dix
	A Generic Property Window for MFC
	 
	Chris Dix
	  
	The VB paradigm of presenting a list of properties and their editable 
values can be useful for ordinary applications as well. Here’s an MFC class to 
automate much of the work.
	
A Simple HTML Display Class [HTML, Rich Edit Control, Article, Visual C++] Windows Developer's Journal 01-Aug-2000, vol. 11, no. 8 by Jonathan Potter
	A Simple HTML Display Class
	 
	Jonathan Potter
	  
	The rich edit control is your main tool for displaying editable, 
formatted text - but RTF is painful to use. The C++ class presented here lets 
you use standard HTML constructs to get styles (boldface, italic, etc.), color, 
and even hypertext links in a standard Rich Edit Control.
	
Understanding NT: Performance Counters [Performance Counter, System Tray, Windows NT, Article, Visual C++] Windows Developer's Journal 01-Aug-2000, vol. 11, no. 8 by Paula Tomlinson
	Understanding NT: Performance Counters
	 
	Paula Tomlinson
	  
	Performance counters allow running programs to provide arbitrary 
statistics that monitor programs (such as PerfMon) can display. The discussion 
of performance counters continues this month with a small System Tray utility 
that monitors a couple of operating system parameters.
	
A VxD for Emulating the Windows Key [VxD, Windows, Article, Visual C++] Windows Developer's Journal 01-Aug-2000, vol. 11, no. 8 by Manfred Keul
	A VxD for Emulating the Windows Key
	 
	Manfred Keul
	 
	The most efficient way to do some keyboard remapping under Win9x is 
with a VxD, as this example demonstrates.
	
Obtaining the Code Page of Keyboard Input [Code Page, Keyboard, Article, Visual C++] Windows Developer's Journal 01-Aug-2000, vol. 11, no. 8 by Steve Hanov
	Obtaining the Code Page of Keyboard Input
	 
	Steve Hanov
	 
	Some users can switch input locales on the fly, and that means the most 
obvious way of obtaining the current code page won’t work.
	
Custom Folder Icons [Folder, Icon, DESKTOP.INI, Explorer, Article, Visual C++] Windows Developer's Journal 01-Aug-2000, vol. 11, no. 8 by Petter Hesselberg
	Custom Folder Icons
	 
	Petter Hesselberg
	 
	The right settings in a hidden DESKTOP.INI file can give any folder a 
special icon when viewed from Explorer.
	
Invoking the Default E-mail Program [E-mail, Article, Visual C++] Windows Developer's Journal 01-Aug-2000, vol. 11, no. 8 by Simon Liu
	Invoking the Default E-mail Program
	 
	Simon Liu
	 
	HTML pages can use their "mailto:" feature to let you automatically pop 
up your email client with the correct target address; here’s how your Windows 
application can do the same.
	
The Gold Standard, MIDAS & COM: Part I [MIDAS, COM, Database, Article, Delphi] Delphi Informant 01-Aug-2000, vol. 6, no. 8 by Bill Todd
	The Gold Standard, MIDAS & COM: Part I
	 
	Bill Todd
	 
	Mr Todd demonstrates that a combination of MIDAS and COM servers is the 
ideal system architecture for easily sharing a single Database connection among 
multiple EXEs and DLLs.
	
Hierarchy of Forms [Form, Form Inheritance, Article, Delphi] Delphi Informant 01-Aug-2000, vol. 6, no. 8 by Ron Nibbelink
	Hierarchy of Forms
	 
	Ron Nibbelink
	 
	It's been around since version 2, but many Delphi developers still 
aren't reaping the benefits of Form Inheritance. Mr Nibbelink shares his 
time-honored techniques for building a reusable form hierarchy.
	
Open Dialog [Dialog, Windows NT, Article, Delphi] Delphi Informant 01-Aug-2000, vol. 6, no. 8 by Deepak Shenoy
	Open Dialog
	 
	Deepak Shenoy
	 
	With its new Places Bar and other changes, the Windows 2000 Open dialog 
box definitely has a new look. Using a bit of inheritance, Mr Shenoy 
demonstrates how to share that look with your users.
	
Cross-platform Controls [Kylix, Linux, Article, Delphi] Delphi Informant 01-Aug-2000, vol. 6, no. 8 by Robert Kozak
	Cross-platform Controls
	 
	Robert Kozak
	 
	So many "firsts"! Robert Kozak gives us our first look at some Kylix 
source code. And guess what? It looks awfully familiar - which is, of course, 
the point. It's also the very first custom control written in Kylix.
	
Dependency Tracking [Dependency Tracking, Article, Delphi] Delphi Informant 01-Aug-2000, vol. 6, no. 8 by Michael L Perry
	Dependency Tracking
	 
	Michael L Perry
	 
	Mr Perry explains dependency tracking, a powerful mechanism for keeping 
a system up-to-date, contrasts it with other approaches (e.g. the Observer 
Pattern), then provides a Delphi implementation.
	
Is Linux Ready for Delphi? [Linux, Article, Delphi] Delphi Informant 01-Aug-2000, vol. 6, no. 8 by Danny Thorpe
	Is Linux Ready for Delphi?
	 
	Danny Thorpe
	 
	Our favorite IDE is about to be launched on an entirely different 
platform, so it's only natural there are many questions and concerns. Borland 
R&D Engineer Danny Thorpe allays fears, cuts through the religious and 
political haze, and puts Kylix - and its place on Linux - into perspective.
	
Recursion Excursion [Recursion, Component, Parsing, Article, Delphi] Delphi Informant 01-Aug-2000, vol. 6, no. 8 by Alexander Gofen
	Recursion Excursion
	 
	Alexander Gofen
	 
	Mr Gofen offers a new Component: an advanced calculator that allows 
users to deal with sets of formulas and series that uses elegant recursion 
techniques for Parsing arithmetic expressions.
	
WAP Apps [WAP, Internet, Wireless Markup Language, WML, Article, Delphi] Delphi Informant 01-Aug-2000, vol. 6, no. 8 by Mike Riley
	WAP Apps
	 
	Mike Riley
	 
	With wireless connections to portable, hand-held displays, Internet 
connectivity has evolved to the next level. Mr Riley takes us to that next 
level as well, with Delphi and Wireless Markup Language (WML).
	
Converting VCL Components to Windows Resources [VCL, Resource, C++ Builder, Article, Visual C++] C++ Users Journal 01-Aug-2000, vol. 18, no. 8 by Luigi Bianchi
	Converting VCL Components to Windows Resources
	 
	Luigi Bianchi
	  
	Borland C++Builder has its own version of resource files, but they can 
be translated to more conventional .RC files.
	
A Lightweight Window Wrapper [Wrapper, Encapsulation, Article, Visual C++] C++ Users Journal 01-Aug-2000, vol. 18, no. 8 by Steve Hanov
	A Lightweight Window Wrapper
	 
	Steve Hanov
	  
	Even the simplest aspects of window management can benefit from a bit 
of Encapsulation.
	
A Reusable Nonlinear System Solver, Part 2 [Equation Solver, Article, Visual C++] C++ Users Journal 01-Aug-2000, vol. 18, no. 8 by Michael L Perry
	A Reusable Nonlinear System Solver, Part 2
	 
	Michael L Perry
	  
	It’s not enough to have a general Equation Solver - you have to know 
how to talk to it.
	
A Simple Persistence Framework [Persistence, Object Broker, Article, Visual C++] C++ Users Journal 01-Aug-2000, vol. 18, no. 8 by Gary Hsiao
	A Simple Persistence Framework
	 
	Gary Hsiao
	  
	Think of a persistent Object Broker as a poor man’s database. Then 
think of all the ways you might use it.
	
A Simple Linear Regression Class [Regression, Class, Encapsulation, Article, Visual C++] C++ Users Journal 01-Aug-2000, vol. 18, no. 8 by David C Swaim
	A Simple Linear Regression Class
	 
	David C Swaim
	 
	Even an operation as simple as linear least squares can benefit from 
Encapsulation in a class.
	
Creating an Index Table in STL [Index Table, STL, Article, Visual C++] C++ Users Journal 01-Aug-2000, vol. 18, no. 8 by Craig Hicks
	Creating an Index Table in STL
	 
	Craig Hicks
	  
	STL doesn’t do everything, but often a missing bit of functionality can 
be assembled from available parts.
	
Unraveling Multithreading [Multithreading, Article, Visual C++] C++ Users Journal 01-Aug-2000, vol. 18, no. 8 by Pete Becker
	Pete Becker
	 
	Unraveling Multithreading
	 
	Sometimes you have to spend a lot of time on just a little bit of code, 
to avoid spending much more time not knowing where to begin debugging.
	
Flinging C++ Objects Across the Network [COM, DCOM, Network, Article, Visual C++] www.codeproject.com 01-Aug-2000 by Brian Hart
	Flinging C++ Objects Across the Network
	 
	Brian Hart
	 
	A different approach than byte-stuffing BSTRs.
	
A Beginner's Guide to the Linked List [C++, MFC, STL, CList Class, Article, Visual C++] www.codeproject.com 01-Aug-2000 by Andrew Peace
	A Beginner's Guide to the Linked List
	 
	Andrew Peace
	 
	An article showing the basics of the linked list, and how the CList 
class operates
	
Getting to Know MIDAS [MIDAS, Article, Delphi] Delphi Developer 01-Aug-2000, vol. 6, no. 8 by Jani Jarvinen
	Getting to Know MIDAS
	 
	Jani Jarvinen
	 
	
	
Delphi 5 Frames [Frame, Article, Delphi] Delphi Developer 01-Aug-2000, vol. 6, no. 8 by Bob Swart
	Delphi 5 Frames
	 
	Bob Swart
	 
	
	
Writing a Delphi Application Without the VCL [VCL, Article, Delphi] Delphi Developer 01-Aug-2000, vol. 6, no. 8 by Fernando Vicaria, Robert Ehteshamzadeh
	Writing a Delphi Application Without the VCL
	 
	Fernando Vicaria and Robert Ehteshamzadeh
	 
	
	
SQL Server 2000: New Features Provide Unmatched Ease of Use and Scalability to Admins and Users [SQL Server, SQL Server, Article, Visual C++] MSDN Magazine 01-Aug-2000, vol. 15, no. 8 by Carl Nolan
	SQL Server 2000: New Features Provide Unmatched Ease of Use and 
Scalability to Admins and Users
	 
	Carl Nolan
	
SOAP Toolkit: Develop a Web Service: Up and Running with the SOAP Toolkit for Visual Studio [SOAP, Web Services, Visual Studio, Article, Visual C++] MSDN Magazine 01-Aug-2000, vol. 15, no. 8 by Rob Caron
	SOAP Toolkit: Develop a Web Service: Up and Running with the SOAP 
Toolkit for Visual Studio
	 
	Rob Caron
	
Intro to XSLT: XSL Transformations Alleviate XML Schema Incompatibility Headaches [XSLT, XSL Transformation, XML Schema, Article, Visual C++] MSDN Magazine 01-Aug-2000, vol. 15, no. 8 by Don Box, Aaron Skonnard, John Lam
	Intro to XSLT: XSL Transformations Alleviate XML Schema Incompatibility 
Headaches
	 
	Don Box
	, 
	Aaron Skonnard
	, 
	John Lam
	
Migrating Your ASP Apps from Windows NT 4.0 to Windows 2000 [ASP, Windows NT, Windows NT, Article, Visual C++] MSDN Magazine 01-Aug-2000, vol. 15, no. 8 by Shelley Powers
	Migrating Your ASP Apps from Windows NT 4.0 to Windows 2000
	 
	Shelley Powers
	
Sending E-mail from Forms, Database Solutions, Web Site Planning [E-mail, Form, Database, Web, Article, Visual C++] MSDN Magazine 01-Aug-2000, vol. 15, no. 8 by Robert Hess
	Sending E-mail from Forms, Database Solutions, Web Site Planning
	 
	Robert Hess
	
SQL Server 7.0 and OLE DB Heterogeneous Queries [OLE DB, Heterogeneous Query, SQL Server, Article, Visual C++] MSDN Magazine 01-Aug-2000, vol. 15, no. 8 by Dino Esposito
	SQL Server 7.0 and OLE DB Heterogeneous Queries
	 
	Dino Esposito
	
XML Data Manipulation with ADO 2.5 [XML, ADO, Article, Visual C++] MSDN Magazine 01-Aug-2000, vol. 15, no. 8 by Ken Spencer
	XML Data Manipulation with ADO 2.5
	 
	Ken Spencer
	
Writing ActiveX Controls in Visual Basic versus Visual C++ [ActiveX Control, Visual Basic, Article, Visual C++] MSDN Magazine 01-Aug-2000, vol. 15, no. 8 by George Shepherd
	Writing ActiveX Controls in Visual Basic versus Visual C++
	 
	George Shepherd
	
A COM Symbol Engine Aids Debugging [COM, Symbol Engine, Debugging, Article, Visual C++] MSDN Magazine 01-Aug-2000, vol. 15, no. 8 by John Robbins
	A COM Symbol Engine Aids Debugging
	 
	John Robbins
	
Explore the Security Support Provider Interface Using the SSPI Workbench Utility [Security Support Provider Interface, SSPI, Article, Visual C++] MSDN Magazine 01-Aug-2000, vol. 15, no. 8 by Keith Brown
	Explore the Security Support Provider Interface Using the SSPI 
Workbench Utility
	 
	Keith Brown
	
Implementing Handler Marshaling Under Windows 2000: DeviceClient Sample App [Handler Marshaling, Windows NT, Article, Visual C++] MSDN Magazine 01-Aug-2000, vol. 15, no. 8 by Jeff Prosise
	Implementing Handler Marshaling Under Windows 2000: DeviceClient Sample 
App
	 
	Jeff Prosise
	
Windows 2000 File Dialog Revisited; Autocompletion and the ACTest Demo App [File Dialog, Autocompletion, Windows NT, Article, Visual C++] MSDN Magazine 01-Aug-2000, vol. 15, no. 8 by Paul DiLascia
	Windows 2000 File Dialog Revisited; Autocompletion and the ACTest Demo 
App
	 
	Paul DiLascia
	
Custom Comment-Out Macro [Macro, Article, Visual C++] www.codeguru.com 01-Aug-2000 by Ilic Ferretti
	Custom Comment-Out Macro
	 
	Ilic Ferretti
	 
	Aside from Visual Basic and C++ comments, this macro also supports 
Python script, scripts inside HTML pages, VBScript and Javascript
	
CRegistry : Serialize Data In/Out of the Registry [System, Article, Visual C++] www.codeguru.com 01-Aug-2000 by Amir Israeli
	CRegistry : Serialize Data In/Out of the Registry
	 
	Amir Israeli
	 
	Very sophisticated class for serializing your date to the Registry
	
How to use STL's reverse algorithm to reverse an array? [Article, Visual C++] www.mindcracker.com 01-Aug-2000 by Mahesh Chand
	How to use STL's reverse algorithm to reverse an array?
	 
	Mahesh Chand
	 
	01-Aug-2000
	 
	01-Aug-2000
	
Offline -- But Not Disconnected From Your Data [Offline, Article, Lotus Notes] Notes Advisor 01-Aug-2000 by Rocky Oliver
Web Development - Lotus Notes & Domino Advisor - August 2000 
	Offline -- But Not Disconnected From Your Data
	 
	Rocky Oliver
	
DOLS 101 for Administrators [DOLS, Article, Lotus Notes] Notes Advisor 01-Aug-2000 by Henry Newberry
DOMINO OFF-LINE SERVICES - Lotus Notes & Domino Advisor - August 2000 
	DOLS 101 for Administrators
	 
	Henry Newberry
	
Take Your Web Applications Offline [Web, Offline, Article, Lotus Notes] Notes Advisor 01-Aug-2000 by Henry Newberry
DOMINO OFFLINE SERVICES - Lotus Notes & Domino Advisor - August 2000 
	Take Your Web Applications Offline
	 
	Henry Newberry
	
Reuse Code for Mixed-Client Development [Reuse, Article, Lotus Notes] Notes Advisor 01-Aug-2000 by Jennifer Bisk
Mixed-Client Development - Lotus Notes & Domino Advisor - August 2000 
	Reuse Code for Mixed-Client Development
	 
	Jennifer Bisk
	
Let Developers Be Developers [Article, Lotus Notes] Notes Advisor 01-Aug-2000 by David Leedy
Web Development - Lotus Notes & Domino Advisor - August 2000 
	Let Developers Be Developers
	 
	David Leedy
	
Mimic Pages and Resources in 4.6x [Article, Lotus Notes] Notes Advisor 01-Aug-2000 by James Ray
Web Development - Lotus Notes & Domino Advisor - August 2000 
	Mimic Pages and Resources in 4.6x
	 
	James Ray
	
Send Notes Links Outside of Domino [Link, Domino, Article, Lotus Notes] Notes Advisor 01-Aug-2000 by W Colin Judge
Workflow - Lotus Notes & Domino Advisor - August 2000 
	Send Notes Links Outside of Domino
	 
	W Colin Judge
	
CRegistry : Serialize Data In/Out of the Registry [Article, Visual C++] www.earthweb.com 01-Aug-2000 by Amir Israeli
	CRegistry : Serialize Data In/Out of the Registry
	 
	Amir Israeli
	 
	1-Aug-2000
	 
	1-Aug-2000
	 
	This is a very sophisticated class for serializing your date to the 
Registry.
	
Custom Comment-Out Macro [Article, Visual C++] www.earthweb.com 01-Aug-2000 by Ilic Ferretti
	Custom Comment-Out Macro
	 
	Ilic Ferretti
	 
	1-Aug-2000
	 
	1-Aug-2000
	 
	Aside from Visual Basic and C++ comments, this macro also supports 
Python script, scripts inside HTML pages, VBScript and Javascript
	
My Own Database [Article, Delphi] delphi.about.com 01-Aug-2000
	01-Aug-2000
	 
	01-Aug-2000
	 
	My Own Database
	 
	Working with binary files from Delphi. Use Object Pascal to manage 
writing, reading and updating your own types of files.
	
Applying an update UI notification interface to user-defined controls [Control, Article, Visual C++] www.codeproject.com 31-Jul-2000 by Bernd Giesen
	Applying an update UI notification interface to user-defined controls
	 
	Bernd Giesen
	 
	A C++/MFC sample how to implement UI notifications for user-defined 
controls
	
Mining The Web [Article, Visual Basic] visualbasic.about.com 31-Jul-2000
	31-Jul-2000
	 
	31-Jul-2000
	  
	Mining The Web
	 
	With the introduction of the Microsoft Internet Transfer control it has 
never been easier to build a simple utility to gather information from remote 
servers or web sites. In this article, we'll be coding an application that can 
retrieve stock quotes from an online financial service.
	
The Next Generation Internet: Postcards from PDC [.NET, Article, Visual C++] www.codeproject.com 30-Jul-2000 by Chris Maunder
	The Next Generation Internet: Postcards from PDC
	 
	Chris Maunder
	 
	Some pics from PDC 2000.
	
Align your code [Macro, Add-in, Article, Visual C++] www.codeproject.com 30-Jul-2000 by Scott Kirkwood
	Align your code
	 
	Scott Kirkwood
	 
	Align multiple lines of assignments after the equal sign, for example
	
Tree control and Buttons for MFC Grid Control [Control, MFC, Grid Control, Article, Visual C++] www.codeproject.com 30-Jul-2000 by Ken Bertelson
	Tree control and Buttons for MFC Grid Control
	 
	Ken Bertelson
	 
	A set of classes derived from CGridCtrl that embed a tree control, 
button controls, and virtual cells within the grid
	
Using comboboxes in the MFC Grid Control [Control, MFC, Grid Control, Article, Visual C++] www.codeproject.com 30-Jul-2000 by Chris Maunder
	Using comboboxes in the MFC Grid Control
	 
	Chris Maunder
	 
	Explains how to use comboboxes to edit cells in the MFC Grid Control
	
Performance Monitor: Get System Counter Values (CPU, Memory, etc.) [System, Article, Visual C++] www.codeguru.com 30-Jul-2000 by Mike Ryan
	Performance Monitor: Get System Counter Values (CPU, Memory, etc.)
	 
	Mike Ryan
	 
	Great Windows 2000 resource meter application
	
Getting the Module (exe) Filename from an HWND [System, Update, Article, Visual C++] www.codeguru.com 30-Jul-2000 by Mike Ryan
	Getting the Module (exe) Filename from an HWND
	 
	Mike Ryan
	 
	Windows 9x and the NTVDM 16-bit processes
	
Alpha Blending (Transparent) Windows [UI, Article, Visual C++] www.codeguru.com 30-Jul-2000 by Mike Ryan
	Alpha Blending (Transparent) Windows
	 
	Mike Ryan
	 
	Article that illustrates how to enable the new Alpha Blending features 
of Microsoft Windows 2000
	
ComboBox with Tree Dropdown [Combobox, Update, Article, Visual C++] www.codeguru.com 30-Jul-2000 by Dennis Howard
	ComboBox with Tree Dropdown
	 
	Dennis Howard
	 
	Corrects a slight painting bug as well as issues related to emulating 
the droplist style ComboBox
	
Getting the Module (exe) Filename from an HWND [Article, Visual C++] www.earthweb.com 30-Jul-2000 by Mike Ryan
	Getting the Module (exe) Filename from an HWND
	 
	Mike Ryan
	 
	30-Jul-2000
	 
	30-Jul-2000
	 
	Very useful class that also includes the ability to filter out specific 
module names and types
	
Performance Monitor - Get System Counter Values (CPU, Memory, etc.) [Article, Visual C++] www.earthweb.com 30-Jul-2000 by Mike Ryan
	Performance Monitor - Get System Counter Values (CPU, Memory, etc.)
	 
	Mike Ryan
	 
	30-Jul-2000
	 
	30-Jul-2000
	 
	Great Windows 2000 resource meter application
	
Alpha Blending (Transparent) Windows [Article, Visual C++] www.earthweb.com 30-Jul-2000 by Mike Ryan
	Alpha Blending (Transparent) Windows
	 
	Mike Ryan
	 
	30-Jul-2000
	 
	30-Jul-2000
	 
	Learn how to enable the new Alpha Blending features of Microsoft 
Windows 2000.
	
BTree .... A class for managing binary trees [Class, Binary Tree, Visual Basic, VB Class Module] www.vb2themax.com 29-Jul-2000 by John Holfelder
BTree - A class for managing binary trees 
Date: 7/29/2000 
Versions: VB5 VB6 Level: Intermediate
Author: John Holfelder
 
ucCalendar .... how to create your own calendar control [Calendar, UserControl, Visual Basic, VB UserControl] www.codeoftheweek.com 29-Jul-2000, no. 126
Requirements

Visual Basic 5.0 or higher.

In this issue we discuss how to create your own calendar control.


ucCalendar

There are many calendar controls on the market these days.  Most
of those controls do not include source code to modify if the
control does not quite perform the function you want it to.  This
calendar control is also pretty lightweight.  Most of the work
occurs in a single routine called RedrawCalendar.  It does not
depend on anything other than the Visual Basic run time libraries
(ie no third party controls).

This control contains the basic logic to create a language
independent calendar with the ability to view a month at a time.
It can easily be used in a control array to view multiple months
at a time.

One limitation we took was with the Font properties.  Instead of
using the full font object we just allowed setting the FontSize
and FontName.  Of course you can enhance this to include
additional properties.

There are many ways this control can be enhanced.  If an enhanced
version of this control would be useful to you, please email us at
calendar@codeoftheweek.com


Properties
----------

Public Property Let BackColor(lBackColor As Long)

Allows the setting of the background color for the calendar.  The
standard colors such as vbWhite, vbRed, etc can be used.  Thr RGB
function can also be used here.


Public Property Get FontName() As String
Public Property Let FontName(sFontName As String)

The name of the font to use when drawing the numbers and text in
the calendar.


Public Property Let FontSize(lFontSize As Long)
Public Property Get FontSize() As Long

The size of the font to use when drawing the numbers and the text
in the calendar.


Public Property Let Month(lMonth As Long)
Public Property Get Month() As Long

The number of the month to show.  It should be in the range of 1
for January and 12 for December.


Public Property Let Year(lYear As Long)
Public Property Get Year() As Long

The number of the year to sho ... (cont.)
GetArrayInfo - Retreive number of dimensions and the SAFEARRAY memory structure (using: Visual Basic 6.0) [SafeArray, SAFEARRAY, SAFEARRAYBOUND, Visual Basic, Solution] www.vb2themax.com 29-Jul-2000
GetArrayInfo - Retreive number of dimensions and the SAFEARRAY memory structure 
Date: 7/29/2000 
Versions: VB5 VB6 Level: Advanced
Author: Monte Hansen

Type SAFEARRAYBOUND
    cElements   As Long      ' # of elements in the array dimension
    lLbound     As Long      ' lower bounds of the array dimension
End Type

Type SAFEARRAY
    cDims       As Integer   ' Count of dimensions in this array.
    fFeatures   As Integer   ' Flags used by the SAFEARRAY routines documented 
                             ' below.
    cbElements  As Long      ' Size of an element of the array.
    cLocks      As Long      ' Number of times the array has been
                             ' locked without corresponding unlock.
    pvData      As Long      ' Pointer to the data.
    rgsabound(1 To 60) As SAFEARRAYBOUND   ' One bound for each dimension.
    ' An array can have max 60 dimensions, only the first cDims items will be 
    ' used
    ' note that rgsabound elements are in reverse order,
    '  e.g. for a 2-dimensional
    ' array, rgsabound(1) holds info about columns, and rgsabound(2) about rows
End Type

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As _
    Any, source As Any, ByVal bytes As Long)
Private Const VT_BYREF = &H4000&

' Fills a SAFEARRAY structure for the supplied array.
'
' The information contained in the SAFEARRAY structure allows
' the caller to identify the number of dimensions and the
' number of elements for each dimension (among other things).
' Element information for each dimension is stored in a
' one-based sub-array of SAFEARRAYBOUND structures (rgsabound).
'
'   TheArray        The array to get information on.
'   ArrayInfo       The output SAFEARRAY structure.
'
'   RETURNS         The number of dimensions of the array
'                   or zero if the array isn't dimensioned

Function GetArrayInfo(TheArray As Variant, ArrayInfo As SAFEARRAY) As Boolean
    Dim lp As Long         ' work pointer variable
    Dim VType As I ... (cont.)
Creating help string for Enum constants (using: Visual Basic 6.0) [Enumerate, Help, IDL, MIDL, Visual Basic, Solution] www.vb2themax.com 29-Jul-2000
Creating help string for Enum constants 
Date: 7/29/2000 
Versions: VB5 VB6 Level: Advanced

Author: Carl-Johan Lindgren
I've been trying to find a way to assign helpstrings for Enums in Visual Basic. 
The Class builder utility does that only for methods, events, and properties, 
but not for Enums.

The IDL source code that corresponds to an Enum in a type library looks 
something like follws, and you can run the MIDL compiler on this IDL to make a 
typelib that include help strings for Enums and thus has a more professional 
look. 

typedef [uuid(742F2A4D-8B13-4DF0-905E-91D03769A49C), version(1.0),
helpstring("Enums for ASPMtnSms")]
    enum {
           [helpstring("Auto login")] <<<--- INSERT this helpstring
           amsAutoLogin = 0
         } AspMtnSMSEnum;

Run the following command to generate aspmtnsms.tlb 

MIDL aspmtnsms.dll /mktyplib203 

Unfortunately, there is no way - or at least I can't devise it - to incorporate 
this into a VB component (dll) instead of a stand-alone type library.  
Non-obvious uses for the Like operator (using: Visual Basic 6.0) [Like Operator, Visual Basic, Tip] www.vb2themax.com 29-Jul-2000
Non-obvious uses for the Like operator
________________________________________________________
LIKE is probably the most underutilized VB operator when compared to its
potential. The most immediate use for this operator is to check that a string
begins or ends with a given pattern. For example, it is simple to check that a
Product ID is made up of an alphabetic character followed by three digits:

If ProductID Like "[A-Za-z][0-9][0-9][0-9]" Then Print "OK"
' this is equivalent, because "#" stands for a digit
If ProductID Like "[A-Za-z]###" Then Print "OK"

But there are other cases when LIKE can be very useful. For example, you can
check that a string contains only uppercase alphabetical characters by
transforming the condition into "check that the string doesn't contain any
non-alphabetical character", as follows:

If Not ProductID Like "*[!A-Z]*" Then Print "OK"

Similarly, you can check that a string contains only digits with:

If Not ProductID Like "*[!0-9]*" Then Print "OK"

The following statement checks that a string doesn't contain any symbol (which
means it contains only alpha-numeric characters):

If Not ProductID Like "*[!A-Za-z0-9]*" Then Print "OK"

The following statement checks that a string follows the rules for a valid VB
variable name, that is, it's an alphabetic character followed by zero or more
alphanumeric characters:

' VarName contains the string to test
If VarName like "[A-Za-z]*" And Not Mid$(VarName, 2) Like "*[!A-Z_a-z0-9]*" Then
Print "OK"

The following statement checks that a string contains exactly two spaces
(consecutive or not):

If TestString Like "* * *" Then Print "OK"

while the following test ensures that the two spaces are not consecutive:

If TestString Like "* ?* *" Then Print "OK"

Checking a signed integer is more complicated, because you must account for the
leading sign and must provide the correct number of "#" symbols:

' NumValue contains the string to test
If NumValue Like "#" Or (Len(NumValue) > 1 And NumValue Like ... (cont.)
How to Kill an Orphaned Process (using: Windows NT 4.0) [Process, Task Manager, Windows NT, Tip] www.microsoft.com 29-Jul-2000
How to Kill an Orphaned Process 

The information in this article applies to:

Microsoft Windows NT Server version 4.0 
Microsoft Windows NT Workstation version 4.0 
Microsoft Windows NT Server version 4.0, Terminal Server Edition 
Microsoft Windows 2000 Professional 
Microsoft Windows 2000 Server 
Microsoft Windows 2000 Advanced Server

SUMMARY
When a service terminates abnormally, it sometimes leaves "orphaned" child 
processes behind. This article describes several ways to remove such a process. 

MORE INFORMATION

The easiest method to use is the KILL command from the Windows NT Server 4.0 
Resource Kit: 

KILL  

-or- 

KILL -F  

The list of processes and process IDs can be obtained from the Task Manager or 
with the TLIST utility from the Windows NT Server 4.0 Resource Kit. 

If neither of these commands work, and the Schedule service is running on that 
computer in the Local System context, you might be able to successfully 
terminate the process by scheduling one of the above commands with the AT 
utility: 


AT 
Cool Push Menu Button [Button Control, Menu, Office, Article, Visual C++] www.codeproject.com 29-Jul-2000 by Norm Almond
	Cool Push Menu Button
	 
	Norm Almond
	 
	This article shows the use of a Push button with a drop down menu, 
similar to the one found in the Office 2000 suite.
	
Exposing tabular data from your COM object, Part 1 [Database, COM, ADO, ATL, Template, Article, Visual C++] www.codeproject.com 29-Jul-2000 by Len Holgate
	Exposing tabular data from your COM object, Part 1
	 
	Len Holgate
	 
	ADO seems to be the ideal way to expose tabular data from your own COM 
objects and the ATL OLE DB Provider Templates can help!
	
Exposing tabular data from your COM object, Part 2 [Database, COM, ATL, Template, Article, Visual C++] www.codeproject.com 29-Jul-2000 by Len Holgate
	Exposing tabular data from your COM object, Part 2
	 
	Len Holgate
	 
	The ATL OLE DB Provider Templates appear to rely on the fact that your 
data is kept in a simple array, but that's not really the case at all!
	
Exposing tabular data from your COM object, Part 3 [Database, COM, ADO, Article, Visual C++] www.codeproject.com 29-Jul-2000 by Len Holgate
	Exposing tabular data from your COM object, Part 3
	 
	Len Holgate
	 
	Adding bookmark functionality is relatively easy and it enables our ADO 
recordset to be used with a greater number of data bound controls.
	
Using JavaScript to handle drop-down list selections [JavaScript, Article, Visual C++] www.codeproject.com 29-Jul-2000 by Chris Maunder
	Using JavaScript to handle drop-down list selections
	 
	Chris Maunder
	 
	A simple method of making dropdown lists automatically navigate to a 
new page when a new selection is made.
	
Raw TCP/IP library for Windows 2000 [Network, Article, Visual C++] www.codeguru.com 29-Jul-2000 by Barak Weichselbaum
	Raw TCP/IP library for Windows 2000
	 
	Barak Weichselbaum
	 
	
	
CNewLabel : Advanced CStatic-Derived Class [Static Control, Article, Visual C++] www.codeguru.com 29-Jul-2000 by Mike Marquet
	CNewLabel : Advanced CStatic-Derived Class
	 
	Mike Marquet
	 
	Includes very cool features such as multi-line support, text flashing, 
bevelled lines and complete color control
	
Raw TCP/IP Library for Win2000 [Article, Visual C++] www.earthweb.com 29-Jul-2000 by Barak Weichselbaum
	Raw TCP/IP Library for Win2000
	 
	Barak Weichselbaum
	 
	29-Jul-2000
	 
	29-Jul-2000
	 
	This library enumarates the TCP/IP protocol, and allows the user to 
create custom TCP/IP headers; this allows IP spoofing and other kinds of 
attacks.
	
CNewLabel : Advanced CStatic-Derived Class [Article, Visual C++] www.earthweb.com 29-Jul-2000 by Mike Marquet
	CNewLabel : Advanced CStatic-Derived Class
	 
	Mike Marquet
	 
	29-Jul-2000
	 
	29-Jul-2000
	 
	This class (CNewLabel) is derived from CStatic and performs a lot of 
things that the CStatic class can not do.
	
Self-Aware Data Wrapper Objects (using: Visual Basic 6.0) [CallByName Function, Document Object Model, DOM, TLBINF32.DLL, Type Library Information Component, XML, Visual Basic, Solution] www.vb2themax.com 28-Jul-2000 by Syd Egan
Self-Aware Data Wrapper Objects with VB 

by Syd Egan

If you’re one of the thousands of programmers out there writing server-side 
business components, then
you’ve probably used data wrappers: light-weight objects designed to access 
streamed data. The
following article builds on the traditional wrapper concept to create 
self-aware objects, which offer the
added benefits of simplicity and re-use.

As any good component programmer will tell you, it is always important to 
minimize the number of calls
between objects; and one of the ways we achieve this is to pack all of our data 
up into "streams" to
pass it from one object to another. Instead of passing, say CustomerID, Name, 
and Email as separate
properties, we wrap them up into a single string; perhaps an XML stream, like 
so:


   1234
   John Doe
   john@doe.com


Often the easiest way to manage these strings in our code, is by writing a 
data-wrapper – a custom
class, which gives access to all the pieces of data through COM properties: 
objCustomer.CustomerID,
objCustomer.Email, and so on. 

However, we also know that data wrappers can be a pain to write – stream and 
un-stream methods are
fiddly (do this property, so that property, do the other property….), and you 
have to re-write them from
scratch every time, often by cutting and hacking code from similar objects 
elsewhere in the system.
What a drag. Wouldn’t it be nice if we could write a data wrapper once, and 
then re-use it in a variety of
scenarios, with only minimal "two-minute" modifications? This article shows you 
how.

The solution is to write an object that discovers its own properties. That way, 
your stream and un-stream
methods only have to be written once, and then you just add or remove 
properties to create exactly the
wrapper you need. The solution uses a little-documented Win32 object - the Type 
Library Information
component: TLBINF32.dll. 

The Type Librar ... (cont.)
Introduction to COM: What It Is and How to Use It. [COM, DCOM, Component, Component, Shell, Article, Visual C++] www.codeproject.com 28-Jul-2000 by Michael Dunn
	Introduction to COM: What It Is and How to Use It.
	 
	Michael Dunn
	 
	A tutorial for programmers new to COM that explains how to reuse 
existing COM Components, for example, Components in the Windows Shell.
	
A picture based skin system and MPEG decoder [Dialog, Windows Programming, MFC, Article, Visual C++] www.codeproject.com 28-Jul-2000 by Cuneyt Elibol
	A picture based skin system and MPEG decoder
	 
	Cuneyt Elibol
	 
	A picture based skin system for MFC that allows the user to customise 
their dialogs. The system is demonstrated by presenting a fully functioning 
MPEG decoder application.
	
CXWndAnimate: an alternative to CAnimateCtrl [Control, CAnimateCtrl Class, Bitmap, Article, Visual C++] www.codeproject.com 28-Jul-2000 by Xicoloko
	CXWndAnimate: an alternative to CAnimateCtrl
	 
	Xicoloko
	 
	An animation control that uses a Bitmap imagelist instead of an AVI file
	
An Image (GIF, JPEG, BMP, ICO, WMF and EMF) Viewer [Multimedia, Update, Article, Visual C++] www.codeguru.com 28-Jul-2000 by Chensu
	An Image (GIF, JPEG, BMP, ICO, WMF and EMF) Viewer
	 
	Chensu
	 
	MFC application that can load, display and print almost any standard 
graphics image
	
ComboBox with Tree Dropdown [Combobox, Article, Visual C++] www.codeguru.com 28-Jul-2000 by Dennis Howard
	ComboBox with Tree Dropdown
	 
	Dennis Howard
	 
	This is a hybrid ComboBox with a Tree View replacing the drop down 
Listbox
	
How to detect memory leaks in your program? [Article, Visual C++] www.mindcracker.com 28-Jul-2000 by Mahesh Chand
	How to detect memory leaks in your program?
	 
	Mahesh Chand
	 
	28-Jul-2000
	 
	28-Jul-2000
	
ComboBox with Tree Dropdown [Article, Visual C++] www.earthweb.com 28-Jul-2000 by Dennis Howard
	ComboBox with Tree Dropdown
	 
	Dennis Howard
	 
	28-Jul-2000
	 
	28-Jul-2000
	 
	This is a hybrid ComboBox with a tree control replacing the drop down 
ListBox.
	
An Image Viewer [Article, Visual C++] www.earthweb.com 28-Jul-2000
	An Image Viewer
	 
	-N/A
	 
	28-Jul-2000
	 
	28-Jul-2000
	 
	This is an MFC application using the document/view architecture that 
can load, display and print graphics files.
	
Generate Help Macro File Tool [Tool, Article, Visual C++] www.codeproject.com 27-Jul-2000 by Blake V Miller
	Generate Help Macro File Tool
	 
	Blake V Miller
	 
	A tool to generate help macro files for your VC++ project.
	
WTL Tool Bar Drop-Down Extension [Windows Template Library, WTL, Article, Visual C++] www.codeproject.com 27-Jul-2000 by Ben Burnett
	WTL Tool Bar Drop-Down Extension
	 
	Ben Burnett
	 
	An article on extending the tool bar control using the Window Template 
Library
	
WTL: Button Menu [ATL, COM, Article, Visual C++] www.codeguru.com 27-Jul-2000 by David Peterson
	WTL: Button Menu
	 
	David Peterson
	 
	Very cool button with arrow image that when pressed drops down a menu
	
Passing an Array of Values to the Visual C++ MSChart OCX [Control, Article, Visual C++] www.codeguru.com 27-Jul-2000 by JL Colson
	Passing an Array of Values to the Visual C++ MSChart OCX
	 
	JL Colson
	 
	Great step-by-step instructions to passing data to the VC++ MSChart 
component
	
Passing an Array of Values to the Visual C++ MSChart OCX [Article, Visual C++] www.earthweb.com 27-Jul-2000 by J L Colson
	Passing an Array of Values to the Visual C++ MSChart OCX
	 
	J L Colson
	 
	27-Jul-2000
	 
	27-Jul-2000
	 
	Great step-by-step instructions to passing data to the VC++ MSChart 
component
	
Speech Enable Your App [Article, Visual Basic] visualbasic.about.com 26-Jul-2000
	26-Jul-2000
	 
	26-Jul-2000
	  
	Speech Enable Your App
	 
	Have you ever wanted to operate your applications hands free? Imagine 
simply speaking to your PC to launch a web browser, check your email or edit a 
document in your favourite word processor. Your Guide shows you how to speech 
enable your VB application!
	
Simple Real-time Class for Advanced Charts and Plotting [Control, Article, Visual C++] www.codeguru.com 26-Jul-2000 by Yuantu Huang
	Simple Real-time Class for Advanced Charts and Plotting
	 
	Yuantu Huang
	 
	Great for real-time applications plotting charts using dynamic 
engineering data
	
Creating Skins with SkinSys Ver 1.0 [UI, Article, Visual C++] www.codeguru.com 26-Jul-2000 by Cuneyt Elibol
	Creating Skins with SkinSys Ver 1.0
	 
	Cuneyt Elibol
	 
	MFC-based application for creating and editing skins for your 
applications
	
Download a URL contents (using InternetOpenUrl) [Article, Visual C++] www.mindcracker.com 26-Jul-2000 by Mahesh Chand
	Download a URL contents (using InternetOpenUrl)
	 
	Sample project attached
	 
	Mahesh Chand
	 
	26-Jul-2000
	 
	26-Jul-2000
	
Extending CPictureHolder for loading BMP, JPG, etc. [Article, Visual C++] www.earthweb.com 26-Jul-2000 by Roger Onslow
	Extending CPictureHolder for loading BMP, JPG, etc.
	 
	Roger Onslow
	 
	26-Jul-2000
	 
	26-Jul-2000
	 
	This class extends the MFC CPictureHolder class to include better 
support for enhanced metafiles, access to picture handles, loading from files, 
and other capabilities.
	
Creating Skins with SkinSys Ver 1.0 [Article, Visual C++] www.earthweb.com 26-Jul-2000 by Cuneyt Elibol
	Creating Skins with SkinSys Ver 1.0
	 
	Cuneyt Elibol
	 
	26-Jul-2000
	 
	26-Jul-2000
	 
	Learn to create skins with a picture-based skin system written in 
Visual C++/MFC.
	
Extending CPictureHolder for loading BMP, JPG, etc. [Multimedia, Article, Visual C++] www.codeguru.com 25-Jul-2000 by Roger Onslow
	Extending CPictureHolder for loading BMP, JPG, etc.
	 
	Roger Onslow
	 
	Adds several ehancements to the standard MFC CPictureHolder class
	
Simple String Class [String, Article, Visual C++] www.codeguru.com 25-Jul-2000 by Yuantu Huang
	Simple String Class
	 
	Yuantu Huang
	 
	Includes methods for formatting, searching (using wild cards) and 
numeric conversion to different data types
	
Simple Real-time Class for Advanced Charts and Plotting [Article, Visual C++] www.earthweb.com 25-Jul-2000 by Yuantu Huang
	Simple Real-time Class for Advanced Charts and Plotting
	 
	Yuantu Huang
	 
	25-Jul-2000
	 
	25-Jul-2000
	 
	Great for real-time applications plotting charts using dynamic 
engineering data
	
About XML and Delphi [Article, Delphi] delphi.about.com 25-Jul-2000
	25-Jul-2000
	 
	25-Jul-2000
	 
	About XML and Delphi
	 
	Everything you need to know about Delphi and the Extensible Markup 
Language. Find out about creating and parsing XML documents, look for parser 
components and more.
	
2D Chart and 3D Waterfall Chart Control [Control, Article, Visual C++] www.codeguru.com 24-Jul-2000 by Kris Jearakul
	2D Chart and 3D Waterfall Chart Control
	 
	Kris Jearakul
	 
	CWnd-derived class that provides the functionality of Windows plotting 
chart control
	
IPC Using Connection Points and EventSinks. [ATL, Article, Visual C++] www.codeguru.com 24-Jul-2000 by Yaniv Karta
	IPC Using Connection Points and EventSinks.
	 
	Yaniv Karta
	 
	Step-by-step instructions on building an IPC mechanism using ATL 
Connection Points and EventSinks
	
2D Chart and 3D Waterfall Chart Control [Article, Visual C++] www.earthweb.com 24-Jul-2000 by Kris Jearakul
	2D Chart and 3D Waterfall Chart Control
	 
	Kris Jearakul
	 
	24-Jul-2000
	 
	24-Jul-2000
	 
	CWnd-derived class that provides the functionality of Windows plotting 
chart control
	
IPC Using Connection Points and EventSinks [Article, Visual C++] www.earthweb.com 24-Jul-2000 by Yaniv Karta
	IPC Using Connection Points and EventSinks
	 
	Yaniv Karta
	 
	24-Jul-2000
	 
	24-Jul-2000
	 
	Step-by-step instructions on building an IPC mechanism using ATL 
Connection Points and EventSinks.
	
Simple to Use, Yet Powerful Graphics Classes [Control, Article, Visual C++] www.codeguru.com 23-Jul-2000 by Yuantu Huang
	Simple to Use, Yet Powerful Graphics Classes
	 
	Yuantu Huang
	 
	Create some very cool charts very easily with these simple to use 
graphics classes
	
Detecting the Display Font Size [GDI, Article, Visual C++] www.codeguru.com 23-Jul-2000 by Chensu
	Detecting the Display Font Size
	 
	Chensu
	 
	Simple function to enable you to programmatically detect the 
user-selected font at runtime
	
The WNDCTRL Reusable Class [UI, Article, Visual C++] www.codeguru.com 23-Jul-2000 by Noman Nadeem
	The WNDCTRL Reusable Class
	 
	Noman Nadeem
	 
	Easy to use class that enables the showing and hiding of groups of 
controls on a dialog or view
	
Simple to Use, Yet Powerful Graphics Classes [Article, Visual C++] www.earthweb.com 23-Jul-2000 by Yuantu Huang
	Simple to Use, Yet Powerful Graphics Classes
	 
	Yuantu Huang
	 
	23-Jul-2000
	 
	23-Jul-2000
	 
	Create some very cool charts very easily with these simple to use 
graphics classes
	
The WNDCTRL Reusable Class [Article, Visual C++] www.earthweb.com 23-Jul-2000 by Noman Nadeem
	The WNDCTRL Reusable Class
	 
	Noman Nadeem
	 
	23-Jul-2000
	 
	23-Jul-2000
	 
	This re-usable class basically accomodates the existance of some hidden 
controls/windows.
	
Detecting the Display Font Size [Article, Visual C++] www.earthweb.com 23-Jul-2000
	Detecting the Display Font Size
	 
	-N/A
	 
	23-Jul-2000
	 
	23-Jul-2000
	 
	This handly little function will assist you in programmatically 
determining the selected font size.
	
MSExcel - A class for writing Excel spreadsheets (using: Visual Basic 6.0) [Class Module, Excel, Spreadsheet, Visual Basic, Solution] www.vb2themax.com 22-Jul-2000 by Steve Miller
MSExcel - A class for writing Excel spreadsheets 
Date: 7/22/2000 
Versions: VB5 VB6 Level: Intermediate
Author: Stevel Miller

'***********************************************************
'* Module Name: MSExcel
'* Author:      Steve Miller
'* Date:        11/22/98
'* Description: Encapsulates and eases the chore of writing to an Excel 
' spreadsheet.
'*
'* IMPORTANT: requires that you have a reference to Excel type library
'*
'* Example:     Here is an example of how to use this class:
'*   Dim objXL As New ttExcel.Application                   'Instantiate the 
' object
'*   Call objXL.OpenExcelFile(FileName:="c:\SMTest.xls",
'  '*        WorkSheetName:="MyWorksheet", '*        AppendDayofWk:=True)       
'                        'Open the Excel file
'*   Call objXL.StoreExcelRow(A:="Hello", B:="World")       'Write a row to the 
' Excel file
'*   Call objXL.StoreExcelBlankRows(NbrRows:=10)            'Skip blank rows in 
' the Excel file
'*   Call objXL.StoreExcelRow(A:="Skipped 10 rows")
'*   Call objXL.SetExcelCellWidthAutoFit                    'Auto size the 
' column widths
'*   Call objXL.SetExcelCellWidth(Cell:="A", Width:=25)     'Manually set a 
' column width
'*   Call objXL.CloseExcelFile                              'Close the Excel 
' file
'*   Set objXL = Nothing                                    'Cleanup (release 
' memory)
'***********************************************************

Option Compare Text
Option Base 1                    'Start arrays at element 1 instead of 0

'Constants
Private Const m_constPgm As String = "MSExcel."
Private Const m_lngExcelLabelNotFound = 1004

'Objects
Private m_objWorkbook             As Workbook
Private m_objWorksheet            As Worksheet
Private m_objXL                   As Excel.Application
Private m_objPageSetup            As Excel.PageSetup
Private m_lxPageOrientation       As XlPageOrientation

'Strings
Private m_strExcelFileName          As String

'Longs
Private m_lngExcelRow               As  ... (cont.)
Beginning or end of previous week (using: Visual Basic 6.0) [Date, Visual Basic, Solution] www.vb2themax.com 22-Jul-2000 by Stevel Miller, Steve Miller
The beginning or end of previous week 
Date: 7/22/2000 
Versions: VB5 VB6 Level: Intermediate
Author: Steve Miller
For reporting, many times you need to figure out what date last week began and 
ended. Use the code below to figure that out: 

Dim vntBegin As variant
Dim vntEnd As variant
Const constSunday As Integer = 1
GetPriorWorkWeek BeginDayOfWeek:=constSunday, WeekBegin:=vntBegin, _
    WeekEnd:=vntEnd
Print "Begin of Week: " & vtnBegin & ", End of Week: " & vtnEnd

This is the complete code of the GetPriorWorkWeek routine. You can easily 
modify it to work with any date passed as an argument, not just the current 
system date: 
' Determine the date of the beginning and end of a week based on today
' and the day the week begins on
'
' Input        : BeginDayOfWeek: 1 = Sunday thru 7 = Saturday
' Input/Output : WeekBegin: It sets this to the first day of prior work week
'                WeekEnd: It sets this to the last day of the prior work week

Sub GetPriorWorkWeek(ByVal BeginDayOfWeek As Integer, Optional ByVal WeekBegin _
    As Variant, Optional ByVal WeekEnd As Variant)

   Dim dteDate As Date
   Dim blnFound As Boolean

   If BeginDayOfWeek < 1 Or BeginDayOfWeek > 7 Then
      Err.Raise Number:=1000, Source:="GetLastDayOfMonth", _
          Description:="Invalid BeginDayOfWeek, must be between 1 and 7"
   End If

   'Subtract 7 days ago to arrive at beginning date
   dteDate = DateAdd("d", -7, Now)

   Do Until blnFound
      'If on the beginning of the week, stop;
      'otherwise go back until the first day of the week is found
      If Weekday(dteDate) = BeginDayOfWeek Then
         WeekBegin = dteDate
         blnFound = True
      Else
         dteDate = DateAdd("d", -1, dteDate)
      End If
   Loop

   WeekEnd = DateAdd("d", 6, WeekBegin)

End Sub

 
Sending Email Using CDO and MAPI (using: Visual Basic 6.0) [CDO, Mail, MAPI, Visual Basic, Solution] www.vb2themax.com 22-Jul-2000 by Steve Miller
Sending Email Using CDO and MAPI 
Date: 7/22/2000 
Versions: VB5 VB6 Level: Intermediate
Author: Steve Miller
Sending emails via code used to be cool, but now it is a necessity. Below is 
code to send email via CDO. If the CDO call fails, it will send using MAPI. 
NOTE: You must have CDO for NT referenced in your project for this to work. 

' Sends an email to the appropriate person(s)
'
' SendTo = List of email addresses separated by a semicolon.  Example:
'                          sm@xyz.com; steve@work.com; jane@home.com
' Subject = Text that summarizes what the email is about
' EmailText = Body of text that is the email
' AttachmentPath = Directory in which the attachment resides
' Attachment = File to send with the email

Sub SendEmail(From As String, SendTo As String, Subject As String, _
    EmailText As String, Optional AttachmentPath As String, _
    Optional Attachment As String, Optional CC As String)
    Const constRoutine As String = "SendEmail"

    Dim strSendTo As String
    Dim objSendMail As CDONTS.NewMail
    Dim i As Integer

    On Error GoTo TryMAPI
    
    'Do not cause the user a major error, just log the error and keep going
    If SendTo = "" Then Exit Sub

    Set objSendMail = New CDONTS.NewMail

    With objSendMail
        On Error Resume Next
        .From = From
        If CC <> "" Then
            .CC = CC
        End If

        On Error GoTo ErrorHandler
        .To = SendTo
        .Subject = Subject
        .Body = EmailText
        AttachmentPath = Trim$(AttachmentPath)
        
        If AttachmentPath <> "" Then
            If Right$(AttachmentPath, 1) <> "\" Then
                AttachmentPath = AttachmentPath & "\"
            End If
            .AttachFile (AttachmentPath & Attachment)
        End If
        .Send
    End With

    GoTo ExitMe

TryMAPI:
    On Error GoTo ErrorHandler

    'If CDO fails, try MAPI
    If CC <> "" Then
        strSendTo = SendTo & "; " & CC
    Else
        strSendTo = SendT ... (cont.)
Send HTML Email via CDO (using: Visual Basic 6.0) [CDO, HTML, Mail, Visual Basic, Solution] www.vb2themax.com 22-Jul-2000 by Steve Miller
Send HTML Email via CDO 
Date: 7/22/2000 
Versions: VB5 VB6 Level: Intermediate
Author: Steve Miller
Ever wonder how to send email that looks like a web page? Here is how you do 
it. Note: You must have CDO for NT referenced for this to work. 

'Sends an email to the appropriate person(s).
'
'From = Email address being sent from
'SendTo = List of email addresses separated by a semicolon.  Example:
'       sm@xyz.com; steve@work.com; jane@home.com
'Subject = Text that summarizes what the email is about
'HTMLText = Body of text that is the email
'AttachmentPath = Directory in which the attachment resides
'Attachment = File to send with the email

Sub SendEmailHTML(From As String, SendTo As String, Subject As String, _
    HTMLText As String, Optional AttachmentPath As String, _
    Optional Attachment As String, Optional CC As String)
    Const constRoutine As String = "SendEmailHTML"

    Dim strSendTo As String
    Dim objSendMail As CDONTS.NewMail
    Dim i As Integer

    On Error GoTo ErrorHandler
    'Do not cause the user a major error, just log the error and keep going
    
    If SendTo = "" Then Exit Sub

    Set objSendMail = New CDONTS.NewMail

    With objSendMail
        On Error Resume Next
        .From = From
        If CC <> "" Then
            .CC = CC
        End If

        On Error GoTo ErrorHandler
        .To = SendTo
        .Subject = Subject
        .Body = HTMLText
        .MailFormat = CdoMailFormats.CdoMailFormatMime
        .BodyFormat = CdoBodyFormats.CdoBodyFormatHTML
    
        AttachmentPath = Trim$(AttachmentPath)
        If AttachmentPath <> "" Then
            If Right$(AttachmentPath, 1) <> "\" Then
                AttachmentPath = AttachmentPath & "\"
            End If
            .AttachFile (AttachmentPath & Attachment)
        End If
        .Send
    End With
    
ExitMe:
    Set objSendMail = Nothing
    Exit Sub

ErrorHandler:
    'Send error back
    Err.Raise Err.Number, Err.Source, Err.Description

E ... (cont.)
IsValidSSN - Check a Social Security Number value (using: Visual Basic 6.0) [Validation, Visual Basic, Solution] www.vb2themax.com 22-Jul-2000 by Steve Miller
IsValidSSN - Check a Social Security Number value 
Date: 7/22/2000 
Versions: VB4 VB5 VB6 VBS Level: Beginner
Author: Steve Miller

' Validates attributes of the SSN
' Returns True if valid, False if invalid
'
'Example:
'   If IsValidSSN(Value:="333-44-3333", IsRequired:=True) then ...

Function IsValidSSN(ByRef Value As String, Optional ByVal IsRequired As Boolean 
_
    = True) As Boolean

    On Error GoTo ErrorHandler
    Dim strTemp As String
    Dim i As Integer
    Dim intMax As Integer

    IsValidSSN = True
    Value = Trim$(Value)

    If Value = "" Then
        If IsRequired Then
            IsValidSSN = False
        Else
            Exit Function
        End If
    End If

    intMax = Len(Value)
    For i = 1 To intMax
        Select Case Mid$(Value, i, 1)
            Case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
                strTemp = strTemp & Mid$(Value, i, 1)
        End Select
    Next i

    Value = strTemp

    If Len(Value) <> 9 Then
        IsValidSSN = False
    Else
        Value = Left$(strTemp, 3) & "-" & Mid$(strTemp, 4, _
            2) & "-" & Mid$(strTemp, 6, 4)
    End If

ExitMe:
    Exit Function

ErrorHandler:
    Err.Raise Err.Number, "IsValidSSN", Err.Description

End Function

'###########################################################
'#
'#   This rountime has been brought to you by 
'#   Pragmatic Software Co. Inc, the creators of Defect Tracker, 
'#   the tool of choice for tracking functional specifications, 
'#   test cases and software bugs.
'#   Learn more at http://www.DefectTracker.com.
'#   Affiliate program also available at 
'#   http://www.PragmaticSW.com/AffiliateSignup.
'#
'###########################################################

 
IsValidEmail - Validate an email address (using: Visual Basic 6.0) [E-mail, Validation, Visual Basic, Solution] www.vb2themax.com 22-Jul-2000 by Steve Miller
IsValidEmail - Validate an email address 
Date: 7/22/2000 
Versions: VB4 VB5 VB6 VBS Level: Beginner
Author: Steve Miller

' Validates an email address
' Returns True if valid, False if invalid
'
' Example:
' If IsValidEmail(Value:="x@y.com", MaxLength:=255, IsRequired:=True) then ...

Function IsValidEmail(ByRef Value As String, Optional ByVal MaxLength As Long = 
_
    255, Optional ByVal IsRequired As Boolean = True) As Boolean

    On Error GoTo ErrorHandler
    
    IsValidEmail = True
    
    Value = Trim$(Value)
    If IsRequired And Len(Value) = 0 Then
        IsValidEmail = False
    End If

    If Len(Value) > MaxLength Then
        IsValidEmail = False
    End If

    If Len(Value) > 0 Then
        If InStr(1, Value, "@") = 0 Then
            IsValidEmail = False
        End If
    End If

ExitMe:
    Exit Function

ErrorHandler:
    Err.Raise Err.Number, "IsValidEmail", Err.Description

End Function

'###########################################################
'#
'#   This rountime has been brought to you by 
'#   Pragmatic Software Co. Inc, the creators of Defect Tracker, 
'#   the tool of choice for tracking functional specifications, 
'#   test cases and software bugs.
'#   Learn more at http://www.DefectTracker.com.
'#   Affiliate program also available at 
'#   http://www.PragmaticSW.com/AffiliateSignup.
'#
'###########################################################

 
IsValidCreditCardNumber - Check whether a credit card number is valid (using: Visual Basic 6.0) [Credit Card Number, Validation, Visual Basic, Solution] www.vb2themax.com 22-Jul-2000 by Steve Miller
IsValidCreditCardNumber - Check whether a credit card number is valid 
Date: 7/22/2000 
Versions: VB4 VB5 VB6 VBS Level: Intermediate
Author: Steve Miller

' Validate a credit card numbers
' Returns True if valid, False if invalid
'
' Example:
'  If IsValidCreditCardNumber(Value:="1234-123456-12345", IsRequired:=True)

Function IsValidCreditCardNumber(Value As Variant, Optional ByVal IsRequired As 
_
    Boolean = True) As Boolean
    Dim strTemp As String
    Dim intCheckSum As Integer
    Dim blnDoubleFlag As Boolean
    Dim intDigit As Integer
    Dim i As Integer

    On Error GoTo ErrorHandler

    IsValidCreditCardNumber = True
    Value = Trim$(Value)

    If IsRequired And Len(Value) = 0 Then
        IsValidCreditCardNumber = False
    End If

    ' If after stripping out non-numerics, there is nothing left,
    '  they entered junk
    For i = 1 To Len(Value)
        If IsNumeric(Mid$(Value, i, 1)) Then strTemp = strTemp & Mid$(Value, i, 
_
            1)
    Next
    If IsRequired And Len(strTemp) = 0 Then
        IsValidCreditCardNumber = False
    End If

    'Handle different lengths for different credit card types
    Select Case Mid$(strTemp, 1, 1)
        Case "3"    'Amex
            If Len(strTemp) <> 15 Then
                IsValidCreditCardNumber = False
            Else
                Value = Mid$(strTemp, 1, 4) & "-" & Mid$(strTemp, 5, _
                    6) & "-" & Mid$(strTemp, 11, 5)
            End If
        Case "4"    'Visa
            If Len(strTemp) <> 16 Then
                IsValidCreditCardNumber = False
            Else
                Value = Mid$(strTemp, 1, 4) & "-" & Mid$(strTemp, 5, _
                    4) & "-" & Mid$(strTemp, 9, 4) & "-" & Mid$(strTemp, 13, 4)
            End If
        Case "5"    'Mastercard
            If Len(strTemp) <> 16 Then
                IsValidCreditCardNumber = False
            Else
                Value = Mid$(strTemp, 1, 4) & "-" & Mid$(strTemp, 5, _
                    4) & " ... (cont.)
IsValidPhoneField - Check whether a phone number is valid (using: Visual Basic 6.0) [Validation, Phone Number, Visual Basic, Solution] www.vb2themax.com 22-Jul-2000 by Steve Miller
IsValidPhoneField - Check whether a phone number is valid 
Date: 7/22/2000 
Versions: VB4 VB5 VB6 VBS Level: Intermediate
Author: Steve Miller

' Validate attributes of Phone data
' Returns True if valid, False if invalid
'
' Also returns the phone in formatted fashion (USA format).
' Will convert alphabetics to numeric
'
'Example:
'   If IsValidPhoneField(Value:="3034414444", ReformattedPhone:=strNewPhone,
'  '       IsRequired:=True, IsUSAPhone:=True) then ...

Function IsValidPhoneField(ByVal Caption As String, Value As Variant, _
    ReformattedPhone As String, Optional ByVal IsRequired As Boolean = True, _
    Optional ByVal IsUSAPhone As Boolean = True) As Boolean
    Dim intNbrDigits As Integer
    Dim strTemp As String
    Dim blnHasExtension As Boolean
    Dim strExtension As String
    Dim i As Integer

    On Error GoTo ErrorHandler
    
    IsValidPhoneField = True
    Value = Trim$(Value)

    If Value = "" Then
        If IsRequired Then
            IsValidPhoneField = False
        Else
            Exit Function
        End If
    End If

    If Len(Value) > 25 Then
        IsValidPhoneField = False
    End If

    If IsUSAPhone Then
        intNbrDigits = 0
        strTemp = ""
        blnHasExtension = False

        'Extract the extension if there is one.
        If Len(Value) <= 7 Then
            For i = 1 To Len(Value)
                If UCase$(Mid(Value, i, 1)) <> "X" Then
                    strTemp = Trim(strTemp) + Mid(Value, i, 1)
                End If
            Next
            If Len(strTemp) = 7 Then
                strTemp = ""
            Else
                blnHasExtension = True
                strExtension = Trim(strTemp)
                strTemp = ""
                Value = ""
            End If
        End If

        For i = Len(Value) To 1 Step -1
            If UCase$(Mid(Value, i, 2)) = " X" Then
                blnHasExtension = True
                strExtension = Mid(Value, i + 2, Len(Value) - (i + 1))
 ... (cont.)
IsValidDateField - Check whether a date is valid (using: Visual Basic 6.0) [Date, Validation, Visual Basic, Solution] www.vb2themax.com 22-Jul-2000 by Steve Miller
IsValidDateField - Check whether a date is valid 
Date: 7/22/2000 
Versions: VB4 VB5 VB6 VBS Level: Intermediate
Author: Steve Miller

Enum psDateTypes
    AnyValidDate    'Allows any valid date to be entered
    PastDate        'Only allows past dates (before today) to be entered
    FutureDate      'Only allows future dates (after today) to be entered
    TodayOrFuture   'Only allows today or future date to be entered
    TodayOrPast     'Only allows today or a previous day to be entered
End Enum

' Validate attributes of date data
' Returns True if valid, False if invalid
'
' Example:
'  If IsValidDateField(Value:="01/30/2001",
'  '       DateType:=psDateTypes.FutureDate, IsRequired:=True)

Function IsValidDateField(Value As Variant, Optional ByVal DateType As _
    psDateTypes = AnyValidDate, Optional ByVal IsRequired As Boolean = True) As 
_
    Boolean

    On Error GoTo ErrorHandler
    
    Dim lngDate As Long
    Dim lngToday As Long

    IsValidDateField = True

    If IsRequired = True Then
        If IsNull(Value) Or Value = vbNullString Then
            IsValidDateField = False
        End If
    ElseIf IsNull(Value) Or Value = "" Then
        Value = Null
        Exit Function
    End If

    If IsDate(Value) Then
        lngDate = Format$(Value, "yyyymmdd")
        Select Case DateType
            Case psDateTypes.FutureDate
                If lngDate <= lngToday Then
                    IsValidDateField = False
                End If
            Case psDateTypes.PastDate
                If lngDate >= lngToday Then
                    IsValidDateField = False
                End If
            Case psDateTypes.TodayOrFuture
               If lngDate < lngToday Then
                    IsValidDateField = False
                End If
            Case psDateTypes.TodayOrPast
               If lngDate > lngToday Then
                    IsValidDateField = False
                End If
        End Select
    Else
        IsValidDateField = Fal ... (cont.)
CLSIDToProgID - Convert a CLSID into a ProgID (using: Visual Basic 6.0) [CLSID, CLSIDFromString(), OLE32.DLL, ProgID, ProgIDFromCLSID(), Visual Basic, Solution] www.vb2themax.com 22-Jul-2000 by Steve Miller
CLSIDToProgID - Convert a CLSID into a ProgID 
Date: 5/5/1999
Versions: VB4/32 VB5 VB6 Level: Advanced
Author: The VB2TheMax Team

Private Declare Function ProgIDFromCLSID Lib "ole32.dll" (pCLSID As Any, _
    lpszProgID As Long) As Long
Private Declare Function CLSIDFromString Lib "ole32.dll" (ByVal lpszProgID As _
    Long, pCLSID As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As _
    Any, source As Any, ByVal bytes As Long)

' Convert a string representation of a CLSID, including the
' surrounding brace brackets, into the corresponding ProgID.

Function CLSIDToProgID(ByVal CLSID As String) As String
    Dim pResult As Long, pChar As Long
    Dim char As Integer, length As Long
    ' No need to use a special UDT
    Dim guid(15) As Byte

    ' convert from string to a binary CLSID
    CLSIDFromString StrPtr(CLSID), guid(0)
    ' convert to a string, get pointer to result
    ProgIDFromCLSID guid(0), pResult
    ' find the terminating null char
    pChar = pResult - 2
    Do
        pChar = pChar + 2
        CopyMemory char, ByVal pChar, 2
    Loop While char
    ' now get the entire string in one operation
    length = pChar - pResult
    ' no need for a temporary string
    CLSIDToProgID = Space$(length \ 2)
    CopyMemory ByVal StrPtr(CLSIDToProgID), ByVal pResult, length
End Function

 
ProgIDToCLSID - Convert a ProgID into a CLSID (using: Visual Basic 6.0) [CLSID, CLSIDFromProgID(), OLE32.DLL, StringFromCLSID(), Visual Basic, Solution] www.vb2themax.com 22-Jul-2000 by Steve Miller
ProgIDToCLSID - Convert a ProgID into a CLSID 
Date: 5/5/1999 Updated: 7/31/99
Versions: VB4/32 VB5 VB6 Level: Advanced
Author: The VB2TheMax Team

Private Declare Function CLSIDFromProgID Lib "ole32.dll" (ByVal lpszProgID As _
    Long, pCLSID As Any) As Long
Private Declare Function StringFromCLSID Lib "ole32.dll" (pCLSID As Any, _
    lpszProgID As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As _
    Any, source As Any, ByVal bytes As Long)
Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal pv As Long)

' Convert a ProgID (such as "Word.Application") into the
' string representation of its CLSID

Function ProgIdToCLSID(ByVal ProgID As String) As String
    Dim pResult As Long, pChar As Long
    Dim char As Integer, length As Long
    ' No need to use a special UDT
    Dim guid(15) As Byte
    
    ' get the CLSID in binary form
    CLSIDFromProgID StrPtr(ProgID), guid(0)
    ' convert to a string, get pointer to result
    StringFromCLSID guid(0), pResult
    ' find the terminating null char
    pChar = pResult - 2
    Do
        pChar = pChar + 2
        CopyMemory char, ByVal pChar, 2
    Loop While char
    ' now get the entire string in one operation
    length = pChar - pResult
    ' no need for a temporary string
    ProgIdToCLSID = Space$(length \ 2)
    CopyMemory ByVal StrPtr(ProgIdToCLSID), ByVal pResult, length
    ' release the memory allocated to the string
    CoTaskMemFree pResult
End Function

 
An Image (GIF, JPEG, BMP, ICO, WMF and EMF) Viewer [Multimedia, Article, Visual C++] www.codeguru.com 22-Jul-2000 by Chensu
	An Image (GIF, JPEG, BMP, ICO, WMF and EMF) Viewer
	 
	Chensu
	 
	MFC application that can load, display and print almost any standard 
graphics image
	
ColorSpace ATL Control [Dialog, Article, Visual C++] www.codeguru.com 22-Jul-2000 by Andrew Whitechapel
	ColorSpace ATL Control
	 
	Andrew Whitechapel
	 
	ATL version of the popular Corel PhotoHouse-like Color Chooser
	
ColorSpace ATL Control [Article, Visual C++] www.earthweb.com 22-Jul-2000 by Andrew Whitechapel
	ColorSpace ATL Control
	 
	Andrew Whitechapel
	 
	22-Jul-2000
	 
	22-Jul-2000
	 
	ATL version of the popular Corel PhotoHouse-like Color Chooser
	
Fake Frames [Active Server Pages, Article, Visual C++] www.codeproject.com 21-Jul-2000 by xicoloko
	Fake Frames
	 
	xicoloko
	 
	An article about faking frames to have pages with the same layout by 
using server side includes
	
Structured Storage Class for ATL & MFC [ATL, Structured Storage, MFC, Wrapper Class, Article, Visual C++] www.codeproject.com 21-Jul-2000 by Ales Krajnc
	Structured Storage Class for ATL & MFC
	 
	Ales Krajnc
	 
	A Wrapper Class for most common IStorage methods and API calls.
	
Full-Screen Dialog [Dialog, Article, Visual C++] www.codeguru.com 21-Jul-2000 by Andrey Abelyashev
	Full-Screen Dialog
	 
	Andrey Abelyashev
	 
	Enables you to have a dialog application occupy the entire screen 
(including taskbar area)
	
An Automatic Build Incrementer for VC6 [Macro, Article, Visual C++] www.codeguru.com 21-Jul-2000 by Curt Blackmon
	An Automatic Build Incrementer for VC6
	 
	Curt Blackmon
	 
	Macros that enables Visual C++ developers to automatically increment 
their application revision numbers on each build
	
An Automatic Build Incrementer for VC6 [Article, Visual C++] www.earthweb.com 21-Jul-2000 by Curt Blackmon
	An Automatic Build Incrementer for VC6
	 
	Curt Blackmon
	 
	21-Jul-2000
	 
	21-Jul-2000
	 
	Macros that enables Visual C++ developers to automatically increment 
their application revision numbers on each build
	
QuickSplit Version 1.0 [Tool, Update, Article, Visual C++] www.codeguru.com 20-Jul-2000 by Dmitriy Okunev
	QuickSplit Version 1.0
	 
	Dmitriy Okunev
	 
	Complete documented source code for popular utility that enables you to 
split large files for easier transfer is now multithreaded!
	
CBattery Non-MFC Class [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 20-Jul-2000 by Daniel Chirca
	CBattery Non-MFC Class
	 
	Daniel Chirca
	 
	C++ class wrapper for the battery related Windows Power Management API 
functions
	
Full-Screen Dialog [Article, Visual C++] www.earthweb.com 20-Jul-2000 by Andrey Abelyashev
	Full-Screen Dialog
	 
	Andrey Abelyashev
	 
	20-Jul-2000
	 
	20-Jul-2000
	 
	Enables you to have a dialog application occupy the entire screen 
(including taskbar area)
	
Sunrise/Sunset Calculations [Date, Time, Article, Visual C++] www.codeproject.com 19-Jul-2000 by Brian Heilman
	Sunrise/Sunset Calculations
	 
	Brian Heilman
	 
	Code to help calculate sunrise and sunset times
	
Function to Set Default Printer [Printing, Article, Visual C++] www.codeguru.com 19-Jul-2000 by Ivan Cerrato
	Function to Set Default Printer
	 
	Ivan Cerrato
	 
	COM component with method to allow for easy programmatic setting of 
default printer
	
Beginner-Level COM Tutorial [ATL, COM, Article, Visual C++] www.codeguru.com 19-Jul-2000 by Naveed Ahmed
	Beginner-Level COM Tutorial
	 
	Naveed Ahmed
	 
	Very quick and easy tutorial for someone looking to "get their feet 
wet" with COM
	
Beginner-Level COM Tutorial [Article, Visual C++] www.earthweb.com 19-Jul-2000 by Naveed Ahmed
	Beginner-Level COM Tutorial
	 
	Naveed Ahmed
	 
	19-Jul-2000
	 
	19-Jul-2000
	 
	A very quick and easy tutorial for someone looking to "get their feet 
wet" with COM.
	
Simple OpenGL Classes [OpenGL, Article, Visual C++] www.codeguru.com 18-Jul-2000 by Yuantu Huang
	Simple OpenGL Classes
	 
	Yuantu Huang
	 
	Class for 3D graphics functions which can make visualization using 
engineering data
	
Memory Allocation for High-Dimensional Data Structures [System, Article, Visual C++] www.codeguru.com 18-Jul-2000 by Yuantu Huang
	Memory Allocation for High-Dimensional Data Structures
	 
	Yuantu Huang
	 
	
	
String Types in Delphi [Article, Delphi] delphi.about.com 18-Jul-2000
	18-Jul-2000
	 
	18-Jul-2000
	 
	String Types in Delphi
	 
	Delphi For Beginners: Understanding and managing string data types in 
Delphi's Object Pascal. Learn about differences between Short, Long, Wide and 
null-terminated strings.
	
Resize ListView's Columns to Account for their Contents (using: Visual Basic 6.0) [Column, ListView Control, SendMessage(), Visual Basic, Tip] www.vb2themax.com 17-Jul-2000
Resize ListView's Columns to Account for their Contents

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal 
hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Const LVM_SETCOLUMNWIDTH = &H1000 + 30
Const LVSCW_AUTOSIZE = 65535
Const LVSCW_AUTOSIZE_USEHEADER = 65534

' adjust the width of a ListView control so that each item is fully visible
' if second argument is True, column headers' width is also taken into account

Sub ListViewAdjustColumnWidth(LV As ListView, Optional AccountForHeaders As 
Boolean)
    Dim col As Integer, lParam As Long
    
    If AccountForHeaders Then
        lParam = LVSCW_AUTOSIZE_USEHEADER
    Else
        lParam = LVSCW_AUTOSIZE
    End If
    
    For col = 1 To LV.ColumnHeaders.Count
        SendMessage LV.hwnd, LVM_SETCOLUMNWIDTH, col, lParam
    Next
End Sub
basService .... How to make your application run as a service [RunServices, RunServicesOnce, GetCurrentProcessId(), RegisterServiceProcess(), VB Code Module, Visual Basic] www.codeoftheweek.com 17-Jul-2000, no. 125
Requirements

Visual Basic 4.0 32-bit or higher.

In this issue we discuss how to run your application as a Windows
Service (not an NT service).


basService
----------
This module shows how to make your application run as a service.
The main portion of these routines use the RegisterServiceProcess
function to tell Windows that your application should stay active
across Windows logins.  It will also keep your application from
showing up in the Ctrl-Alt-Del task listing. To use this module
just call ServiceInstall at the start up of your application and
ServiceUninstall at the end.

Microsoft describes this function as follows:

The RegisterServiceProcess Function

Applications started by the system using the RunServices and
RunServicesOnce keys will close when the user selects Close all
programs and log on as a different user from the Shutdown dialog
box. By calling the RegisterServiceProcess function, a Win32-based
application can prevent itself or any other Win32-based
application from being closed when the user logs off. Win32-based
applications registered in this manner close only when the system
is shut down.

The application should provide for different users logging on at
different times during its execution. The application can
distinguish between a user logging off and the system shutting
down by examining the lParam parameter of the WM_QUERYENDSESSION
and WM_ENDSESSION messages. If the user shuts down the system,
lParam is NULL. If the user logs off, lParam is set to
ENDSESSION_LOGOFF.


Methods

Public Sub ServiceInstall()

Install the running application as a service. An error will be
raised if this is unsuccessful.


Public Sub ServiceUninstall()

Uninstall the running application as a service.  An error will be
raised if this is unsuccessful.


Sample Usage

This sample shows how to use the ServiceInstall and
ServiceUninstall routine.



Public Sub Main()
    ServiceInstall
    frm.Show
End Sub

Public frm_Unload(Cancel as Integer)
  ... (cont.)
Encrypting Log Files [File, Folder, Article, Visual C++] www.codeproject.com 17-Jul-2000 by Daniel Madden
	Encrypting Log Files
	 
	Daniel Madden
	 
	Demonstrates using encryption to protect sensitive application log file 
data.
	
Custom Captions (including multi-line captions) [Font, GDI, GUI, Article, Visual C++] www.codeproject.com 16-Jul-2000 by Dave Lorde
	Custom Captions (including multi-line captions)
	 
	Dave Lorde
	 
	Simple customised Window captions, including multi-line captions
	
Processing HTML Forms From a CHtmlView [Control, HTML, CHTMLView Class, Article, Visual C++] www.codeproject.com 16-Jul-2000 by Ted Crow
	Processing HTML Forms From a CHtmlView
	 
	Ted Crow
	 
	A simple method to processing HTML forms From a CHtmlView
	
The WTL Documentation Project [Windows Template Library, WTL, Article, Visual C++] www.codeproject.com 16-Jul-2000 by Ben Burnett, Tim Deveaux
	The WTL Documentation Project
	 
	Ben Burnett and Tim Deveaux
	 
	A framework in which to build a complete set of documentation for WTL. 
This is not complete, and will probably always be a work in progress.
	
Framework for Creating Custom Window Captions [UI, Update, Article, Visual C++] www.codeguru.com 16-Jul-2000 by Dave Lorde
	Framework for Creating Custom Window Captions
	 
	Dave Lorde
	 
	Fantastic set of classes to develop window content-sensitive captions 
(including colors and fonts)
	
ATL: Firing Events from Worker Threads [ATL, COM, Article, Visual C++] www.codeguru.com 16-Jul-2000 by Michael Lindig
	ATL: Firing Events from Worker Threads
	 
	Michael Lindig
	 
	Very cool solution to common problem of firing events from the worker 
thread of an ATL component
	
Framework for Creating Custom Window Caption [Article, Visual C++] www.earthweb.com 16-Jul-2000 by Dave Lorde
	Framework for Creating Custom Window Caption
	 
	Dave Lorde
	 
	16-Jul-2000
	 
	16-Jul-2000
	 
	This article presents some classes that make customising window 
captions really quick and easy.
	
ATL: Firing Events from Worker Threads [Article, Visual C++] www.earthweb.com 16-Jul-2000 by Michael Lindig
	ATL: Firing Events from Worker Threads
	 
	Michael Lindig
	 
	16-Jul-2000
	 
	16-Jul-2000
	 
	A very cool solution to common problem of firing events from the worker 
thread of an ATL component.
	
MinimizeAllWindows - Minimize and restore all windows (using: Visual Basic 6.0) [FindWindow(), SendMessage(), Shell, Taskbar, Visual Basic, Tip] www.vb2themax.com 15-Jul-2000
MinimizeAllWindows - Minimize and restore all windows 
Date: 7/15/2000 
Versions: VB4/32 VB5 VB6 Level: Intermediate
Author: The VB2TheMax Team

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal _
    lpClassName As String, ByVal lpWindowName As String) As Long 
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal _
    hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
    lParam As Any) As Long 

Const WM_COMMAND = &H111 
Const MIN_ALL = 419 
Const MIN_ALL_UNDO = 416 

' Minimize all the windows on the desktop (and optionally restore them)
' This has the same effect as pressing the Windows+M key combination

Sub MinimizeAllWindows(Optional Restore As Boolean)
    Dim hWnd As Long
    ' get the handle of the taskbar
    hWnd = FindWindow("Shell_TrayWnd", vbNullString) 
    ' Minimize or restore all windows
    If Restore Then
        SendMessage hWnd, WM_COMMAND, MIN_ALL_UNDO, ByVal 0&
    Else
        SendMessage hWnd, WM_COMMAND, MIN_ALL, ByVal 0&
    End If
End Sub 


 
ArrayAny - Return an initialized array of any type (using: Visual Basic 6.0) [Array, ParamArray Keyword, Visual Basic, Tip] www.vb2themax.com 15-Jul-2000
ArrayAny - Return an initialized array of any type 
Date: 7/15/2000 
Versions: VB6 Level: Intermediate
Author: The VB2TheMax Team

' Returns an array and initializes it with passed data.
'
' It is similar to the Array function, but it works with
' array of any type. The type of the returned array is
' assumed to be the type of the first element in the
' parameter list, so you might need to force a given
' data type using one of the VB's data conversion functions
'
' Example: return the array of the first 8 prime numbers, as Longs
'     primes() = ArrayAny(2&, 3, 5, 7, 11, 13, 17, 19)
'  or
'     primes() = ArrayAny(CLng(2), 3, 5, 7, 11, 13, 17, 19)

Function ArrayAny(ParamArray values() As Variant) As Variant
    Dim i As Long
    Dim maxEl As Long
    Dim res As Variant
    
    maxEl = UBound(values)
    
    ' we can't use the vbObject constant for objects
    ' because the VarType() function might return
    ' the type of the object's default property
    If IsObject(values(0)) Then
        ReDim arrObj(0 To maxEl) As Object
        ' we need a separate loop, too
        For i = 0 To maxEl
            Set arrObj(i) = values(i)
        Next
        ArrayAny = arrObj()
        Exit Function
    End If
    
    ' create different arrays, depending on the
    ' type of the first argument
    Select Case VarType(values(0))
        Case vbInteger
            ReDim arrInt(0 To maxEl) As Integer
            res = arrInt()
        Case vbLong
            ReDim arrLng(0 To maxEl) As Long
            res = arrLng()
        Case vbSingle
            ReDim arrSng(0 To maxEl) As Single
            res = arrSng()
        Case vbDouble
            ReDim arrDbl(0 To maxEl) As Double
            res = arrDbl()
        Case vbCurrency
            ReDim arrCur(0 To maxEl) As Currency
            res = arrCur()
        Case vbString
            ReDim arrStr(0 To maxEl) As String
            res = arrStr()
        Case vbDate
            ReDim arrDat(0 To maxEl) As Date
 ... (cont.)
MaxSystemColors - The number of screen colors (using: Visual Basic 6.0) [Color, GetDesktopWindow(), GetDeviceCaps(), GetDC(), ReleaseDC(), System Color, Visual Basic, Tip] www.vb2themax.com 15-Jul-2000
MaxSystemColors - The number of screen colors 
Date: 7/15/2000 
Versions: VB4/32 VB5 VB6 Level: Intermediate
Author: The VB2TheMax Team

Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, _
    ByVal hDC As Long) As Long
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Long, _
    ByVal nIndex As Long) As Long
Private Const BITSPIXEL = 12
Private Const PLANES = 14

' returns the max number of colors supported by the video card

Function MaxSystemColors() As Long
    Dim hWnd As Long
    Dim hDC As Long
    Dim bitsPerPixel As Long
    Dim colorPlanes As Long
    Dim bits As Integer
    
    ' get the device context of the desktop window
    hWnd = GetDesktopWindow()
    hDC = GetDC(hWnd)
    ' the number of bits per pixels
    bitsPerPixel = GetDeviceCaps(hDC, BITSPIXEL)
    ' the number of color planes
    colorPlanes = GetDeviceCaps(hDC, PLANES)
    ' number of bits for each pixel
    bits = bitsPerPixel * colorPlanes
    ' no video card has more than 1.6 million colors
    If bits > 24 Then bits = 24
    ' evaluate the result
    MaxSystemColors = 2 ^ bits
    ' release the device context
    ReleaseDC hWnd, hDC
End Function

 
Beware of hidden circular references between a form and an object (using: Visual Basic 6.0) [Circular Reference, Form, Object, Visual Basic, Tip] www.vb2themax.com 15-Jul-2000
Beware of hidden circular references between a form and an object 
Date: 7/15/2000 
Versions: VB5 VB6 Level: Intermediate
Author: The VB2TheMax Team

Many VB developers use a class module to augment the capabilities of a control 
on a form. For example, consider this simple example, that formats a currency 
value in a TextBox control when the focus leaves the control: 

' ------ the FORM1 module
Dim Formatter As New CFormatter

Private Sub Form_Load()
    ' bind the object to a textbox
    Set Formatter.TextBox = Text1
End Sub

' -------- the CFORMATTER class module
Public WithEvents TextBox As TextBox

Private Sub TextBox_LostFocus()
    ' format the value when the focus leaves the control
    TextBox.Text = Format(TextBox.Text, "###,##0.00")
End Sub


The above code contains an hidden circular reference between the form and the 
instance of the CFormatter class. The circular reference isn't apparent at 
first, because the CFormatter object references the Text1 control, not the form 
itself. However, because the Text1 control - or any other control for that 
matter - can exist without its parent form, this creates the circular reference.

This hidden circular reference can cause a memory leak in your application. In 
fact, when the VB attempts to unloadsì the form, the reference to Text1 in the 
Formatter object prevents the form from completely unloading. On the other 
hand, the Formatter object will never go out of scope, and therefore will never 
set its TextBox reference to Nothing. This will keep both the form and the 
class alive forever, keeping memory until your app terminates. 

The simplest way to resolve this circular reference is to explicitly set the 
Formatter variable to Nothing in the Unload event: 

Private Sub Form_Unload(Cancel As Integer)
    ' this breaks the circular reference
    Set Formatter = Nothing
End Sub
 
Let the user copy floppy disks (using: Visual Basic 6.0) [Disk, DiskCopyRunDll, RUNDLL32.EXE, Shell, Visual Basic, Tip] www.vb2themax.com 15-Jul-2000
Let the user copy floppy disks 
Date: 7/15/2000 
Versions: VB4/32 VB5 VB6 Level: Intermediate
Author: The VB2TheMax Team

The simplest way to help user copy a floppy disk is display the Copy Disk 
system dialog. You can do this with a one-line statement: 

Shell "rundll32.exe diskcopy.dll,DiskCopyRunDll 0,0"

 
Retrieve the length of a media file (WAV, AVI, MIDI) (using: Visual Basic 6.0) [AVI File, File, Media Control Interface, MIDI, WAV, Visual Basic, Tip] www.vb2themax.com 15-Jul-2000
Retrieve the length of a media file (WAV, AVI, MIDI) 
Date: 7/15/2000 
Versions: VB4/32 VB5 VB6 Level: Intermediate
Author: The VB2TheMax Team

You can retrieve the length of a standard windows media file (WAV, AVI or MIDI) 
using simple MCI functions. First, you must open the file with: 

Declare Function mciSendString Lib "winmm" Alias "mciSendStringA" (ByVal _
    lpstrCommand As String, ByVal lpstrReturnString As String, _
    ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

CommandString = "Open " & FileName" & " alias MediaFile"
mciSendString CommandString, vbNullString, 0, 0&

where MediaFile is an arbitrary name (an alias) that you then use in subsequent 
command strings. FileName is the full path of the media file and must be in the 
short format 8+3 characters. Now you can get file length in milliseconds: 

Dim MediaLength as Long
Dim RetString As String * 256
Dim CommandString As String

CommandString = "Set MediaFile time format milliseconds"
mciSendString CommandString, vbNullString, 0, 0&
CommandString = "Status MediaFile length"
MciSendString CommandString, RetString, Len(RetString), 0&
MediaLength = CLng(RetString)

Now, the MediaLength variable containes the length of the media file. You only 
have to close the MCI device, with 
CommandString = "Close MediaFile"
MciSendString CommandString, vbNullString, 0, 0&

 
VC++ MFC Extensions by Example [MFC, Visual C++, Windows Development, Book] Purchased 17-Jul-2000, $77.5

An Automatic Build Incrementer for VC6 [Macro, Add-in, Article, Visual C++] www.codeproject.com 12-Jul-2000 by Curt Blackmon
	An Automatic Build Incrementer for VC6
	 
	Curt Blackmon
	 
	An article on how to add an automatic build incrementer to VC6
	
Maximizing or minimizing a view window from your program [Article, Visual C++] www.mindcracker.com 12-Jul-2000 by Mahesh Chand
	Maximizing or minimizing a view window from your program
	 
	Mahesh Chand
	 
	12-Jul-2000
	 
	12-Jul-2000
	
Stop your application to open an empty document at start-up [Article, Visual C++] www.mindcracker.com 12-Jul-2000 by Mahesh Chand
	Stop your application to open an empty document at start-up
	 
	Mahesh Chand
	 
	12-Jul-2000
	 
	12-Jul-2000
	
Create a new document from your program or open an existing program without using MFC New or Open menu options [Article, Visual C++] www.mindcracker.com 12-Jul-2000 by Mahesh Chand
	Create a new document from your program or open an existing program 
without using MFC New or Open menu options
	 
	Mahesh Chand
	 
	12-Jul-2000
	 
	12-Jul-2000
	
Doc-View Architecture - Part 1 [Article, Visual C++] www.mindcracker.com 12-Jul-2000 by Mahesh Chand
	Doc-View Architecture - Part 1
	 
	Mahesh Chand
	 
	12-Jul-2000
	 
	12-Jul-2000
	
How to display running text in a list box? [Article, Visual C++] www.mindcracker.com 12-Jul-2000 by Mahesh Chand
	How to display running text in a list box?
	 
	A dialog base application which displays running text in a list control
	 
	Mahesh Chand
	 
	12-Jul-2000
	 
	12-Jul-2000
	
How to get sub menu on runtime? [Article, Visual C++] www.mindcracker.com 12-Jul-2000 by Mahesh Chand
	How to get sub menu on runtime?
	 
	Mahesh Chand
	 
	12-Jul-2000
	 
	12-Jul-2000
	
Developer's Workshop to COM and ATL 3.0 [ATL, COM, Book] Purchased 07-Jul-2000, $74.95

Download A Page From The Internet Without Any Controls (using: Visual Basic 6.0) [ftp, HTML, InternetCloseHandle(), InternetOpenUrl(), InternetOpen(), InternetReadFile(), Web, WinInet, Visual Basic, Tip] www.vb2themax.com 11-Jul-2000
Download A Page From The Internet Without Any Controls

You can easily download an HTML page using the Internet Transfer Control that 
comes with VB. However, achieving the same result with plain VB code and some 
API functions is so easy that you might want to give it a try. The following 
function takes the URL of a page in its first argument, and saves the content 
of that page in the local file specified as its second argument.

Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Const INTERNET_FLAG_EXISTING_CONNECT = &H20000000

Private Declare Function InternetOpen Lib "wininet.dll" _
        Alias "InternetOpenA" (ByVal lpszAgent As String, _
        ByVal dwAccessType As Long, ByVal lpszProxyName As String, _
        ByVal lpszProxyBypass As String, ByVal dwFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias 
"InternetOpenUrlA" _
        (ByVal hInternetSession As Long, ByVal lpszUrl As String, _
        ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, _
        ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet.dll" _
        (ByVal hInet As Long) As Integer
Private Declare Function InternetReadFile Lib "wininet.dll" _
        (ByVal hFile As Long, ByVal lpBuffer As String, _
        ByVal dwNumberOfBytesToRead As Long, lNumberOfBytesRead As Long) As 
Integer

' Download a file from the Internet and save it to a local file
'
' it works with HTTP and FTP, but you must explicitly include
' the protocol name in the URL, as in
'    CopyURLToFile "http://mailer.devx.com/cgi-bin3/flo?y=eC4z01V8M0lQ0dH6w", 
"C:\vb2themax.htm"

Sub CopyURLToFile(ByVal URL As String, ByVal FileName As String)
    Dim hInternetSession As Long
    Dim hUrl As Long
    Dim FileNum As Integer
    Dim ok As Boolean
    Dim NumberOfBytesRead As Long
    Dim Buffer As String
    Dim fileIsOpen As Boolean

    On Error GoTo ErrorHandler

    ' check obvious syntax errors
    If Len(URL) = 0 Or Len ... (cont.)
CEditLog: fast logging into an edit control with cout [Edit Control, Article, Visual C++] www.codeproject.com 11-Jul-2000 by Daniel Lohmann
	CEditLog: fast logging into an edit control with cout
	 
	Daniel Lohmann
	 
	Use an edit control for logging messages and redirect cout
	
How to format drives from Visual Basic [Article, Visual Basic] visualbasic.about.com 11-Jul-2000
	11-Jul-2000
	 
	11-Jul-2000
	  
	How to format drives from Visual Basic
	 
	Your About VB guide uncovers an undocumented API function that makes it 
easy to format drives from within Visual Basic. Check it out!
	
Traveling Label [Article, Delphi] delphi.about.com 11-Jul-2000
	11-Jul-2000
	 
	11-Jul-2000
	 
	Traveling Label
	 
	Spice up your user interface with a marquee style text. Use marquee 
style text to display scrolling text that you want to catch your Delphi program 
users' attention.
	
Simple Row Insert for CListCtrl [List Control, Article, Visual C++] www.codeproject.com 10-Jul-2000 by Daniel Zuppinger
	Simple Row Insert for CListCtrl
	 
	Daniel Zuppinger
	 
	This simple CListCtrl extension allows easy row insertion when in 
Report mode.
	
Band Objects: A beginners tutorial from scratch [Article, Visual C++] www.mindcracker.com 10-Jul-2000 by Mahesh Chand
	Band Objects: A beginners tutorial from scratch
	 
	A simple tutorial with examples and sample code attached.
	 
	Mahesh Chand
	 
	10-Jul-2000
	 
	10-Jul-2000
	
How to get total and free space of a drive? [Article, Visual C++] www.mindcracker.com 10-Jul-2000 by Mahesh Chand
	How to get total and free space of a drive?
	 
	Mahesh Chand
	 
	10-Jul-2000
	 
	10-Jul-2000
	
How to get all available drive on a system? [Article, Visual C++] www.mindcracker.com 10-Jul-2000 by Mahesh Chand
	How to get all available drive on a system?
	 
	Mahesh Chand
	 
	10-Jul-2000
	 
	10-Jul-2000
	
How to delete a directory and its contents? [Article, Visual C++] www.mindcracker.com 10-Jul-2000 by Mahesh Chand
	How to delete a directory and its contents?
	 
	Mahesh Chand
	 
	10-Jul-2000
	 
	10-Jul-2000
	
How to get full path of an application? [Article, Visual C++] www.mindcracker.com 10-Jul-2000 by Mahesh Chand
	How to get full path of an application?
	 
	Mahesh Chand
	 
	10-Jul-2000
	 
	10-Jul-2000
	
How to place an integer value in MessageBox() API function? [Article, Visual C++] www.mindcracker.com 10-Jul-2000 by Mahesh Chand
	How to place an integer value in MessageBox() API function?
	 
	Mahesh Chand
	 
	10-Jul-2000
	 
	10-Jul-2000
	
Using MS Office in an MFC Application [Article, Visual C++] www.earthweb.com 10-Jul-2000 by Igor Tkachev
	Using MS Office in an MFC Application
	 
	Igor Tkachev
	 
	10-Jul-2000
	 
	10-Jul-2000
	 
	Illustrated how to intergrate MFC applications with MS Office
	
Outlook Express (OE) Reader Class [Article, Visual C++] www.earthweb.com 10-Jul-2000 by Mladen Bonev
	Outlook Express (OE) Reader Class
	 
	Mladen Bonev
	 
	10-Jul-2000
	 
	10-Jul-2000
	 
	This article presents a Outlook Express (IE4) class reader that can 
read through your OE files and retrieve such things as folder names, message 
subjects and message bodies
	
Creating a window using ATL Windowing [ATL Windowing, Article, Visual C++] www.mindcracker.com 09-Jul-2000 by Mahesh Chand
	Creating a window using ATL Windowing
	 
	Mahesh Chand
	 
	09-Jul-2000
	 
	09-Jul-2000
	 
	Step 1: Start new Win32 Application project.
	 
	Step 2: Include these lines in your stdafx.h file.
	 
 #include 
 extern CComModule _Module;
 #include 
  
	The atlbase.h class is basic ATL support. ATL Windowing classes are 
defined in atlwin.h. CComModule is a global class similar to CWinApp in MFC. 
The _comModule is a global variable represents the application.
	 
	Step 3: Now write this code into your WinMain function. You WinMain 
should look like this:
	 
 int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE, LPSTR, int )
 {
 _Module.Init( NULL, hInstance );
 
 // Create an instance of CMcbWindow
 CMcbWindow atlWnd;
 atlWnd.Create( NULL, CWindow::rcDefault, _T("Mahesh's ATL Window"),
 WS_OVERLAPPEDWINDOW|WS_VISIBLE );
 
 MSG msg;
 while( GetMessage( &msg, NULL, 0, 0 ) )
 {
 TranslateMessage( &msg );
 DispatchMessage( &msg );
 }
 
 _Module.Term();
 return msg.wParam;
 }
  
	Step 4: Derive CMcbWindow class from CWindowImpl and write OnPaint and 
OnDestroy functions.
	 
 // NOTE: See the template parameter. Its CMcbWindow
 class CMcbWindow : public CWindowImpl
 {
 // START MESSAGE_MAP
 BEGIN_MSG_MAP( CMcbWindow )
 MESSAGE_HANDLER( WM_PAINT, OnPaint )
 MESSAGE_HANDLER( WM_DESTROY, OnDestroy )
 END_MSG_MAP()
 // END MESSAGE_MAP
 
 // This function will paint a Hello mindcracker string
 LRESULT OnPaint( UINT, WPARAM, LPARAM, BOOL& )
 {
 PAINTSTRUCT ps;
 HDC hDC = GetDC();
 BeginPaint( &ps );
 TextOut( hDC, 0, 0, _T("Hello mindcracker"), 17 );
 EndPaint( &ps );
 return 0;
 }
 
 LRESULT OnDestroy( UINT, WPARAM, LPARAM, BOOL& ){
 PostQuitMessage( 0 );
 return 0;
 }
 };
  
	Step 5: Define CComModule _Module extern variable.
	 
 // ATLWnd.cpp : Defines the entry point for the application.
 #include "stdafx.h"
 CComModule _Module;
  
	Step 6: Compile and Run your program.
	
Making dialup connection using WinInet [Article, Visual C++] www.mindcracker.com 09-Jul-2000 by Mahesh Chand
	Making dialup connection using WinInet
	 
	A tool to generate class files to implement stored procedures
	 
	Mahesh Chand
	 
	09-Jul-2000
	 
	09-Jul-2000
	
Dynamic Dialog Class [Article, Visual C++] www.earthweb.com 09-Jul-2000 by Marcel Scherpenisse
	Dynamic Dialog Class
	 
	Marcel Scherpenisse
	 
	9-Jul-2000
	 
	9-Jul-2000
	 
	These classes are being used for displaying a modal dialog, on which 
the controls are dynamically added, without the need of having a dialog 
template as resource.
	
Print Bitmaps Without Document/View Framework [Printing, Bitmap, Document/View, Article, Visual C++] www.codeproject.com 07-Jul-2000 by Weimin Chen
	Print Bitmaps Without Document/View Framework
	 
	Weimin Chen
	 
	Software Developer
	
Deleting a file or folder with its contents [Article, Visual C++] www.mindcracker.com 06-Jul-2000 by Mahesh Chand
	Deleting a file or folder with its contents
	 
	Mahesh Chand
	 
	06-Jul-2000
	 
	06-Jul-2000
	
Moving a file or a folder from one place to other [Article, Visual C++] www.mindcracker.com 06-Jul-2000 by Mahesh Chand
	Moving a file or a folder from one place to other
	. 
	Mahesh Chand
	 
	06-Jul-2000
	 
	06-Jul-2000
	
Search for a file on your system [Article, Visual C++] www.mindcracker.com 06-Jul-2000 by Mahesh Chand
	Search for a file on your system
	. 
	Mahesh Chand
	 
	06-Jul-2000
	 
	06-Jul-2000
	
Get size of a file in number of bytes? [Article, Visual C++] www.mindcracker.com 06-Jul-2000 by Mahesh Chand
	Get size of a file in number of bytes?
	 
	Mahesh Chand
	 
	06-Jul-2000
	 
	06-Jul-2000
	
Copy a directory and its sub directories to other directory [Article, Visual C++] www.mindcracker.com 06-Jul-2000 by Mahesh Chand
	Copy a directory and its sub directories to other directory
	 
	Mahesh Chand
	 
	06-Jul-2000
	 
	06-Jul-2000
	
Create a file and write data to this new file [Article, Visual C++] www.mindcracker.com 06-Jul-2000 by Mahesh Chand
	Create a file and write data to this new file
	 
	Mahesh Chand
	 
	06-Jul-2000
	 
	06-Jul-2000
	
The Code Project Discussion boards [Active Server Pages, ASP, Article, Visual C++] www.codeproject.com 05-Jul-2000 by Uwe Keim, Chris Maunder
	The Code Project Discussion boards
	 
	Uwe Keim and Chris Maunder
	 
	The Discussion board ASP scripts as used in The Code Project. This is 
an open source project for the Code Project community.
	
An introduction to TCP/IP [Article, Visual C++] www.mindcracker.com 05-Jul-2000 by Mahesh Chand
	An introduction to TCP/IP
	 
	Mahesh Chand
	 
	05-Jul-2000
	 
	05-Jul-2000
	
Customizing your web browser - Part 1 [Article, Visual C++] www.mindcracker.com 05-Jul-2000 by Mahesh Chand
	Customizing your web browser - Part 1
	 
	Mahesh Chand
	 
	05-Jul-2000
	 
	05-Jul-2000
	
History, definition, and owner of the Internet [Article, Visual C++] www.mindcracker.com 05-Jul-2000 by Mahesh Chand
	History, definition, and owner of the Internet
	 
	Mahesh Chand
	 
	05-Jul-2000
	 
	05-Jul-2000
	
Web definition and working theory [Article, Visual C++] www.mindcracker.com 05-Jul-2000 by Mahesh Chand
	Web definition and working theory
	 
	Mahesh Chand
	 
	05-Jul-2000
	 
	05-Jul-2000
	
User-settings class for ATL/WTL projects [ATL, MFC, Article, Visual C++] www.codeproject.com 04-Jul-2000 by Peter Kenyon
	User-settings class for ATL/WTL projects
	 
	Peter Kenyon
	 
	A helper class for storing user settings in the Registry, similar to 
MFC's CWinApp
	
Browse for Computers, Folders, Files and Printers [Article, Delphi] delphi.about.com 04-Jul-2000
	04-Jul-2000
	 
	04-Jul-2000
	 
	Browse for Computers, Folders, Files and Printers
	 
	Use Delphi (and API) to display the directory structure of a computer 
and allow a user to select a folder without using the Common Dialog control. 
Plus: select a printer or network computer.
	
Add Mouse Wheel support to Swing Widgets [Java Programming, Article, Visual C++] www.codeproject.com 03-Jul-2000 by Davanum Srinivas
	Add Mouse Wheel support to Swing Widgets
	 
	Davanum Srinivas
	 
	This article shows how to add support for Mouse Wheel for Java Swing 
Widgets
	
How to change fonts of static button or other controls? [Article, Visual C++] www.mindcracker.com 03-Jul-2000 by Mahesh Chand
	How to change fonts of static button or other controls?
	 
	Sample project attached.
	 
	Mahesh Chand
	 
	03-Jul-2000
	 
	03-Jul-2000
	
How to disable a control such as an Edit button? [Article, Visual C++] www.mindcracker.com 03-Jul-2000 by Mahesh Chand
	How to disable a control such as an Edit button?
	 
	Mahesh Chand
	 
	03-Jul-2000
	 
	03-Jul-2000
	
How to create a simple MTS component using ATL Object Wizard [Article, Visual C++] www.mindcracker.com 03-Jul-2000 by Mahesh Chand
	How to create a simple MTS component using ATL Object Wizard
	. 
	Mahesh Chand
	 
	03-Jul-2000
	 
	03-Jul-2000
	
AVI Viewer [Article, Visual C++] www.mindcracker.com 03-Jul-2000 by Mahesh Chand
	AVI Viewer
	 
	A dialog base MFC application which let you browse and view AVI files.
	 
	Mahesh Chand
	 
	03-Jul-2000
	 
	03-Jul-2000
	
CResizeCtrl: A resize control to implement resizable dialogs with MFC [Dialog, Windows Programming, MFC, Article, Visual C++] www.codeproject.com 02-Jul-2000 by Herbert Menke
	CResizeCtrl: A resize control to implement resizable dialogs with MFC
	 
	Herbert Menke
	 
	
	
Center CMDIChildWnds and Other Tips [Document/View, Article, Visual C++] www.codeproject.com 02-Jul-2000 by Brian Hart
	Center CMDIChildWnds and Other Tips
	 
	Brian Hart
	 
	Center CMDIChildWnds in the client area of the main frame window
	
Drag and Drop between JList and Windows Explorer [Java Programming, Drag and Drop, Explorer, Explorer, Article, Visual C++] www.codeproject.com 02-Jul-2000 by Davanum Srinivas
	Drag and Drop between JList and Windows Explorer
	 
	Davanum Srinivas
	 
	Pure Java Sample for Drag and Drop between Swing based JList and 
Windows Explorer
	
Creating a Dialog box using ATL Object Wizard [Dialog, ATL Object Wizard, Article, Visual C++] www.mindcracker.com 02-Jul-2000 by Mahesh Chand
	Creating a Dialog box using ATL Object Wizard
	 
	Mahesh Chand
	 
	02-Jul-2000
	 
	02-Jul-2000
	 
	There are two ways to add a dialog box. If you are developing an 
ATL/COM dll then you can use ATL Object Wizard to add a dialog. Here are the 
steps:
	 
	Step 1: Go to Insert ATL Object, Select Category - Miscellaneous and 
double click on Dialog.
	 
	Step 2: Insert MyDlg as Short Name. And click Ok.
	 
	This wizard adds a class CMyDlg into your project. This class is 
derived from CAxDialogImpl.
	 
 class CMyDlg : public CAxDialogImpl
  
	This class has OnInitDialog and handlers for Ok and Cancel buttons. You 
can modify this dialog according to your needs.
	 
	Now you can create this dialog box modal or modeless. For modal dialog 
box :
	 
 #include "mydlg.h"
 
 CMyDlg dlg;
 Dlg.DoModal();
  
	for Modeless, call Create member function.
	 
 #include "mydlg.h"
 
 CMyDlg dlg;
 Dlg.Create( ::GetDestopWindow());
 
 dlg.ShowWindow( SW_SHOWNORMAL);
  
	For more details on ATL Windowing, see ATL Tutorial by example.
	
Loading a Control specified at runtime [Control, CAxWindow, Article, Visual C++] www.mindcracker.com 02-Jul-2000 by Mahesh Chand
	Loading a Control specified at runtime
	 
	Mahesh Chand
	 
	02-Jul-2000
	 
	02-Jul-2000
	 
	Call AtlAxWinInit();
	 
	Create a CAxWindow object CAxWindow wnd ;
	 
	Create a host window
	 
 RECT rect = { 0, 0, 100, 100 };
 wnd.Create(m_hWnd, rect, _T("MSCAL.Calendar"), WS_CHILD | WS_VISIBLE|IBLE |
 WS_CLIPSIBLINGS | WS_CLIPCHILDREN, WS_EX_CLIENTEDGE);
  
	For more details on ATL Windowing, see ATL Tutorial by example.
	
Add a Scripting Engine to Your Application (using: Visual Basic 6.0) [Microsoft Script Control, Scripting, Scripting Engine, Visual Basic, Tip] www.devx.com 01-Jul-2000 by Dan Newsome
Add a Scripting Engine to Your Application 

  It's easy to add scripting functionality to your VB project, especially if 
you have been developing through classes all along. The more classes you 
program, the more objects you can expose to your script language. You can use 
both VBScript and JScript as the basis for your scripting engine. 

First, download the Microsoft Script Control from MSDN. Install the control 
according to the instructions provided. You might need to register the control 
manually (run regsvr32 on it). The footprint on this control is low; the whole 
download including help is only 243K. Next, create a script file with a text 
editor such as Notepad: 

Sub Main()
	MsgBox "Hello, world"
End Sub

Save it as c:\temp.txt and add this code to your application: 
Private Sub Command1_Click()
	Dim iFileNum As Long
	Dim sFileBuffer As String
	Dim sTemp As String
	iFileNum = FreeFile()
	Open "c:\temp.txt" For Input As #iFileNum
		Do While Not EOF(iFileNum)
			Line Input #iFileNum, sTemp
			sFileBuffer = sFileBuffer & sTemp & _
				vbCrLf
		Loop
	Close #iFileNum
	ScriptControl1.Reset
	ScriptControl1.AddCode (sFileBuffer)
	ScriptControl1.Run "Main"
End sub

You have now successfully implemented a scripting engine. You can expose 
objects in your application like this: 

Private Sub Command1_Click()
	Dim objMyClass As New MyClassNameHere
	With dlgCommon
		.ShowOpen
		sFileName = .FileName
	End With
	iFileNum = FreeFile()
	Open sFileName For Input As #iFileNum
		While Not EOF(iFileNum)
			Line Input #iFileNum, sTemp
			sFileBuffer = sFileBuffer & sTemp & vbCrLf
		Wend
	Close #iFileNum
	ScriptControl1.Reset
	ScriptControl1.AddObject "Database", objMyClass
	ScriptControl1.AddCode (sFileBuffer)
	ScriptControl1.Run "Main"
End sub

You can even try code such as this to give ad hoc capabilities to an 
application: 

ScriptControl1.ExecuteStatement "x = 100"
MsgBox ScriptControl1.Eval("x = 100")  ' True
MsgBox ScriptControl1.Eval("x = 100/2")  ' Fal ... (cont.)
Specify the timeout interval after which the application automatically terminates itself (using: Visual Basic 6.0) [Timer Control, Visual Basic, Tip] www.developer.com 01-Jul-2000 by Rod Stephens
Can you please tell me how we can specify the timeout interval after which the 
application will automatically terminate itself. The idea is to terminate the 
application when there is no activity in the application for a certain 
predefined time interval. 

Developer.com Expert Rod Stephen's Answer:

Create a variable to keep track of the timeout time like this: 

    Private m_TimeoutTime As Date

Write a routine that resets this time to some time in the future. 

    ' Set the timeout for 15 seconds from now.
    Private Sub SetTimeout()
        m_TimeoutTime = DateAdd("s", 15, Date + Time)
        lblTimeout.Caption = m_TimeoutTime
    End Sub

Invoke this routine whenever the user does something that should keep the 
program active. 

    Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
        SetTimeout
    End Sub

Finally, use a timer to see if it's time to quit the application. 

    ' See if it's time to quit.
    Private Sub tmrTimeout_Timer()
        If Date + Time > m_TimeoutTime Then Unload Me
    End Sub

For an example program, go to www.vb-helper.com/ and click the "Make a program 
close itself if it has been inactive for too long" link. 
Get the handle of the edit portion of a ComboBox ... and, as an example, force all characters to uppercase (using: Visual Basic 6.0) [ComboBox Control, FindWindowEx(), GetWindowLong(), Handle, SetWindowLong(), Tip, Visual Basic] www.vb2themax.com 01-Jul-2000
Get the handle of the edit portion of a ComboBox 

Date: 7/1/2000 
Versions: VB4/32 VB5 VB6 Level: Intermediate
Author: The VB2TheMax Team

The ComboBox control contains an invisible Edit window, which is used for the 
edit area. In most cases you don't need to access this inner control directly, 
but occasionally a direct control of that window can be useful. The first thing 
to do is get the handle of such inner Edit control, which you do with the 
following code:


Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal 
_
    hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, _
    ByVal lpsz2 As String) As Long

Dim editHWnd As Long
editHWnd = FindWindowEx(Combo1.hWnd, 0&, vbNullString, vbNullString)

Once you have the handle of the control, you can exploit all the usual 
low-level techniques, using API functions such as SendMessage, SetWindowLong, 
or subclassing. For example, you can force uppercase characters as follows: 

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal 
_
    hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, _
    ByVal lpsz2 As String) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
    (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
    (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Const GWL_STYLE = (-16)
Const ES_UPPERCASE = &H8&

Dim editHWnd As Long, style As Long

' get the handle of the inner Edit control
editHWnd = FindWindowEx(Combo1.hwnd, 0&, vbNullString, vbNullString)
' get its current Style
style = GetWindowLong(editHWnd, GWL_STYLE)
' set the ES_UPPERCASE bit
SetWindowLong editHWnd, GWL_STYLE, style Or ES_UPPERCASE
 
Create arrowed buttons without icons (using: Visual Basic 6.0) [Button, Icon, Windings, Visual Basic, Tip] www.vb2themax.com 01-Jul-2000
Create arrowed buttons without icons 

Date: 7/1/2000 
Versions: VB4 VB5 VB6 Level: Beginner
Author: The VB2TheMax Team

You don't need to use icons or bitmap to create buttons with arrows on them. In 
fact, you just have to select the "Windings" font, set a suitable font size 
(e.g. 12 or 14 points), and then enter one of these characters:

Line arrows
Chr$(223) Left Arrow
Chr$(224) Right Arrow
Chr$(225) Up Arrow
Chr$(226) Down Arrow
Chr$(227) Up-Left Arrow
Chr$(228) Up-Right Arrow
Chr$(229) Down-Left Arrow
Chr$(230) Down-Right Arrow

Solid arrows
Chr$(231) Left Arrow
Chr$(232) Right Arrow
Chr$(233) Up Arrow
Chr$(234) Down Arrow
Chr$(235) Up-Left Arrow
Chr$(236) Up-Right Arrow
Chr$(237) Down-Left Arrow
Chr$(238) Down-Right Arrow

Outlined arrows
Chr$(239) Left Arrow
Chr$(240) Right Arrow
Chr$(241) Up Arrow
Chr$(242) Down Arrow
Chr$(245) Up-Left Arrow [note the gap here]
Chr$(246) Up-Right Arrow
Chr$(247) Down-Left Arrow
Chr$(248) Down-Right Arrow

This font include many other useful symbols, such as hands, airplanes, 
mailboxes, astrological signs, smileys, circled digits, checkmarks, and more. 
 
Prevent dragging elements in a ListView control (using: Visual Basic 6.0) [Drag and Drop, ListView Control, Subclassing, Visual Basic, Tip] www.vb2themax.com 01-Jul-2000
Prevent dragging elements in a ListView control 

Date: 7/1/2000 
Versions: VB5 VB6 Level: Advanced
Author: The VB2TheMax Team

The ListView control doesn't expose any property that lets you disable the 
dragging of its elements. To do so, you must trap the WM_NOTIFY message that 
the ListView control sends its parent form when the drag operation begins, and 
"eat" it. Using the MSGHOOK.DLL subclassing library it's easy to accomplish it: 

' REQUIRES THE MSGHOOK.DLL LIBRARY

Const WM_NOTIFY = &H4E
Const LVN_FIRST = -100&
Const LVN_BEGINDRAG = (LVN_FIRST - 9)

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As _
    Any, source As Any, ByVal bytes As Long)

Private Type NMHDR
   hwndFrom As Long
   idFrom As Long
   code As Long
End Type

Dim WithEvents FormHook As MsgHook

Private Sub Form_Load()
    ' start subclassing the current form
    Set FormHook = New MsgHook
    FormHook.StartSubclass Me

    ' fill the ListView1 control with data
    ' ... (omitted) ...
End Sub

' this event fires when the form is sent a message

Private Sub FormHook_BeforeMessage(uMsg As Long, wParam As Long, lParam As 
Long, _
    retValue As Long, Cancel As Boolean)
    
    ' the ListView might be notifying something to its parent form
    If uMsg = WM_NOTIFY Then
        ' copy the MNHDR structure pointed
        ' to by lParam to a local UDT
        Dim nmh As NMHDR
        CopyMemory nmh, ByVal lParam, Len(nmh)

        ' check whether the notification is from the ListView1 control
        ' and whether it's the beginning of a drag operation
        If nmh.hwndFrom = ListView1.hWnd And nmh.code = LVN_BEGINDRAG Then
            ' yes, cancel this operation
            retValue = 1
            Cancel = True
        End If
    End If
End Sub

 
Load items faster in the TreeView and ListView controls (using: Visual Basic 6.0) [DispID Binding, ListView Control, TreeView Control, Visual Basic, Tip] www.vb2themax.com 01-Jul-2000
Load items faster in the TreeView and ListView controls 

Date: 7/1/2000 
Versions: VB4/32 VB5 VB6 Level: Intermediate
Author: The VB2TheMax Team

There is an easy, but under-utilized, technique for loading many nodes in a 
TreeView control (or ListItems in a ListView control) that is faster than the 
standard technique. Consider this loop: 

For i = 1 To 5000
    TreeView1.Nodes.Add , , , "Node " & i
Next

Instead of repeatedly query the TreeView1 object for its Nodes collection, you 
can store it in a temporary object variable: 

Dim nods As MSComctlLib.Nodes
Set nods = TreeView1.Nodes
    
For i = 1 To 5000
    nods.Add , , , "Node " & i
Next

You don't even need the temporary variable, if you use a With block: 
With TreeView1.Nodes
    For i = 1 To 5000
        .Add , , , "Node " & i
    Next
End With

On my system, these optimized loops run about 40% faster than the standard code 
showed above. This faster speed can be explained as follows: by storing the 
Nodes collection in a temporary variable (or using the hidden temporary 
variable that VB builds behind the With block), you avoid to bind the Nodes 
object to its parent TreeView1 object inside the loop. Because this latter 
binding is based on the inefficient dispid-binding, this step trims a lot of 
unnecessary overhead inside the loop.

The same reasoning applies to other ActiveX controls: 

- the ListItems, ListSubItems, and ColumnHeaders collections of the ListView 
control 
- the Buttons and ButtonMenus collection of the Toolbar control 
- the ListImages collection of the ImageList control 
- the Panels collection of the StatusBar control 
- the Tabs collection of the TabStrip control 
- the ComboItems collection of the ImageCombo control the Columns collection of 
the DataGrid control and more in general, whenever you have an ActiveX control 
that exposes a collection that you use inside a loop. 
 
Limit the length of an item in a ListView control (using: Visual Basic 6.0) [GetWindowLong(), ListView Control, SendMessage(), SetWindowLong(), Visual Basic, Tip] www.vb2themax.com 01-Jul-2000
Limit the length of an item in a ListView control 

Date: 7/1/2000 
Versions: VB5 VB6 Level: Intermediate
Author: The VB2TheMax Team

The ListView control doesn't expose any property that lets you limit the amount 
of text users can type when editing an item's label. However, you can do the 
trick with a couple of SendMessage API calls from within the BeforeLabelEdit 
event: with the LVM_GETEDITCONTROL message you retrieve the handle of the 
hidden Edit control that the ListView creates for let the user edit the node. 
If you then send the EM_LIMITTEXT message to this Edit control you can put a 
limit to the text that can be typed in this control: 

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal _
    hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
    lParam As Any) As Long
Const LVM_FIRST = &H1000
Const LVM_GETEDITCONTROL = (LVM_FIRST + 24)
Const EM_LIMITTEXT = &HC5

' limit the text that can be typed in ListView's item to 10 characters

Private Sub ListView1_BeforeLabelEdit(Cancel As Integer)
    Dim editHWnd As Long
    ' get the handle of the ListView's Edit control
    editHWnd = SendMessage(ListView1.hWnd, LVM_GETEDITCONTROL, 0, ByVal 0&)
    ' send it a EM_LIMITTEXT message to limit its length
    SendMessage editHWnd, EM_LIMITTEXT, 10, 0
End Sub

Once you now the method you can perform some other tricks with the Edit 
control. For example, you can automatically convert all text to uppercase: 

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal _
    hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
    lParam As Any) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
    (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
    (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Const GWL_STYLE = (-16)

Const LVM_FIRST = &H1000
Const LVM_GETEDITCONT ... (cont.)
Get full control on the text typed in a ListView's item (using: Visual Basic 6.0) [AfterLabelEdit Event, ListView Control, SendMessage(), Subclassing, Visual Basic, Tip] www.vb2themax.com 01-Jul-2000
Get full control on the text typed in a ListView's item
 
Date: 7/1/2000 
Versions: VB5 VB6 Level: Intermediate
Author: The VB2TheMax Team

The ListView control exposes the AfterLabelEdit event to let the programmer 
validate the text entered in a ListItem, but there is no way to trap keys as 
they are typed by the user. This prevents you from discarding unwanted 
characters while the user types them.

You can work around this problem by subclassing the Edit control that the 
ListView control creates when entering the node edit mode. The following code 
uses the MSGHOOK.DLL library, that you can download from the FileBank on this 
site, to discard digits and convert all text to uppercase: 

' REQUIRES THE MSGHOOK.DLL LIBRARY

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal _
    hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
    lParam As Any) As Long
Const LVM_FIRST = &H1000
Const LVM_GETEDITCONTROL = (LVM_FIRST + 24)

Dim WithEvents TVHook As MsgHook

' start subclassing of the Edit control used when in edit mode

Private Sub ListView1_BeforeLabelEdit(Cancel As Integer)
    Dim editHWnd As Long
    
    ' get the handle of the TreeView's Edit control
    editHWnd = SendMessage(ListView1.hWnd, LVM_GETEDITCONTROL, 0, ByVal 0&)
    ' subclass it
    LVHook.StartSubclass editHWnd
End Sub

' stop subclassing when exiting edit mode

Private Sub ListView1_AfterLabelEdit(Cancel As Integer, NewString As String)
    LVHook.StopSubclass
End Sub

Private Sub Form_Load()
    Set LVHook = New MsgHook
End Sub

' discard digits as they are entered by the user
' and convert all text to uppercase

Private Sub LVHook_BeforeMessage(uMsg As Long, wParam As Long, lParam As Long, _
    retValue As Long, Cancel As Boolean)
    If uMsg = WM_CHAR Then
        ' wParam contains the character code
        If wParam >= 48 And wParam <= 57 Then
            ' discard digits
            Cancel = True
        ElseIf wParam >= Asc("a") And wParam < ... (cont.)
Determine the number of visible items in a ListView control (using: Visual Basic 6.0) [ListView Control, SendMessage(), Visual Basic, Tip] www.vb2themax.com 01-Jul-2000
 
Determine the number of visible items in a ListView control 

Date: 7/1/2000 
Versions: VB5 VB6 Level: Intermediate
Author: The VB2TheMax Team

Microsoft "forgot" to provide the ListView control with the GetVisibleCount 
property, as it did, for example, with the TreeView control. However, getting 
this information is as easy as sending a message to the control: 

Private Const LVM_FIRST = &H1000
Private Const LVM_GETCOUNTPERPAGE = (LVM_FIRST + 40)
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal _
    hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
    lParam As Any) As Long

' Return the number of visible items in a ListView control

Private Function ListViewGetVisibleCount(LV As ListView) As Long
   ListViewGetVisibleCount = SendMessage(LV.hwnd, LVM_GETCOUNTPERPAGE, 0&, _
       ByVal 0&)
End Function

 
 
How to add a dockable window to your VB Project. (using: Visual Basic 6.0) [Docking Window, Visual Basic, Solution] www.vbweb.co.uk 01-Jul-2000

Palettes and 256 Colors [Palette, Color, Graphic, Visual C++, Article] Windows Developer's Journal 01-Jul-2000, vol. 11, no. 7 by Moishe Halibard
	Palettes and 256 Colors
	 
	Moishe Halibard
	  
	Despite the advantages of 32-bit color, palettized displays are still 
with us. For most machines, Graphics is simply faster in good old 256-color 
mode. But that means sharing a single color palette among multiple 
applications. Here are some tips and explanations to make the job easier.
	
NT Handle-to-Path Convertor [Handle, Path, File Handle, Filename, Visual C++, Article] Windows Developer's Journal 01-Jul-2000, vol. 11, no. 7 by Jim Conyngham
	NT Handle-to-Path Convertor
	 
	Jim Conyngham
	  
	Sometimes your code has to use a File Handle that it did not open 
itself. What if you want the associated Filename to display in an error 
message? Usually, you’re out of luck, but it turns out that under NT you can, 
in most cases, obtain the pathname associated with an open file handle.
	
Understanding NT: How to use Performance Counters [Performance Counter, Windows NT, Visual C++, Article] Windows Developer's Journal 01-Jul-2000, vol. 11, no. 7 by Paula Tomlinson
	Understanding NT: How to use Performance Counters
	 
	Paula Tomlinson
	  
	Performance counters are a way for NT applications to publish or access 
internal process information. For example, your NT program can read a 
performance counter to find out how many TCP/IP connections are open, or how 
much memory is currently committed. This is the first of a three-part series 
that explains in detail how to use performance counters.
	
Two AttachThreadInput() Tricks [AttachThreadInput(), Thread, Visual C++, Article] Windows Developer's Journal 01-Jul-2000, vol. 11, no. 7 by Joe Fitzpatrick
	Two AttachThreadInput() Tricks
	 
	Joe Fitzpatrick
	 
	Fun things you can do to other processes with AttachThreadInput().
	
Creating ADO Connection Strings at Run Time [ADO, ActiveX Data Objects, Visual C++, Article] Windows Developer's Journal 01-Jul-2000, vol. 11, no. 7 by Arnaud Aubert
	Creating ADO Connection Strings at Run Time
	 
	Arnaud Aubert
	 
	A function to construct the necessary string for connecting to a 
database via an ActiveX Data Object.
	
Passing VARIANT_BOOL* via IDispatch [VARIANT_BOOL, IDispatch Interface, ATL, Visual C++, Article] Windows Developer's Journal 01-Jul-2000, vol. 11, no. 7 by Shahar Prish
	Passing VARIANT_BOOL* via IDispatch
	 
	Shahar Prish
	 
	The ATL wizard can generate bad code for this case, so watch out.
	
Using a Background Thread [Thread, Visual C++, Article] Windows Developer's Journal 01-Jul-2000, vol. 11, no. 7 by Petter Hesselberg
	Using a Background Thread
	 
	Petter Hesselberg
	  
	Although no longer an absolute requirement, the Windows window 
messaging model still has a strong single-threaded orientation. This column 
looks at some of the issues you should think about when you decide to involve 
more than one thread in your user interface, and includes a dialog that uses a 
background thread to update information from the Internet.
	
Extend Office With ATL Add-ins [Office, ATL, Add-in, COM, Article, Visual C++] Visual C++ Developers Journal 01-Jul-2000, vol. 3, no. 6 by Brian Noyes
	Extend Office With ATL Add-ins
	 
	Brian Noyes
	 
	Need additional or specialized capabilities in Office 2000? Use ATL to 
build a COM add-in component that extends the functionality of Office apps.
	
Build Versatile 3-D Apps [3-D, Graphic, Article, Visual C++] Visual C++ Developers Journal 01-Jul-2000, vol. 3, no. 6 by Max Fomitchev
	Build Versatile 3-D Apps
	 
	Max Fomitchev
	 
	Create a versatile 3-D framework that handles common operations and 
ensures your application executes correctly on different configurations.
	
Integrate COM Components [COM, Article, Visual C++] Visual C++ Developers Journal 01-Jul-2000, vol. 3, no. 6 by Brian Noyes
	Integrate COM Components
	 
	Brian Noyes
	 
	Most COM programming documentation focuses on developing components, 
not using them. Learn how to integrate COM components into your app quickly and 
easily.
	
Get Started With the VC++ AppWizard [AppWizard, Article, Visual C++] Visual C++ Developers Journal 01-Jul-2000, vol. 3, no. 6 by Bill Wagner
	Get Started With the VC++ AppWizard
	 
	Bill Wagner
	 
	Learn to modify AppWizard auto-generated files in this first part of a 
series designed to help you use Visual C++ effectively.
	
Incorporate XML-Based Services [XML, Article, Visual C++] Visual C++ Developers Journal 01-Jul-2000, vol. 3, no. 6 by Brian K Holman
	Incorporate XML-Based Services
	 
	Brian K Holman
	 
	XML is here to stay, so start using it! Get up to speed on this new 
standard, then find out how to traverse and manipulate XML document structures.
	
Register COM+ Event Classes [COM+, Event Class, ATL, Article, Visual C++] Visual C++ Developers Journal 01-Jul-2000, vol. 3, no. 6 by Richard Grimes
	Register COM+ Event Classes
	 
	Richard Grimes
	 
	Using ATL to register and install COM+ event classes, you can eliminate 
their implementation, reducing the size and increasing the load speed of your 
COM+ DLLs.
	
Understanding the Free-Threaded Marshaler [Free-threaded Marshaler, COM, Article, Visual C++] Visual C++ Developers Journal 01-Jul-2000, vol. 3, no. 6 by George Shepherd
	Understanding the Free-Threaded Marshaler
	 
	George Shepherd
	 
	COM’s free-threaded marshaler lets you write in-process COM objects 
spanning all the execution contexts within a process.
	
Reformat Extracted ODBC Data [ODBC, Database, Article, Visual C++] Visual C++ Developers Journal 01-Jul-2000, vol. 3, no. 6 by Tom Creighton
	Reformat Extracted ODBC Data
	 
	Tom Creighton
	 
	Create a set of object classes that lets you retrieve data from ODBC 
Databases and reformat it to suit your needs.
	
Detect Library Startup and Shutdown [ActiveX DLL, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jul-2000, vol. 10, no. 8 by Karl E Peterson
	Detect Library Startup and Shutdown
	 
	Karl E Peterson
	  
	ActiveX DLLs don't offer a standard way to detect library termination, 
but our pro tells you how it's done.
	
Audit Data Efficiently [Audit, Trigger, Stored Procedure, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jul-2000, vol. 10, no. 8 by R Mark Tucker
	Audit Data Efficiently
	 
	R Mark Tucker
	  
	Add auditing to your apps by choosing from 12 methods that use Triggers 
or Stored Procedures.
	
Modify a Variable’s Pointer [Pointer, Memory Mapped File, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jul-2000, vol. 10, no. 8 by Bill McCarthy
	Modify a Variable’s Pointer
	 
	Bill McCarthy
	  
	Modify a variable's pointer to share data between your applications, to 
point to a Memory Mapped File, or to manipulate data using pointers.
	
Code Faster With a String Parser [String, Parser, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jul-2000, vol. 10, no. 8 by Francesco Balena
	Code Faster With a String Parser
	 
	Francesco Balena
	  
	Your coding process gets easier and faster if you think of your source 
code as data. The author shows you how to create a utility that automates your 
code editing process.
	
Create 3-D Graphics With DX7 [3-D, Graphic, DirectX, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jul-2000, vol. 10, no. 8 by Jonny Anderson
	Create 3-D Graphics With DX7
	 
	Jonny Anderson
	  
	VB developers have long pined for the ability to implement DirectX 7 
(DX7) directly from VB. This article walks you through the process of 
installing DX7 and creating a simple 3-D application.
	
Organize Data With Stacks and Queues [Stack, Queue, Data Structure, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jul-2000, vol. 10, no. 8 by Nick Snowdon
	Organize Data With Stacks and Queues
	 
	Nick Snowdon
	  
	Queues and stacks serve a similar purpose, but operate on quite 
different principles. Learn how to use these basic Data Structures to organize 
your data.
	
Write Complex Queries With MDX [MDX, MultiDimensional eXpression, Query, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jul-2000, vol. 10, no. 8 by Andrew J Brust
	Write Complex Queries With MDX
	 
	Andrew J Brust
	  
	If you think the MultiDimensional eXpression (MDX) Query language is 
hard to learn, you're not alone. However, MDX comes to the rescue with advanced 
functionality and properties to help you write useful and more powerful queries.
	
Design for COM+ [COM+, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jul-2000, vol. 10, no. 8 by Dan Fox
	Design for COM+
	 
	Dan Fox
	  
	Learn to design simple and robust distributed applications with COM+. 
You can make your life easier by taking advantage of COM+ design features to 
create powerful, more flexible systems that will save you time and prevent 
programming headaches.
	
Use SQL With ADO [SQL, ADO, ActiveX Data Objects, ADO, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jul-2000, vol. 10, no. 8 by Stan Schultes
	Use SQL With ADO
	 
	Stan Schultes
	  
	Using ActiveX Data Objects (ADO) in your VB code to build and execute 
SQL statements is easier than you might think. Check out the advantages of 
using ADO.
	
Manage Resources With WMI [Resource, WMI, Windows Management Instrumentation, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jul-2000, vol. 10, no. 8 by L J Johnson
	Manage Resources With WMI
	 
	L J Johnson
	  
	Tired of using the API and Registry entries if you manage the resources 
on one or more computers? Create a network computer management program with 
Windows Management Instrumentation (WMI) and VB.
	
Go Beyond OO With CBD [CBD, Component-based Development, Object Oriented, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jul-2000, vol. 10, no. 8 by Deborah Kurata
	Go Beyond OO With CBD
	 
	Deborah Kurata
	 
	Component-based Development is the way to go for today’’s desktop and 
Web development. Take advantage of the benefits it has to offer.
	
Write Intelligent Transact-SQL [Transact-SQL, Stored Procedure, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jul-2000, vol. 10, no. 8 by Mary V Hooke
	Write Intelligent Transact-SQL
	 
	Mary V Hooke
	  
	Take advantage of Transact-SQL functionality to streamline data and 
process logic in your Stored Procedures.
	
Improve Web Development With ASP 3 [Web, ASP, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jul-2000, vol. 10, no. 8 by A Russell Jones
	Improve Web Development With ASP 3
	 
	A Russell Jones
	  
	ASP 3 offers several new features that can make your Web development 
process easier. Here’s how to use these features to improve scalability and 
responsiveness.
	
Exchange 2000: Web Storage System, Workflow Tools, and CDO Turbocharge Collaboration Apps [Web Storage System, Workflow, CDO, Collaboration, Exchange, Article] MSDN Magazine 01-Jul-2000, vol. 15, no. 7 by Sean McCormick
	Exchange 2000: Web Storage System, Workflow Tools, and CDO Turbocharge 
Collaboration Apps
	 
	Sean McCormick
	
Create Dynamic Digital Dashboards Using Microsoft Office 2000, OLAP, and DHTML [OLAP, DHTML, Office, Article] MSDN Magazine 01-Jul-2000, vol. 15, no. 7 by Todd Abel
	Create Dynamic Digital Dashboards Using Microsoft Office 2000, OLAP, 
and DHTML
	 
	Todd Abel
	
Introducing the Web Application Manager, Client Authentication Options, and Process Isolation [Web Application Manager, Client Authentication Option, Process Isolation, Internet Explorer, Article] MSDN Magazine 01-Jul-2000, vol. 15, no. 7 by Keith Brown
	Introducing the Web Application Manager, Client Authentication Options, 
and Process Isolation
	 
	Keith Brown
	
Automating the Creation of COM+ Components for a Database Schema [COM+, Component, Database Schema, Visual C++, Article] MSDN Magazine 01-Jul-2000, vol. 15, no. 7 by Aleksandr Mikunov
	Automating the Creation of COM+ Components for a Database Schema
	 
	Aleksandr Mikunov
	
Monitor Your Web Site's Activity with COM and Active Scripting [Monitor, Web, COM, Active Scripting, Internet Explorer, Article] MSDN Magazine 01-Jul-2000, vol. 15, no. 7 by Panos Kougiouris
	Monitor Your Web Site's Activity with COM and Active Scripting
	 
	Panos Kougiouris
	
Performing Ad Hoc Web Reporting with a VBScript 5.0 Class Object [Web, VBScript, Article] MSDN Magazine 01-Jul-2000, vol. 15, no. 7 by Randall Kindig
	Performing Ad Hoc Web Reporting with a VBScript 5.0 Class Object
	 
	Randall Kindig
	
ASP-based Web Site Design to Support Globalization [ASP, Web, Globalization, Visual Basic, Article] MSDN Magazine 01-Jul-2000, vol. 15, no. 7 by Michael Kaplan
	ASP-based Web Site Design to Support Globalization
	 
	Michael Kaplan
	
Using a DTC to submit a Form [DTC, Form, Internet Explorer, Article] MSDN Magazine 01-Jul-2000, vol. 15, no. 7 by Robert Hess
	Using a DTC to submit a Form
	 
	Robert Hess
	
Sending E-mail from Forms [E-mail, Form, Internet Explorer, Article] MSDN Magazine 01-Jul-2000, vol. 15, no. 7 by Robert Hess
	Sending E-mail from Forms
	 
	Robert Hess
	
Writing custom OLE DB Providers using ATL [OLE DB Provider, ATL, Visual C++, Article] MSDN Magazine 01-Jul-2000, vol. 15, no. 7 by Dino Esposito
	Writing custom OLE DB Providers using ATL
	 
	Dino Esposito
	
Addressing Infosets with XPath [XPath, XML, Internet Explorer, Article] MSDN Magazine 01-Jul-2000, vol. 15, no. 7 by Aaron Skonnard
	Addressing Infosets with XPath
	 
	Aaron Skonnard
	
Migrating from MTS to COM+ [MTS, COM+, Visual Basic, Article] MSDN Magazine 01-Jul-2000, vol. 15, no. 7 by Ken Spencer
	Migrating from MTS to COM+
	 
	Ken Spencer
	
Interlocked Functions [Interlock, Visual C++, Article] MSDN Magazine 01-Jul-2000, vol. 15, no. 7 by Jeffrey Richter
	Interlocked Functions
	 
	Jeffrey Richter
	
Intercepting Ctrl+Esc, Alt+Tab and Alt+Esc [Interception, Callback, Visual C++, Article] MSDN Magazine 01-Jul-2000, vol. 15, no. 7 by Jeffrey Richter
	Intercepting Ctrl+Esc, Alt+Tab and Alt+Esc
	 
	Jeffrey Richter
	
Happy 10th anniversary, Windows: Looking back at 10 years of Windows Development [Windows, Development, Visual C++, Article] MSDN Magazine 01-Jul-2000, vol. 15, no. 7 by Matt Pietrek
	Happy 10th anniversary, Windows: Looking back at 10 years of Windows 
Development
	 
	Matt Pietrek
	
Using ADO to create XML-based Recordsets [ADO, XML, Recordset, Visual Basic, Article] MSDN Magazine 01-Jul-2000, vol. 15, no. 7 by Don Box
	Using ADO to create XML-based Recordsets
	 
	Don Box
	
Enable and Disable Menus in MFC [Menu, MFC, ON_UPDATE_COMMAND_UI, Visual C++, Article] MSDN Magazine 01-Jul-2000, vol. 15, no. 7 by Paul DiLascia
	Enable and Disable Menus in MFC
	 
	Paul DiLascia
	
Changing the behavior of Enter for a Dailog [Dialog, Visual C++, Article] MSDN Magazine 01-Jul-2000, vol. 15, no. 7 by Paul DiLascia
	Changing the behavior of Enter for a Dailog
	 
	Paul DiLascia
	
Modeles Dialog and Message Loops [Modeless Dialog, Message Loop, Dialog, Visual C++, Article] MSDN Magazine 01-Jul-2000, vol. 15, no. 7 by Paul DiLascia
	Modeles Dialog and Message Loops
	 
	Paul DiLascia
	
Real-world Web Apps [Web, WebBroker, ISAPI, Article, Delphi] Delphi Informant 01-Jul-2000, vol. 6, no. 7 by Mark Brittingham
	Real-world Web Apps
	 
	Mark Brittingham
	 
	You know the basics; Dr Brittingham tells us what it takes to build a 
Web application to withstand the rigors of daily use, from WebBroker 
components, to ISAPI DLLs, to tracking state, and more.
	
Delphi and ASP [ASP, Active Server Pages, Article, Delphi] Delphi Informant 01-Jul-2000, vol. 6, no. 7 by Cary Jensen
	Delphi and ASP
	 
	Cary Jensen
	 
	Microsoft Active Server Pages are extremely popular. Dr Jensen shows 
you how to get in on the action by explaining the basics of ASP, and 
demonstrating how to create and use ASP objects with Delphi.
	
Exploiting SQL Server 7 DMO: Part II [Distributed Management Objects, Database Information and Reconciliation Tool, Security, SQL Server, Article, Delphi] Delphi Informant 01-Jul-2000, vol. 6, no. 7 by Jason Perry
	Exploiting SQL Server 7 DMO: Part II
	 
	Jason Perry
	 
	Mr Perry ends his two-part series on Microsoft SQL Server 7 Distributed 
Management Objects by sharing an invaluable Database Information and 
Reconciliation Tool, as well as a simple Security object.
	
Palm Conduits: Part II [Palm Conduit, Conduit, Paradox, Article, Delphi] Delphi Informant 01-Jul-2000, vol. 6, no. 7 by Ron Loewy
	Palm Conduits: Part II
	 
	Ron Loewy
	 
	Completing his two-part series, Mr Loewy builds a Conduit that moves 
information from the Palm device to a Paradox database, and a conduit that 
synchronizes the Paradox database and Palm device.
	
Simple Unit Tests in C++ [Unit Test, C++, Testing, Article, Visual C++] C++ Users Journal 01-Jul-2000 by Marc Briand
	Simple Unit Tests in C++
	 
	Marc Briand
	  
	Unit Testing is a tedious, but often necessary, adjunct to writing 
code. A few template classes can eliminate much of the tedium and improve 
encapsulation in the bargain.
	
Data-Based Axis Determination [Graph, Article, Visual C++] C++ Users Journal 01-Jul-2000 by Michael Bramley
	Data-Based Axis Determination
	 
	Michael Bramley
	  
	Labeling the axes of a Graph is not as easy as you might think.
	
Copying Files from the Clipboard to a Command Prompt [File, Clipboard, Command Prompt, DOS, Article, Visual C++] C++ Users Journal 01-Jul-2000 by Joey Rogers
	Copying Files from the Clipboard to a Command Prompt
	 
	Joey Rogers
	  
	You can make DOS more of a first-class Windows citizen with this handy 
little clipboard utility.
	
Browser-Based Directory Access through LDAP and COM [Browser, Directory, LDAP, COM, Article, Visual C++] C++ Users Journal 01-Jul-2000 by Marco Morana
	Browser-Based Directory Access through LDAP and COM
	 
	Marco Morana
	  
	You can do a lot with LDAP - once you get all the glue right.
	
Implementation of Observer Pattern [Observer Pattern, Article, Visual C++] C++ Users Journal 01-Jul-2000 by Paul Barnes
	Implementation of Observer Pattern
	 
	Paul Barnes
	  
	Many applications involve observers waiting for notification. Getting 
the logic right for both publishers and subscribers is something you don’t want 
to have to do repeatedly.
	
Tree Traversal in C without Recursion [Tree Traversal, Recursion, Article, Visual C++] C++ Users Journal 01-Jul-2000 by Valery Creux
	Tree Traversal in C without Recursion
	 
	Valery Creux
	  
	If you can spare one bit of storage in each node, you can traverse a 
tree without recursive function calls.
	
Formatted Text and Locales [Java, Article, Visual C++] C++ Users Journal 01-Jul-2000 by Chuck Allison
	Chuck Allison
	 
	Formatted Text and Locales
	 
	Java offers more formatting power than C, but not necessarily in a more 
convenient package.
	
Error in Floating Point Calculations [Error, Floating Point, Article, Visual C++] C++ Users Journal 01-Jul-2000 by Pete Becker
	Pete Becker
	 
	Error in Floating Point Calculations
	 
	And you thought error, accuracy, precision, and significance were 
pretty synonymous.
	
An IP Telephone in 74 Lines of Perl [Telephone, Article, Perl] The Perl Journal 01-Jul-2000, vol. 5, no. 3 by Lincoln D Stein
	An IP Telephone in 74 Lines of Perl
	 
	Lincoln D Stein
	
Microperl [Microperl, Article, Perl] The Perl Journal 01-Jul-2000, vol. 5, no. 3 by Simon Cozens
	Microperl
	 
	Simon Cozens
	
Spreadsheet::WriteExcel [Spreadsheet::WriteExcel, Excel, Article, Perl] The Perl Journal 01-Jul-2000, vol. 5, no. 3 by John McNamara
	Spreadsheet::WriteExcel
	 
	John McNamara
	
Extending Perl with Inline.pm [Article, Perl] The Perl Journal 01-Jul-2000, vol. 5, no. 3 by Brian Ingerson
	Extending Perl with Inline.pm
	 
	Brian Ingerson
	
Finance::Quote [Finance::Quote, Article, Perl] The Perl Journal 01-Jul-2000, vol. 5, no. 3 by Paul Fenwick
	Finance::Quote
	 
	Paul Fenwick
	
Finance::QuoteHist and HTML::TableExtract [Finance::QuoteHist, HTML::TableExtract, Article, Perl] The Perl Journal 01-Jul-2000, vol. 5, no. 3 by Matthew Sisk
	Finance::QuoteHist and HTML::TableExtract
	 
	Matthew Sisk
	
Scanning HTML [HTML, Article, Perl] The Perl Journal 01-Jul-2000, vol. 5, no. 3 by Sean M Burke
	Scanning HTML
	 
	Sean M Burke
	
Smart Matching for Human Names [Matching, Article, Perl] The Perl Journal 01-Jul-2000, vol. 5, no. 3 by Brian Lalonde
	Smart Matching for Human Names
	 
	Brian Lalonde
	
Parsing Natural Language with Lingua::LinkParser [Parsing, Lingua::LinkParser, Article, Perl] The Perl Journal 01-Jul-2000, vol. 5, no. 3 by Dan Brian
	Parsing Natural Language with Lingua::LinkParser
	 
	Dan Brian
	
Integrating Perl into Microsoft Office Innards [Office, Article, Perl] The Perl Journal 01-Jul-2000, vol. 5, no. 3 by Tim Meadowcroft
	Integrating Perl into Microsoft Office Innards
	 
	Tim Meadowcroft
	
Converting C to English with Perl [Article, Perl] The Perl Journal 01-Jul-2000, vol. 5, no. 3 by Omri Schwartz
	Converting C to English with Perl
	 
	Omri Schwartz
	
Optimizing Object Pascal [Optimizing, Object Pascal, Article, Delphi] Delphi Developer 01-Jul-2000, vol. 6, no. 7 by Charles Appel
	Optimizing Object Pascal
	 
	Charles Appel
	 
	In this piece, Charles Appel explores optimizing Delphi code based on 
standard techniques, fully understanding the subject matter of the program, and 
a case of sheer dumb luck. A poker library is used to illustrate these points. 
(Tip: Want to know what the single greatest optimization I made was? It'll 
surprise you! And it's one you can implement in your code today; see 
Optimization 5.)
	
What is XML? [XML, Article, Delphi] Delphi Developer 01-Jul-2000, vol. 6, no. 7 by Peter Vogel
	What is XML?
	 
	Peter Vogel
	 
	Peter Vogel, editor of XML Developer 
(http://www.xmldevelopernewsletter.com), Pinnacle Publishing's newest 
publication, offers an introduction to the capabilities of XML. He defines XML 
and introduces the fundamentals of the language including defining and using 
tags as well as creating and processing documents.
	
Creating Custom TScrollBox Navigation [TScrollBox, Scrollbar, Article, Delphi] Delphi Developer 01-Jul-2000, vol. 6, no. 7 by Keith Wood
	Creating Custom TScrollBox Navigation
	 
	Keith Wood
	 
	TScrollBox provides a small viewport into a big area. Using the 
Scrollbars, you can position yourself over any portion of the display. But 
navigating around in such a scroll box isn't always easy or intuitive. To fix 
this problem, Keith Wood has built a custom navigation panel for scroll boxes 
that gives you the big picture.
	
Creating a Crystal Reports User Function Library in Delphi [Crystal Reports, Report, Article, Delphi] Delphi Developer 01-Jul-2000, vol. 6, no. 7 by Elias Ongpoy
	Creating a Crystal Reports User Function Library in Delphi
	 
	Elias Ongpoy
	 
	You don't have to go through numerous steps to massage your data and 
report it. You can accomplish the same thing in fewer steps by creating your 
own Crystal Reports UFL functions. In this article, Elias Ongpoy shows you how 
to write a UFL in Delphi that will work just like one of the built-in functions 
in Crystal Reports.
	
Error Handler Add-in [Error Handler, Add-in, Article, Visual Basic] www.vb2themax.com 01-Jul-2000 by Steven A Phillips
	Error Handler Add-in
	  
	1-Jul-2000
	 
	1-Jul-2000
	 
	Steven A Phillips
	 
	This addin greatly simplifies adding error handling to VB programs. 
Simply register the DLL using REGSVR32 and the addin will be added into the 
Visual Basic tools menu. Keep the two template files in the same directory as 
the DLL. Move the cursor within 10 lines after the procedure name line and 
activate the add-in by pressing Alt-T-E or by clicking on the menu: all the 
error handling code will be added automatically. The templates can be modified 
based on preference, as explained in the Readme.txt file.
	 
	Updated: 7/22/00
	
ATL Windowing - A simpel tutorial by examples [ATL Windowing, Article, Visual C++] www.mindcracker.com 01-Jul-2000 by Mahesh Chand
	ATL Windowing - A simpel tutorial by examples
	 
	Mahesh Chand
	 
	01-Jul-2000
	 
	01-Jul-2000
	
Connection Point and Asynchronous Calls, Part I [Connection Point, Asynchronous Call, Article, Visual C++] www.mindcracker.com 01-Jul-2000 by Ashish Dhar
	Connection Point and Asynchronous Calls, Part I
	 
	Ashish Dhar
	 
	01-Jul-2000
	 
	01-Jul-2000
	 
	Connection Points are a way of letting Server to notify you when 
something has happened in the server which you wanted to know of. I started 
using connection points when I was just learning how to code in COM.I came 
across a lot of issues including the performance .Eventually I learned the how 
and whys (not 100% :)) of connection points. This article is a kind of a 
tutorial for those who donot know what connection points are or those who know 
what they are but haven't ever tried to code them.This article tells you why do 
you need connection points and what are the alternatives.The article takes you 
slowly from the need of getting the events back from client to why you need 
Connection Points at all.Connection Points are implemented using IDispatch 
interface .This tutorial simulates connection point using Custom 
Interfaces(IUnknown).
	 
	Given the length of the article I have divided this into two parts 
.Part I, which is this, discusses Aynchronous calls and why are they useful. 
This part also tells you about the callbacks .Here we will implement a Server 
(called Server03) which will demonstrate the need of asynchronous calls .This 
server will simulate connection points with the IUnknown callback interface. We 
will also implement one MFC client for the server..
	 
	Part II of this article will demonstrate the connection points in ATL 
and we will implement a client in ATL.and will see what are the different 
things one need to take into consideration while implementing a sink in ATL.
	 
	Why do we need notifications from server?
	 
	All COM calls are synchronous meaning when you make a call to a method 
on an interface ,the thread blocks until the method returns. Well being 
synchronous is not bad always but sometimes it is painful.Lets say we have an 
CoMath object exposes the following method
	 
 Add([in]short nFirst t,[in] short nSecond,[out,retval] short* pR ... (cont.)
Profiles in Personalization [Article, Lotus Notes] Notes Advisor 01-Jul-2000 by Keith Reichly
Web Development - Lotus Notes & Domino Advisor - July 2000 
	Profiles in Personalization
	 
	Keith Reichly
	
JSPs: Another Great Tool for the Box [JSP, Article, Lotus Notes] Notes Advisor 01-Jul-2000 by Rose M Kelleher
Webs Development - Lotus Notes & Domino Advisor - July 2000 
	JSPs: Another Great Tool for the Box
	 
	Rose M Kelleher
	
Build Transaction-Friendly Applications [Transaction, Article, Lotus Notes] Notes Advisor 01-Jul-2000 by Terrance Crow
Enterprise Integration - Lotus Notes & Domino Advisor - July 2000 
	Build Transaction-Friendly Applications
	 
	Terrance Crow
	
Inside the COM Toolkit [COM, Article, Lotus Notes] Notes Advisor 01-Jul-2000 by Terrance Crow
Enterprise Integration - Lotus Notes & Domino Advisor - July 2000 
	Inside the COM Toolkit
	 
	Terrance Crow
	
Powerful Web Reporting for Domino [Web, Reporting, Domino, Article, Lotus Notes] Notes Advisor 01-Jul-2000 by Michael Mohen
Data Integration - Lotus Notes & Domino Advisor - July 2000 
	Powerful Web Reporting for Domino
	 
	Michael Mohen
	
Browse IIS Directory Structures [Article, Visual C++] www.earthweb.com 01-Jul-2000 by Schellnast Bernd
	Browse IIS Directory Structures
	 
	Schellnast Bernd
	 
	1-Jul-2000
	 
	1-Jul-2000
	 
	This article contains the complete project for an ISAPI Extension for 
exploring Web Servers with Microsoft Internet Information Server running.
	
Beginners Guide to Dialog Based Applications, Part Two [Dialog, Windows Programming, MFC, Article, Visual C++] www.codeproject.com 30-Jun-2000 by Dr Asad Altimeemy
	Beginners Guide to Dialog Based Applications, Part Two
	 
	Dr Asad Altimeemy
	 
	A step by step tutorial showing how to create your first windows 
program using MFC
	
CCtrlView [MFC, Visual C++]
The base class for views that encapsulate Windows controls. So it can also be 
used to convert Windows control to MFC views (example, a listview that occupies 
the entire client region).

Some MFC classes based on CCtrlView:
CEditView - multiline edit view
CRichEditView - rich edit view
CListView - listview control
CTreeView - treeview control

To build on CCtrlView:
Base new class on CCtrlView.
Write a constructor that call CCtrlView's constructor with a Window Control 
WNDCLASS name.
Write an accessor fcuntion to get a reference to the underliying Window control.
Add member function to add functionality to the new class.

See CTabView ->  for an example of a class derived from CCtrlView.
ItemDataCombo (using: Visual C++ 6.0) [Combobox, List Control, CComboBox Class, Article, Visual C++] www.codeproject.com 29-Jun-2000
	ItemDataCombo
	 
	Smaller Animals Software Inc
	 
	An extremely simple but useful CComboBox entension
	
A Beginner's Guide to Pointers [C++, MFC, STL, Article, Visual C++] www.codeproject.com 29-Jun-2000 by Andrew Peace
	A Beginner's Guide to Pointers
	 
	Andrew Peace
	 
	An article showing the use of pointers in C and C++
	
FaderWnd: a Window Fader for Windows 2000 [Dialog, Windows Programming, MFC, Article, Visual C++] www.codeproject.com 29-Jun-2000 by Phil J Pearson
	FaderWnd: a Window Fader for Windows 2000
	 
	Phil J Pearson
	 
	An MFC class to fade any window with only one line of code.
	
An example of Using MSHTML with a webbrowser control [Control, HTML, Article, Visual C++] www.codeproject.com 29-Jun-2000 by Colin Davies
	An example of Using MSHTML with a webbrowser control
	 
	Colin Davies
	 
	A quick and simple example of using MSHTML to modify the DOM
	
Whats my CPU Speed? [System, Article, Visual C++] www.codeproject.com 29-Jun-2000 by Colin Davies
	Whats my CPU Speed?
	 
	Colin Davies
	 
	Some simple functions for system stats
	
CRichEditView/CRichEditDoc Bug Work-Around [Article, Visual C++] www.earthweb.com 29-Jun-2000 by John Czopowik
	CRichEditView/CRichEditDoc Bug Work-Around
	 
	John Czopowik
	 
	29-Jun-2000
	 
	29-Jun-2000
	 
	This article details a bug found with using a CRichEditDoc and a 
workaround to it.
	
SAScript [C++, MFC, STL, Article, Visual C++] www.codeproject.com 28-Jun-2000 by Smaller Animals Software Inc
	SAScript
	 
	Smaller Animals Software Inc
	 
	A simple stack-based language that you can easily add to your projects
	
VBMake Script [Visual Basic, VBScript, VBA, Visual Basic, Article, Visual C++] www.codeproject.com 28-Jun-2000 by Kinook Software
	VBMake Script
	 
	Kinook Software
	 
	Script for automating and speeding Visual Basic builds
	
COM object returning Recordset [COM, Recordset, ASP, Article, Visual C++] www.mindcracker.com 28-Jun-2000 by Bulent Ozkir
	COM object returning Recordset
	 
	Article explains how to create a COM object which returns recordsets 
and explains how to call its method from ASP.
	 
	Bulent Ozkir
	 
	28-Jun-2000
	 
	28-Jun-2000
	
CXTabCtrl: an easier tab control for Dialogs and forms [Tab Control, Dialog, Article, Visual C++] www.codeproject.com 27-Jun-2000 by xicoloko
	CXTabCtrl: an easier tab control for Dialogs and forms
	 
	xicoloko
	 
	An easier tab control
	
How to disable a Cancel button on a property page? [Article, Visual C++] www.mindcracker.com 27-Jun-2000 by Mahesh Chand
	How to disable a Cancel button on a property page?
	 
	Mahesh Chand
	 
	27-Jun-2000
	 
	27-Jun-2000
	
How to change Next button of a property page to Finish? [Article, Visual C++] www.mindcracker.com 27-Jun-2000 by Mahesh Chand
	How to change Next button of a property page to Finish?
	 
	Mahesh Chand
	 
	27-Jun-2000
	 
	27-Jun-2000
	
How to change caption of a button on a property page? [Article, Visual C++] www.mindcracker.com 27-Jun-2000 by Mahesh Chand
	How to change caption of a button on a property page?
	 
	Mahesh Chand
	 
	27-Jun-2000
	 
	27-Jun-2000
	
How to delete a property page from a Property Sheet Wizard? [Article, Visual C++] www.mindcracker.com 27-Jun-2000 by Mahesh Chand
	How to delete a property page from a Property Sheet Wizard?
	 
	Mahesh Chand
	 
	27-Jun-2000
	 
	27-Jun-2000
	
Records in Object Pascal [Article, Delphi] delphi.about.com 27-Jun-2000
	27-Jun-2000
	 
	27-Jun-2000
	 
	Records in Object Pascal
	 
	Delphi For Beginners: Learn about records, Delphi's Pascal data 
structure that can mix any of Delphi's built in types including any types you 
have created.
	
Self-Extracting File Framework [File, Folder, Compression, Article, Visual C++] www.codeproject.com 26-Jun-2000 by Rui Godinho Lopes
	Self-Extracting File Framework
	 
	Rui Godinho Lopes
	 
	An article about creating Self-Extracting files with integrated 
Compression
	
zSmtp: Win32 SMTP Class [Internet, Network, Article, Visual C++] www.codeproject.com 26-Jun-2000 by Christopher W Backen
	zSmtp: Win32 SMTP Class
	 
	Christopher W Backen
	 
	Simple Win32 SMTP Class
	
ADO Overview and advantages over other Database access methods [ADO, Database, Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	ADO Overview and advantages over other Database access methods
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
How to use ADO in VC++? [ADO, Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	How to use ADO in VC++?
	 
	This article tells about different ways of using ADO in your VC++ 
applications. Mahesh Chand 06/26/2000 How to get data from a database using ADO 
recordset?
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
How to add, update, delete data from a Database using ADO Recordset [Database, ADO Recordset, Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	How to add, update, delete data from a Database using ADO Recordset
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
How to execute an SQL query in ADO model? [SQL, ADO, Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	How to execute an SQL query in ADO model?
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
How to call Stored Procedures in ADO model? [Stored Procedure, ADO, Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	How to call Stored Procedures in ADO model?
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
How to change background color of a View window? [Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	How to change background color of a View window?
	 
	Sample project attached.
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
How to change background color of a dialog? [Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	How to change background color of a dialog?
	 
	Sample project attached.
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
How to change background color of an edit control? [Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	How to change background color of an edit control?
	 
	Sample project attached.
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
How to create an access database? [Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	How to create an access database?
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
How to connect to an existing access database? [Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	How to connect to an existing access database?
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
Microsoft data access component (MDAC) [Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	Microsoft data access component (MDAC)
	 
	Microsoft database access methods and which one to use and when.
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
Database technologies for Windows platform [Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	Database technologies for Windows platform
	 
	A general overview of various database technologies from Microsoft such 
as ODBC, ADO, and DAO.
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
Error types and debug vz release build in Visual Studio? [Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	Error types and debug vz release build in Visual Studio?
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
Debugging MFC: Prevent and detect bugs using ASSERT, VALID and other macros [Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	Debugging MFC: Prevent and detect bugs using ASSERT, VALID and other 
macros
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
Memory Management: How to detect memory leaks in your program? [Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	Memory Management: How to detect memory leaks in your program?
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
VC++ debugging tools - a must for VC++ developers [Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	VC++ debugging tools - a must for VC++ developers
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
Useful debugging tips [Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	Useful debugging tips
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
How to get availabe data sources from your machine? [Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	How to get availabe data sources from your machine?
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
How to create a new ODBC data source? [Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	How to create a new ODBC data source?
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
How to get number of columns and column attributes of a table? [Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	How to get number of columns and column attributes of a table?
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
How to add, update, delete data from a database using ODBC API? [Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	How to add, update, delete data from a database using ODBC API?
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
How to get data from a database using ODBC API? [Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	How to get data from a database using ODBC API?
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
Read, write, delete to/from Windows Registry [Article, Visual C++] www.mindcracker.com 26-Jun-2000 by Mahesh Chand
	Read, write, delete to/from Windows Registry
	 
	Mahesh Chand
	 
	26-Jun-2000
	 
	26-Jun-2000
	
References in C++ [Article, Visual C++] cplus.about.com 25-Jun-2000
	25-Jun-2000
	 
	25-Jun-2000
	  
	References in C++
	 
	What is a reference and how to use it
	
MB MsgBoxEx Control [Control, MsgBox Function, Article, Visual Basic] www.vb2themax.com 24-Jun-2000 by Marco Bellinaso
	MB MsgBoxEx Control
	  
	24-Jun-2000
	 
	24-Jun-2000
	 
	Marco Bellinaso
	 
	This control is an extended and object-oriented version of the VB's 
MsgBox Function. You can center the message box on your form or place it 
everywhere you want, display any icon, and change the caption of every button. 
You can finally create a standard dialog with the Yes, Yes to All, No, No to 
All buttons, or any other combination you want.
	
Browsing for ODBC Data Source Names (DSN) (using: Visual C++ 6.0) [Article, Database, Visual C++] www.codeguru.com 24-Jun-2000 by Emil Gustafsson
	Emil Gustafsson
	 
	C++ class that enumerates the system's ODBC DSNs
	 
	
	
Voice Communication via Network/Internet [Internet, Article, Visual C++] www.codeguru.com 24-Jun-2000 by Zhaohui Xing
	Voice Communication via Network/Internet
	 
	Zhaohui Xing
	 
	Prototype to demonstrate how to realize basic voice communications via 
Internet/Network on PC platforms
	
Browsing for ODBC Data Source Names (DSN) [Article, Visual C++] www.earthweb.com 24-Jun-2000 by Emil Gustafsson
	Browsing for ODBC Data Source Names (DSN)
	 
	Emil Gustafsson
	 
	24-Jun-2000
	 
	24-Jun-2000
	 
	C++ class that enumerates the system's ODBC DSNs
	
Voice Communication via Network/Internet [Article, Visual C++] www.earthweb.com 24-Jun-2000 by Zhaohui Xing
	Voice Communication via Network/Internet
	 
	Zhaohui Xing
	 
	24-Jun-2000
	 
	24-Jun-2000
	 
	Prototype to demonstrate how to realize basic voice communications via 
Internet/Network on PC platforms
	
Associate File Extension with Shell OPEN command and Application [Shell Programming, File, MFC, Article, Visual C++] www.codeproject.com 23-Jun-2000 by Blake V Miller
	Associate File Extension with Shell OPEN command and Application
	 
	Blake V Miller
	 
	Registry entries and MFC class that associates a file extension with a 
program.
	
An Adaptable Property List Control [Listview, Update, Article, Visual C++] www.codeguru.com 23-Jun-2000 by Stefan Belopotocan
	An Adaptable Property List Control
	 
	Stefan Belopotocan
	 
	Very nice list control for displaying VB-like properties dialog
	
CHotButton: a "HotSpot" Button [Button Control, Article, Visual C++] www.codeguru.com 23-Jun-2000 by Rick Shide
	CHotButton: a "HotSpot" Button
	 
	Rick Shide
	 
	Button control that enables you to place images on a button and handle 
clicks on that part of the button (the hotspot)
	
CHotButton - a "HotSpot" Button [Article, Visual C++] www.earthweb.com 23-Jun-2000 by Rick Shide
	CHotButton - a "HotSpot" Button
	 
	Rick Shide
	 
	23-Jun-2000
	 
	23-Jun-2000
	 
	A Button control that enables you to place images on a button and 
handle clicks on that part of the button (the hotspot).
	
When There Has Been a Sharing Violation (using: Windows NT 2000) [File, Sharing Violation, Windows NT, Tip] www.devx.com 22-Jun-2000 by L J Johnson
When There Has Been a Sharing Violation
By L.J. Johnson

Several questions have come in lately concerning the error message you 
sometimes get when trying to delete or move a file or a directory. The message 
is something like "Error renaming file: Cannot rename file myfile.dat. There 
has been a sharing violation. The source or destination files may be in use." 
This can be an annoying and frustrating message, because it sometimes comes 
when you are sure that the file isn't currently in use. The good news is that 
this message is usually correct and, in fact, can prevent file corruption that 
can happen on Win9x. The bad news is that tracking down the exact reason that 
the file is still in use can take a little investigation, and I'll admit that 
on a couple of occasions I've rebooted (or logged off, then on again) to solve 
the problem. NT is quite stringent in this area—it keeps track of pointers to 
all the open files and directories, and will not allow you to delete or move a 
file or directory if even a single pointer exists to it, for any reason. 

One of the possible reasons you can't delete a file (or directory) is that you 
don't have the rights to do so. It is possible to have Create and Modify rights 
without having Delete rights. Another possibility is that the file itself (or, 
more probably, the extended attributes of the file—its metadata) is corrupt. I 
once had a hard drive that did this on a regular basis. In fact, it was a bug 
with NT 3.51 with a really huge number of files. The only way to cure that 
particular problem was to run chkdsk /f on the drive and then reboot the 
computer. 

A real possibility with deleting a directory is that you have another program 
accessing that directory (or one of its subdirectories). Check for other copies 
of Windows Explorer (or My Computer or My Network Places or even the command 
prompt) running and check to see where their current directories are pointing. 
Also look at any application programs that are running and where ... (cont.)
ADO Recordset Paging in ASP [Active Server Pages, ADO, ASP, Article, Visual C++] www.codeproject.com 22-Jun-2000 by Konstantin Vasserman
	ADO Recordset Paging in ASP
	 
	Konstantin Vasserman
	 
	How to display multiple pages of records in ASP
	
Top Tips: Internet Interfacing [Article, Visual Basic] visualbasic.about.com 22-Jun-2000
	22-Jun-2000
	 
	22-Jun-2000
	  
	Top Tips: Internet Interfacing
	 
	Have you ever wanted to create an application that takes advantage of 
the power of the internet? Your Visual Basic Guide introduces you to three top 
tips that will make it easy to web enable your program.
	
CInstanceChecker .... Detects and switches to previous instance of an application [Memory-Mapped File, Previous Instance, Visual C++, MFC Class] www.naughter.com 21-Jun-2000 by P J Naughter
This class internally uses a memory mapped file (MMF) into which the handle of 
the main window of your application is stuffed. When a second instance of your 
app is run, it detects that the memory mapped file exists, gets the window 
handle of the first instance from the MMF and reactivates it.
basRegistration .... How to register any ActiveX DLL or OCX using only API calls and code. [ActiveX Control, ActiveX DLL, CreateThread(), ExitThread(), FreeLibrary(), GetExitCodeThread(), GetProcAddress(), LoadLibrary(), Registry, WaitForSingleObject(), Visual Basic, VB Code Module] www.codeoftheweek.com 21-Jun-2000, no. 124 by Glenn Swonk
Requirements

Visual Basic 4.0 32-bit or higher.

In this Issue

In this issue we discuss how to register any ActiveX DLL or OCX
using only API calls and code.

basRegistration

This module makes it easy to register any 32-bit ActiveX
component on-the-fly from your Visual Basic program.  This is
useful for writing setup utilities and more reliable applications
that do not crash if a single file is not registered correctly.
See the sample for a good use of these routines.  All the fun work
is done with several API calls.

Properties

Public Enum eRegStatus

This is one of four possible values: statSuccess,
statCouldNotLoadInMemorySpace, statInvalidActiveXComponent,
statRegistrationFailed.  If the RegisterComponent or
UnregisterComponent returns statSuccess then everything worked
fine.  statCouldNotLoadInMemorySpace usually means the ActiveX
file you are trying to register can not be found.



Functions

Public Function RegisterComponent(sFilename As String) As eRegStatus

Call this with sFilename pointing to the fully-qualified path and
filename of an ActiveX control to register.  The return value will
be one of the values discussed in eRegStatus.


Public Function UnregisterComponent(sFilename As String) As eRegStatus

Call this with sFilename pointing to the fully-qualified path and
filename of an ActiveX control to unregister.  The return value
will be one of the values discussed in eRegStatus.



Sample Usage

This sample shows how to use the RegisterComponent routine in
order to more intelligently handle problems loading OCX and DLL
files.  The sample tries to load a form and if an error occurs it
first assumes there was a problem loading the control(s) that it
depends on.  You can add additional registrations and you might
need to be smarter about how you find the files to register.  This
is beyond the scope of this issue.

Public Sub Main()
    Dim frm As Object
    
    On Error Resume Next
    Set frm = New Form1
    frm.Show vbModal
    If E ... (cont.)
OOP and UML [C++, MFC, STL, Article, Visual C++] www.codeproject.com 21-Jun-2000 by Alex Marbus
	OOP and UML
	 
	Alex Marbus
	 
	An introduction to modelling OOP design concepts with UML
	
Using the List Control [List Control, Article, Visual C++] www.codeproject.com 21-Jun-2000 by Matt Weagle
	Using the List Control
	 
	Matt Weagle
	 
	Everything you need to know about using the standard list control in 
your applications
	
Structure Storage: A COM way to read/write Persistent Data (using: Visual C++ 6.0) [Structure Storage, COM, Persistent Data, Article, Visual C++] www.mindcracker.com 21-Jun-2000 by Mahesh Chand
	Structure Storage: A COM way to read/write Persistent Data
	 
	Mahesh Chand
	 
	21-Jun-2000
	 
	21-Jun-2000
	 
	In persistent storage, normally files are stored in the form of bytes. 
A file is treated as a raw sequence of bytes. Entire file is stored in the 
blocks on the disk. These blocks are scattered on the disk. When you read this 
file, file system manages its pointers and return you a sequence of bytes.
	 
	COM follows a different approach to store a file and its data on the 
persistent storage, called structured storage. Structure storage provides a way 
by defining how to treat a file as a structured collection of objects. These 
objects are storages and streams. A storage object is kind of a directory and 
it can contain other storage objects and stream objects. You can think a stream 
object as a file. Like a file, a stream contains data stored as a consecutive 
sequence of bytes. A compound file is a combination of these two objects. COM 
provides two interface to access this compound file. IStorage and IStream.
	 
	Structured storage. Why?? Ok, suppose you have a compound file which 
has some text, some images and other data. Now you want to add one more object 
to a file. In traditional approach, when you save the file, file system rewrite 
the entire data. But structured storage approach eliminates this rewriting 
process and increases the read/write performance.. The new data is written to 
the next available location in permanent storage, and the storage object 
updates the table of pointers it maintains to track the locations of its 
storage objects and stream objects. Here are some other benefits:
	 
	Structured storage approach provides you control over separate objects. 
You can read/write separate objects instead of entire compound file.
	 
	More than one user can concurrently read/write same file.
	 
	Compound file: A compound file is file which contains different types 
of data saved in a structured format. A word file containing excel sheet and 
cha ... (cont.)
Useful Reference Books [Project, Article, Visual C++] www.codeproject.com 20-Jun-2000 by Chris Maunder
	Useful Reference Books
	 
	Chris Maunder
	 
	A list of popular reference books sent in by the readers of CodeProject
	
An Adaptable Property List Control [List Control, Article, Visual C++] www.codeproject.com 20-Jun-2000 by Stefan Belopotocan
	An Adaptable Property List Control
	 
	Stefan Belopotocan
	 
	An object properties list control than can change based on the objects 
state.
	
Easy Navigation Through an Editable List View [List Control, Article, Visual C++] www.codeproject.com 20-Jun-2000 by Lee Nowotny
	Easy Navigation Through an Editable List View
	 
	Lee Nowotny
	 
	This article shows you how you can navigate through a multi-column, 
editable list view
	
An Improved Analog Meter Control [Control, Article, Visual C++] www.codeproject.com 20-Jun-2000 by Mark C Malburg
	An Improved Analog Meter Control
	 
	Mark C Malburg
	 
	An Analog Meter Control for displaying real-time data
	
Are you Cool? [Article, Delphi] delphi.about.com 20-Jun-2000
	20-Jun-2000
	 
	20-Jun-2000
	 
	Are you Cool?
	 
	Make your application user interface cool with Delphi's TCoolBar 
component. It's like a toolbar, except that you can place *anything* you want 
on it.
	
Prevent Checkbox Changes (using: Visual Basic 6.0) [ListBox Control, Visual Basic, Tip] www.devx.com 19-Jun-2000
Prevent Checkbox Changes 
  You'll often want to display a checkbox-style listbox to show users the 
values they have selected in an underlying database. However, you don't want to 
allow users to change the selections-that is, to change which boxes they 
checked. You can't disable the listbox because that stops the user from 
scrolling the list to see which items they checked. You can't use Locked, 
because the listbox doesn't have a Locked property. 
Here's one solution: Paint a Command button with the caption "Click to toggle 
enabled property" and a listbox on a form, then change the listbox style to 
1-Checkbox. Add this code: 

Option Explicit

Dim mbDisabled As Boolean

Private Sub Command1_Click()
	mbDisabled = Not mbDisabled
End Sub

Private Sub List1_ItemCheck(Item As Integer)
	If mbDisabled Then
		List1.Selected(Item) = Not List1.Selected(Item)
	End If
End Sub

When mbDisabled is set to True, the changes made by the user to the listbox 
selections are immediately reversed. It will appear as if the selections 
haven't changed at all, and the list is still scrollable.  
Creating and Destroying C++ Objects [Article, Visual C++] cplus.about.com 19-Jun-2000
	19-Jun-2000
	 
	19-Jun-2000
	  
	Creating and Destroying C++ Objects
	 
	A tutorial on the basics of Object-Oriented Programming
	
Creating a console for your MFC app's debug output [Debugging, MFC, Article, Visual C++] www.codeproject.com 18-Jun-2000 by Matthias Steinbart
	Creating a console for your MFC app's debug output
	 
	Matthias Steinbart
	 
	How to send debugging output to a console in a MFC application
	
CTracerST v1.0 [Debugging, Trace, Article, Visual C++] www.codeproject.com 18-Jun-2000 by Davide Calabro
	CTracerST v1.0
	 
	Davide Calabro
	 
	A flexible Trace class for consistent application debug traces.
	
MB TipOfTheDay Control [Control, Article, Visual Basic] www.vb2themax.com 17-Jun-2000 by Marco Bellinaso
	MB TipOfTheDay Control
	  
	17-Jun-2000
	 
	17-Jun-2000
	 
	Marco Bellinaso
	 
	Many commercial programs have a Tip of the Day dialog, that shows a tip 
or trick whenever the application starts. With the MB TipOfTheDay Control you 
can add this nice feature to your apps without writing a single line of code. 
The tips are contained into a INI file, and the control uses the same file to 
save the index of the current tip and other informations. (Nothing is written 
in the registry.) The dialog is completely customizable in its size, colors, 
fonts, the presence of a Previous button in addition to the standard Next one, 
and the caption of each control, so localizing the dialog is a breeze.
	
Adding a search facility to your website [Active Server Pages, Article, Visual C++] www.codeproject.com 16-Jun-2000 by Chris Maunder
	Adding a search facility to your website
	 
	Chris Maunder
	 
	Using the Microsoft Index Server to enable your readers to search your 
site
	
Keyword highlighting in ASP [Active Server Pages, ASP, Article, Visual C++] www.codeproject.com 16-Jun-2000 by Konstantin Vasserman
	Keyword highlighting in ASP
	 
	Konstantin Vasserman
	 
	A simple function to highlight keywords in ASP
	
Getting started with Borland C++ 5.5 [C++, MFC, STL, Article, Visual C++] www.codeproject.com 15-Jun-2000 by Leon Matthews
	Getting started with Borland C++ 5.5
	 
	Leon Matthews
	 
	In mid-February 2000 the people responsible for Borland's C++ products 
made the core of their product line available as a free download.
	
Creating your first Windows application [Dialog, Windows Programming, SDI, MFC, Document/View, Article, Visual C++] www.codeproject.com 15-Jun-2000 by Daniel Kopitchinski
	Creating your first Windows application
	 
	Daniel Kopitchinski
	 
	A brief step-by-step tutorial that demonstrates creating an SDI based 
application that does not use the MFC Document/View architecture.
	
A simple prototype for demonstration of Voice Communication via Network/Internet [Internet, Network, Article, Visual C++] www.codeproject.com 15-Jun-2000 by Zhaohui Xing
	A simple prototype for demonstration of Voice Communication via 
Network/Internet
	 
	Zhaohui Xing
	 
	Voice communication
	
HTTP Tunneling [Internet, Network, Article, Visual C++] www.codeproject.com 15-Jun-2000 by Alex Turc
	HTTP Tunneling
	 
	Alex Turc
	 
	This article describes how to open arbitrary TCP connections through 
proxy servers
	
Get the latest version of the Windows Common Controls library [Control, Common Control, Article, Visual C++] www.codeproject.com 15-Jun-2000 by Ravi Bhavnani
	Get the latest version of the Windows Common Controls library
	 
	Ravi Bhavnani
	 
	No more worrying about which version of the library your clients 
machine has
	
Teach Yourself SQL [Database, SQL, Book] Purchased 14-Jun-2000, $19.95

Programming the Perl DBI [Database, Perl, Book] Purchased 14-Jun-2000, $51.95

MySql & mSQL [Database, Perl, SQL, Web, Book] Purchased 14-Jun-2000, $51.95

Property List Box [Article, Visual C++] www.earthweb.com 14-Jun-2000 by Noel Ramathal
	Property List Box
	 
	Noel Ramathal
	 
	14-Jun-2000
	 
	14-Jun-2000
	 
	MFC CListbox-derived class that enables you to create a VB-like 
Property Listbox
	
Another Way to Drag a Window [Article, Delphi] delphi.about.com 13-Jun-2000
	13-Jun-2000
	 
	13-Jun-2000
	 
	Another Way to Drag a Window
	 
	No title bar! How can we drag such a window? It's easy and fun: let's 
make a Delphi form move by clicking (and dragging) in it's client area.
	
Audio Mixer Functions Demo [Multimedia, Update, Article, Visual C++] www.codeguru.com 12-Jun-2000 by Chensu
	Audio Mixer Functions Demo
	 
	Chensu
	 
	Several demo applications that illustrate how to use the Audio Mixer 
functions in your own applications
	
Property Listbox [Listbox, Article, Visual C++] www.codeguru.com 12-Jun-2000 by Noel Ramathal
	Property Listbox
	 
	Noel Ramathal
	 
	MFC CListbox-derived class that enables you to create a VB-like 
Property Listbox
	
Property List Box [Article, Visual C++] www.earthweb.com 12-Jun-2000 by Noel Ramathal
	Property List Box
	 
	Noel Ramathal
	 
	12-Jun-2000
	 
	12-Jun-2000
	 
	MFC CListbox-derived class that enables you to create a VB-like 
Property Listbox
	
Pointers and Memory [Article, Visual C++] cplus.about.com 11-Jun-2000
	11-Jun-2000
	 
	11-Jun-2000
	  
	Pointers and Memory
	 
	Debugging Issues with pointers and memory
	
Debugging C++ [C++, Debugging, Visual C++, Book] Purchased 08-Jun-2000, $51.16
with 20% off
Nullsoft Winamp Plugin With Bitmapped UI, Docking and Restrictive Resizing [Dialog, Windows Programming, Bitmap, Article, Visual C++] www.codeproject.com 10-Jun-2000 by James Spibey
	Nullsoft Winamp Plugin With Bitmapped UI, Docking and Restrictive 
Resizing
	 
	James Spibey
	 
	An article discussing a Plugin for Nullsoft Winamp which looks and 
behaves like the Winamp UI.
	
Pluggable Event Handler [Control, Event, Article, Visual C++] www.codeproject.com 10-Jun-2000 by William E Kempf
	Pluggable Event Handler
	 
	William E Kempf
	 
	A plug in class that allows you to intercept and handle messages for 
any window class
	
AVE Code Find Add-in [Add-in, IDE, Article, Visual Basic] www.vb2themax.com 10-Jun-2000 by Jaroslaw Zwierz
	AVE Code Find Add-in
	  
	10-Jun-2000
	 
	10-Jun-2000
	 
	Jaroslaw Zwierz
	 
	This add-in augments the VB IDE with the capability to search a string 
or a pattern across all the modules of all the projects loaded in the 
environment. Better yet, all the matches are displayed in a non-modal, 
hierarchical treeview control, so you can move to each occurrence by simply 
double-clicking on it. All the usual search options are supported, included 
search for whole words and for a regular expression. All the recent searches 
are kept in an history list, and you can dock the window as you would do for 
any regular IDE window. This add-in comes with fully commented source code!
	 
	Visit the author's web site at www.ave.com.pl
	
Windows Message Handling, Part 3 [Dialog, Windows Programming, Article, Visual C++] www.codeproject.com 09-Jun-2000 by Daniel Kopitchinski
	Windows Message Handling, Part 3
	 
	Daniel Kopitchinski
	 
	Handling messages in SDK programs
	
A Utility to Clean Up Compiler Temp Files [Tip, File, Shell Extension, Article, Visual C++] www.codeproject.com 09-Jun-2000 by Michael Dunn
	A Utility to Clean Up Compiler Temp Files
	 
	Michael Dunn
	 
	A Shell Extension that deletes compiler temp and intermediate files.
	
Redirect [ATL, stdout, stdin, Article, Visual C++] www.codeproject.com 08-Jun-2000 by Franky Braem
	Redirect
	 
	Franky Braem
	 
	An ATL-control for redirecting stdout/stdin
	
CIniEx: Class with Extended ini files support [C++, MFC, STL, Memory, Article, Visual C++] www.codeproject.com 08-Jun-2000 by Oscar Kogosov
	CIniEx: Class with Extended ini files support
	 
	Oscar Kogosov
	 
	Class CIniEx carries out extended set of ini-files functions in Memory
	
Windows Message Handling, Part 1 [Dialog, Windows Programming, Article, Visual C++] www.codeproject.com 08-Jun-2000 by Daniel Kopitchinski
	Windows Message Handling, Part 1
	 
	Daniel Kopitchinski
	 
	An introduction to basic Windows messages such as WM_SIZE and WM_CLOSE, 
and how to add your own handlers
	
Windows Message Handling, Part 2 [Dialog, Windows Programming, Article, Visual C++] www.codeproject.com 08-Jun-2000 by Daniel Kopitchinski
	Windows Message Handling, Part 2
	 
	Daniel Kopitchinski
	 
	Message Maps, User defined messages and Registered Messages
	
Windows Message Handling, Part 4 [Dialog, Windows Programming, MFC, Article, Visual C++] www.codeproject.com 08-Jun-2000 by Daniel Kopitchinski
	Windows Message Handling, Part 4
	 
	Daniel Kopitchinski
	 
	Reflected Messages, MFC and SDK Subclassing
	
Gradient Progress Control [Control, Progress Control, Article, Visual C++] www.codeproject.com 08-Jun-2000 by Matt Weagle
	Gradient Progress Control
	 
	Matt Weagle
	 
	Subclasses the standard CProgressCtrl to allow for gradient fills. 
Supports vertical progress controls as well.
	
SOAP [SOAP, XML, Article, Visual C++] www.codeproject.com 08-Jun-2000 by Jeremiah Talkar
	SOAP
	 
	Jeremiah Talkar
	 
	An Introduction to SOAP
	
Reduce the Size of Your Final EXE File [Tip, File, Article, Visual C++] www.codeproject.com 08-Jun-2000 by Rehan Nadeem
	Reduce the Size of Your Final EXE File
	 
	Rehan Nadeem
	 
	This article describes ways to reduce the final size of your 
applucation's EXE file.
	
OptimizeHTML: A tool to optimize HTML files [Tool, HTML, Article, Visual C++] www.codeproject.com 08-Jun-2000 by Paolo Messina
	OptimizeHTML: A tool to optimize HTML files
	 
	Paolo Messina
	 
	A simple script to reduce the size of a HTML source
	
UnPatcher: a COM object for patching files [Tool, COM, Article, Visual C++] www.codeproject.com 08-Jun-2000 by Alessandro Vergani
	UnPatcher: a COM object for patching files
	 
	Alessandro Vergani
	 
	An article on patching files.
	
Enable an MFC ActiveX Control to Self-Register [COM, DCOM, MFC, Article, Visual C++] www.codeproject.com 07-Jun-2000 by Wenfei Wu
	Enable an MFC ActiveX Control to Self-Register
	 
	Wenfei Wu
	 
	A simple method that enables your MFC ActiveX Control to be 
self-registering
	
The Grid Control (using: Visual C++ 6.0) [Project, Grid Control, MFC, ATL, Article, Visual C++] www.codeproject.com 06-Jun-2000 by Chris Maunder, Ken Bertelson, Mario Zucca, Fred Ackers
	The Grid Control
	 
	Chris Maunder, Ken Bertelson, Mario Zucca, Fred Ackers
	 
	The grid is a fully featured control for displaying tabular data. There 
are MFC and ATL versions that run on everything from CE to Windows 2000
	
The Complete Idiot's Guide to Writing Shell Extensions, Part I [Shell Programming, Shell Extension, Article, Visual C++] www.codeproject.com 06-Jun-2000 by Michael Dunn
	The Complete Idiot's Guide to Writing Shell Extensions, Part I
	 
	Michael Dunn
	 
	A step-by-step tutorial on writing shell extensions
	
The Complete Idiot's Guide to Writing Shell Extensions, Part II [Shell Programming, Shell Extension, Article, Visual C++] www.codeproject.com 06-Jun-2000 by Michael Dunn
	The Complete Idiot's Guide to Writing Shell Extensions, Part II
	 
	Michael Dunn
	 
	A tutorial on writing a shell extension that operates on multiple files 
at once.
	
The Complete Idiot's Guide to Writing Shell Extensions, Part III [Shell Programming, Shell Extension, Article, Visual C++] www.codeproject.com 06-Jun-2000 by Michael Dunn
	The Complete Idiot's Guide to Writing Shell Extensions, Part III
	 
	Michael Dunn
	 
	A tutorial on writing a shell extension that shows pop-up info for 
files.
	
The Complete Idiot's Guide to Writing Shell Extensions, Part IV [Shell Programming, Shell Extension, Drag and Drop, Article, Visual C++] www.codeproject.com 06-Jun-2000 by Michael Dunn
	The Complete Idiot's Guide to Writing Shell Extensions, Part IV
	 
	Michael Dunn
	 
	A tutorial on writing a shell extension that provides custom Drag and 
Drop functionality.
	
The Complete Idiot's Guide to Writing Shell Extensions, Part V [Shell Programming, Shell Extension, Dialog, Article, Visual C++] www.codeproject.com 06-Jun-2000 by Michael Dunn
	The Complete Idiot's Guide to Writing Shell Extensions, Part V
	 
	Michael Dunn
	 
	A tutorial on writing a shell extension that adds pages to the 
properties Dialog of files.
	
The Complete Idiot's Guide to Writing Shell Extensions, Part VI [Shell Programming, Shell Extension, Menu, Article, Visual C++] www.codeproject.com 06-Jun-2000 by Michael Dunn
	The Complete Idiot's Guide to Writing Shell Extensions, Part VI
	 
	Michael Dunn
	 
	A tutorial on writing a shell extension that can be used on the Send To 
Menu.
	
Birth, Life and Death of a Form [Article, Delphi] delphi.about.com 06-Jun-2000
	06-Jun-2000
	 
	06-Jun-2000
	 
	Birth, Life and Death of a Form
	 
	Delphi For Beginners: Examining the life cycle of a Form - the central 
element of development in Delphi. See what's happening behind events OnCreate, 
OnActivate, OnShow, OnClose...
	
Programming Industrial Strength Windows [C++, Windows Programming, Book] Purchased 02-Jun-2000, $69.95

Standard Template Library [Article, Visual C++] cplus.about.com 05-Jun-2000
	05-Jun-2000
	 
	05-Jun-2000
	  
	Standard Template Library
	 
	Learn about STL or the Standard Template Library
	
A handy keyobard shortcut for "Double Click" on VC6 IDE [Macro, Add-in, Article, Visual C++] www.codeproject.com 04-Jun-2000 by Alberto Gattegno
	A handy keyobard shortcut for "Double Click" on VC6 IDE
	 
	Alberto Gattegno
	 
	Mark a word in VC6 without leaving the keyboard to double click with 
the mouse.
	
Adding Hyperlink support to the MFC Grid Control [Control, MFC, Grid Control, Article, Visual C++] www.codeproject.com 04-Jun-2000 by Fred Ackers, Chris Maunder
	Adding Hyperlink support to the MFC Grid Control
	 
	Fred Ackers and Chris Maunder
	 
	A new class that adds hyperlink support to the MFC Grid Control
	
Printing and Print Preview OpenGL with MFC [OpenGL, Print Preview, MFC, Article, Visual C++] www.codeproject.com 04-Jun-2000 by Wenfei Wu
	Printing and Print Preview OpenGL with MFC
	 
	Wenfei Wu
	 
	Using DIB section to print OpenGL with good resolution.
	
Text Only Status Bar [Status Bar, Article, Visual C++] www.codeproject.com 04-Jun-2000 by Farhan Noor Qureshi
	Text Only Status Bar
	 
	Farhan Noor Qureshi
	 
	An easy to use and implement Text Only Status Bar with Tool tip text 
extracted from the status bar panes.
	
A Color Picker For Your Desktop or Internet Explorer Window [Tool, Color, Explorer, Internet Explorer, Article, Visual C++] www.codeproject.com 04-Jun-2000 by Erik Thompson
	A Color Picker For Your Desktop or Internet Explorer Window
	 
	Erik Thompson
	 
	A Color Picker that sits in Internet Explorer or on the Desktop, 
Requires IE4+
	
VCMake Script [Visual Basic, VBScript, VBA, Visual Basic, Article, Visual C++] www.codeproject.com 04-Jun-2000 by Kinook Software
	VCMake Script
	 
	Kinook Software
	 
	Script for automating Visual C++ builds
	
Changing your Monitor's refresh rate [Win32, SDK Programming, Monitor, Article, Visual C++] www.codeproject.com 04-Jun-2000 by Dan Pilat
	Changing your Monitor's refresh rate
	 
	Dan Pilat
	 
	This article will show you how to change your monitor's refresh rate to 
a value not available from control panel.
	
CWBButton: Resizable Bitmap Button [Button Control, Bitmap, Article, Visual C++] www.codeproject.com 03-Jun-2000 by Shinya Miyaoto
	CWBButton: Resizable Bitmap Button
	 
	Shinya Miyaoto
	 
	CWBButton is a resizable bitmap button like GTK+ or Window Blinds.
	
Dynamic Open Hash Table (DOHT) using CPtrList class [C++, MFC, STL, Table, Article, Visual C++] www.codeproject.com 03-Jun-2000 by Arash Afifi Sabet
	Dynamic Open Hash Table (DOHT) using CPtrList class
	 
	Arash Afifi Sabet
	 
	Making assorted hash table of strings and/or other data types.
	
Handle Application Crashes Better [C++, MFC, STL, Article, Visual C++] www.codeproject.com 03-Jun-2000 by Shane Hyde
	Handle Application Crashes Better
	 
	Shane Hyde
	 
	A method of getting more details about application crashes.
	
Time is the Simplest Thing... [System, Time, Article, Visual C++] www.codeproject.com 03-Jun-2000 by Joseph M Newcomer
	Time is the Simplest Thing...
	 
	Joseph M Newcomer
	 
	Explains misconceptions about timing in Windows.
	
MB Tray Control [Tray, Control, System Tray, Article, Visual Basic] www.vb2themax.com 03-Jun-2000 by Marco Bellinaso
	MB Tray Control
	  
	3-Jun-2000
	 
	3-Jun-2000
	 
	Marco Bellinaso
	 
	This control lets you place an icon in the System Tray area and 
associate it to your application. The icon can be static or animated, if you 
specify a series of frames. The control has a ToolTip property and you can also 
flash the icon with a used defined speed. The MB Tray Control exposes all the 
standard mouse events for displaying a menu or taking a default action when the 
user click or double click the icon in the system tray.
	
WTL Documented [Windows Template Library, WTL, Article, Visual C++] www.codeproject.com 02-Jun-2000 by Ben Burnett
	WTL Documented
	 
	Ben Burnett
	 
	Beginning Documentation on WTL
	
CreateAssociation .... How to associate a Visual Basic program application extension in the registry [File Association, Registry, Visual Basic, VB Code Module] www.vbnet.com 01-Jun-2000 by Paul Clement
An oft-asked newsgroup question is how to associate a Visual Basic program 
application extension in the registry. Thanks to an newsgroup example provided 
by Paul Clement, this marks the first in the registry series of VBnet code 
examples.
 

The illustrations show the two registry keys that need to be created and filled 
in order to have a given file extension associated with your project.  The 
actual routine to create the association is only around 10 lines .. most of the 
code below is comments. The first step is to create the extension identifier 
(in this code example the extension '.xxx', and add to it a pointer to the file 
type.  Next, you create the file type item itself, and under it add the desired 
shell commands to execute for different actions (open, print, etc).

The code creates the MyApp.Document type, associates it with the extension 
.xxx, and adds an Open command to the shell section. Once you've run the demo 
code here, create or save a text file with the extension .xxx, or use the test 
file included in this compiled VB5 test app (6k) to test the passing of the 
associated .xxx file via the command line.
 

 
Kylix: The Real Lowdown [Kylix, Linux, Article, Delphi] Delphi Developer 01-Jun-2000, vol. 6, no. 6 by Jeroen Pluimers
	Kylix: The Real Lowdown
	 
	Jeroen Pluimers
	 
	Kylix is the Borland/Inprise port of Delphi, C++ Builder, the IDE, and 
component library to Linux. It's one of the most exciting things to happen in 
the Delphi world in a long time. In our continuing effort to keep you abreast 
of every detail, Jeroen Pluimers walks you through some of the most exciting 
features of this new environment.
	
Displaying Properties [Property Editor, Object Inspector, Article, Delphi] Delphi Developer 01-Jun-2000, vol. 6, no. 6 by Keith Wood
	Displaying Properties
	 
	Keith Wood
	 
	One of the new features of Delphi 5 is the ability to add extensions to 
the Property Editor classes to allow for graphical displays within the Object 
Inspector. In this article, you'll discover how this can be implemented by 
building property editors to jazz up your Font and Boolean properties.
	
Reviewing Database Design Studio [Database Design Studio, Database Design, Article, Delphi] Delphi Developer 01-Jun-2000, vol. 6, no. 6 by Kevin Collins
	Reviewing Database Design Studio
	 
	Kevin Collins
	 
	When you begin a new application, one of the first tasks is the 
Database Design: deciding which fields to store, which relationships to use, 
which data would be redundant, which constraints you need, and so on. This task 
can be quite tedious, and it's easy to overlook basic functionality provided by 
the DBMS, such as foreign key constraints and cascade deletions. In this 
article, Kevin Collins discusses a great tool to ease this process named 
Database Design Studio, which is now available from Chilli Source 
(www.ChilliSource.com).
	
Checking on NT Services (using: Windows NT 4.0, Delphi 5.0) [Services, Windows NT, Article, Delphi, TListView] Delphi Developer 01-Jun-2000, vol. 6, no. 6 by Mark Meyer
	Checking on NT Services
	 
	Mark Meyer
	 Is there a way to see if a certain service was installed in Windows 
NT? And if so, is there a way to ascertain the status of that service? For 
example, you might want to make sure that a service installed by Microsoft SQL 
Server 7 is running. Mark Meyer shows you how.

Good example of a simple TListView (in report view) to display the services, 
long names and statuses.
Get the Cursor's Line Number in a TMemo [Cursor, TMemo, Article, Delphi] Delphi Developer 01-Jun-2000, vol. 6, no. 6 by Narasim Kasaru
	Get the Cursor's Line Number in a TMemo
	 
	Narasim Kasaru
	
Extending Explorer Folder Views by Customizing Hypertext Templates [Explorer, Folder, HTML, ActiveX Control, Shell, Shell Extension, Visual C++, Windows NT, Article] MSDN Magazine 01-Jun-2000, vol. 15, no. 6 by Dino Esposito
	Extending Explorer Folder Views by Customizing Hypertext Templates
	 
	This article shows you how the Explorer Web view works and how to build 
your own custom templates for it. You’ll see how to add a command prompt and 
task buttons to a new folder view using HTML, script, and ActiveX Controls. The 
Shell object model and thumbnail Shell Extensions are also examined, then used 
to build a simple icon viewer for Explorer.
	 
	Dino Esposito
	
Putting a Secure Front End on Your COM+ Distributed Applications [COM+, Distributed Application, Digital Certificate, Key Encryption, Secure Sockets Layer, Web Certificate, Internet Information Server, IIS, ISAPI, Windows NT, Article] MSDN Magazine 01-Jun-2000, vol. 15, no. 6 by Keith Brown
	Putting a Secure Front End on Your COM+ Distributed Applications
	 
	This article covers the options, from Digital Certificates to public 
and private Key Encryption to Secure Sockets Layer and Web Certificates. The 
discussion covers the installation of certificates in Microsoft Internet 
Information Services along with other options specific to IIS.
	 
	Keith Brown
	
Send Microsoft Exchange Appointment Reminders to Your Pager Using Collaboration Data Objects [Exchange, Pager, Collaboration Data Object, CDO, Visual Basic, Article] MSDN Magazine 01-Jun-2000, vol. 15, no. 6 by Sean McCormick
	Send Microsoft Exchange Appointment Reminders to Your Pager Using 
Collaboration Data Objects
	 
	This article explains how CDO enables you to access Exchange services, 
then walks you through a sample application that reads calendar events from an 
Exchange server and sends pager reminders to your users.
	 
	Sean McCormick
	
Wireless Internet Database Connectivity with ASP, XML, and SQL Server [Wireless, Internet, Database Connectivity, ASP, XML, SQL Server, Visual Basic, Article] MSDN Magazine 01-Jun-2000, vol. 15, no. 6 by Srdjan Vujosevic, Robert Laberge
	Wireless Internet Database Connectivity with ASP, XML, and SQL Server
	 
	This article outlines the services and equipment currently available to 
support wireless Web access. A sample wireless-accessible Web site that 
dynamically draws data from a SQL Server database back end in real time is 
created using tools such as ASP and XML.
	 
	Srdjan Vujosevic
	 and 
	Robert Laberge
	
Convert Your Microsoft Access-based Application to Take Advantage of SQL Server 7.0 [Jet, Access, Stored Procedure, Visual Basic, SQL Server, Article] MSDN Magazine 01-Jun-2000, vol. 15, no. 6 by Michael McManus
	Convert Your Microsoft Access-based Application to Take Advantage of 
SQL Server 7.0
	 
	Using some concrete code examples, this article takes you step by step 
through converting the native Jet queries in your Access application into 
Stored Procedures and pass-through queries that SQL Server can use. You’ll also 
learn how to pass on parameters when your client-server app calls these SQL 
Server stored procedures and queries.
	 
	Michael McManus
	
Switch focus between frames [Frame, HTML, DHTML, Internet Explorer, Article] MSDN Magazine 01-Jun-2000, vol. 15, no. 6 by Robert Hess
	Switch focus between frames
	 
	Robert Hess
	
Connect a Web page to a Database [Database, VBScript, Article] MSDN Magazine 01-Jun-2000, vol. 15, no. 6 by Robert Hess
	Connect a Web page to a Database
	 
	Robert Hess
	
Creating and optimizing performance for XML document/view Web apps [XML, HTML, DHTML, Internet Explorer, Article] MSDN Magazine 01-Jun-2000, vol. 15, no. 6 by Dino Esposito
	Creating and optimizing performance for XML document/view Web apps
	 
	Dino Esposito
	
Designing apps using Visual Modeler in Visual Basic [Visual Modeler, Visual Basic, Article] MSDN Magazine 01-Jun-2000, vol. 15, no. 6 by Ken Spencer
	Designing apps using Visual Modeler in Visual Basic
	 
	Ken Spencer
	
Transactional programming design and optimization [Article, Visual C++] MSDN Magazine 01-Jun-2000, vol. 15, no. 6 by Jason Masterman
	Transactional programming design and optimization
	 
	Jason Masterman
	
Creating sophisticated tabbed views with CTabView and the TabDemo app [CTabView Class, MFC, Visual C++, Article] MSDN Magazine 01-Jun-2000, vol. 15, no. 6 by Jeff Prosise
	Creating sophisticated tabbed views with CTabView and the TabDemo app
	 
	Jeff Prosise
	
Tester, take two. TESTREC.EXE updates previous version of Tester utility [Article, Visual C++, Visual Basic] MSDN Magazine 01-Jun-2000, vol. 15, no. 6 by John Robbins
	Tester, take two. TESTREC.EXE updates previous version of Tester utility
	 
	John Robbins
	
Add Scripting to your apps with Microsoft Script Control [Scripting, Microsoft Script Control, Visual C++, Article] MSDN Magazine 01-Jun-2000, vol. 15, no. 6 by George Shepherd
	Add Scripting to your apps with Microsoft Script Control
	 
	George Shepherd
	
Inline Virtual Functions: how does C++ handle them [Inline Virtual Function, C++, Visual C++, Article] MSDN Magazine 01-Jun-2000, vol. 15, no. 6 by Paul DiLascia
	Inline Virtual Functions: how does C++ handle them
	 
	Paul DiLascia
	
DynPrompt sample app: dynmically changing the Tooltip/Statusbar text [Tooltip, Statusbar, Menu, Visual C++, Article] MSDN Magazine 01-Jun-2000, vol. 15, no. 6 by Paul DiLascia
	DynPrompt sample app: dynmically changing the Tooltip/Statusbar text
	 
	Paul DiLascia
	
CTabView .... Creating sophisticated tabbed views with CTabView which is derived from CCtrlView [Article, CCtrlView, Document/View, MFC, MFC Class, Visual C++] MSDN Magazine 01-Jun-2000, vol. 15, no. 6, page 115 by Jeff Prosise
	Creating sophisticated tabbed views with CTabView and the TabDemo app
	 
	Jeff Prosise

Use this class in an MFC doc/view app.

To use CTabView:

Create a standard doc/view app.
Reference the header fie for the class where necessary.
Create a dialog resource for each page.
Add a WM_CREATE handler to your derived class.
Call the AddPage() member function in OnCreate().

	
Helpfile Generation Tool [Help, WinHelp, Windows NT, Article] Windows Developer's Journal 01-Jun-2000, vol. 11, no. 6 by Kurt Jung
	Helpfile Generation Tool
	 
	Kurt Jung
	  
	WinHelp files for applications (and all their associated IDs) can be a 
pain to create and maintain. Here’s an Awk script that eliminates much of the 
tedious detail work.
	
ISAPI Extension Debugging Tool [ISAPI, Debugging, Visual C++, Article] Windows Developer's Journal 01-Jun-2000, vol. 11, no. 6 by Sven B Schreiber
	ISAPI Extension Debugging Tool
	 
	Sven B Schreiber
	  
	An ISAPI extension is a DLL that Microsoft’s server loads and 
communicates with. That can complicate the debugging of these modules. This 
article provides a debugging framework that creates a simplified environment 
for loading and debugging your ISAPI extension DLL.
	
Using RGB Colors with DirectDraw [RGB, DirectDraw, Visual C++, Article] Windows Developer's Journal 01-Jun-2000, vol. 11, no. 6 by Fran Heeran
	Using RGB Colors with DirectDraw
	 
	Fran Heeran
	 
	A reusable function to provide a device-dependent RGB value.
	
Visual Studio Macro for Adding _T() to Strings [Macro, _T, String, Unicode, Visual C++, Article] Windows Developer's Journal 01-Jun-2000, vol. 11, no. 6 by Orin Walker
	Visual Studio Macro for Adding _T() to Strings
	 
	Orin Walker
	 
	Here’s a macro to automate part of the tedious process of converting 
old code to use the Unicode macros.
	
Hardware Profiles for Safe Driver Development [Profile, Driver, Visual C++, Article] Windows Developer's Journal 01-Jun-2000, vol. 11, no. 6 by Louis Joubert
	Hardware Profiles for Safe Driver Development
	 
	Louis Joubert
	 
	An unbootable system is an ever present danger for driver developers, 
but this tip can help you avoid that fate.
	
Retrieving the Pentium III Serial Number [Serial Number, Pentium, Visual C++, Article] Windows Developer's Journal 01-Jun-2000, vol. 11, no. 6 by Chris Branch
	Retrieving the Pentium III Serial Number
	 
	Chris Branch
	 
	A reusable function for obtaining the new Pentium serial number (if 
your processor supports it), using either VC++ or Borland C++.
	
Understanding NT: Right Number of Threads [Thread, Context Switching, Thread Pool, Windows NT, Article] Windows Developer's Journal 01-Jun-2000, vol. 11, no. 6 by Paula Tomlinson
	Understanding NT: Right Number of Threads
	 
	Paula Tomlinson
	  
	Using too many threads for a given problem means you waste time on 
thread Context Switching. NT’s I/O completion ports provided help in keeping 
the 'right' number of threads running, and now Windows 2000 enhances that 
support with Thread Pools.
	
Loading Small Icons from Active Document Servers [Icon, Active Document Server, Visual C++, Article] Windows Developer's Journal 01-Jun-2000, vol. 11, no. 6 by Daniel Pilat
	Loading Small Icons from Active Document Servers
	 
	Daniel Pilat
	 
	How to make a client frame window obtain its icon from the server.
	
Enumerating Shell ID Lists [Enumerating, Shell, Visual C++, Article] Windows Developer's Journal 01-Jun-2000, vol. 11, no. 6 by Daniel Pilat
	Enumerating Shell ID Lists
	 
	Daniel Pilat
	 
	A class for enumerating in the shell’s namespace.
	
Window Animation and Window Positioning [Animation, Positioning, Visual C++, Article] Windows Developer's Journal 01-Jun-2000, vol. 11, no. 6 by Petter Hesselberg
	Window Animation and Window Positioning
	 
	Petter Hesselberg
	  
	One aspect of the user interface you probably don’t think much about is 
window creation windows just appear, right? However, how they appear can give 
the user visual feedback about what caused them to appear, and where they 
appear on the screen can also affect usability. This column looks at window 
animation and window positioning.
	
VC++ 6 just won’t compile the function if it’s defined separately [Bug, Visual C++, Article] Windows Developer's Journal 01-Jun-2000, vol. 11, no. 6 by Ron Burk
	VC++ 6 just won’t compile the function if it’s defined separately
	 
	Ron Burk
	  
	You can define and declare a function at the same time, or declare a 
function and then define it later. Either way should produce the same code, but 
reader Karlton Zeitz demonstrates a case where VC++ 6 just won’t compile the 
function if it’s defined separately.
	
Manage vptr Overload With Tear-Off Interfaces [vptr, Tear-off Interface, Interface, Article, Visual C++] Visual C++ Developers Journal 01-Jun-2000, vol. 3, no. 5 by George Shepherd
	Manage vptr Overload With Tear-Off Interfaces
	 
	George Shepherd
	  
	Sometimes your object has to make a set of objects available—even if 
they aren't used frequently. Learn how to use tear-off interfaces to accomplish 
this.
	
Pragmas, Linker Options [Pragma, Linker Option, Article, Visual C++] Visual C++ Developers Journal 01-Jun-2000, vol. 3, no. 5 by Andy Harding
	Pragmas, Linker Options
	 
	Andy Harding
	 
	Figure out how to debug a Win32 console app, use the comment pragma.
	
Create Your Own ATL Object Wizard [ATL Object Wizard, ATL, Object Wizard, Wizard, Article, Visual C++] Visual C++ Developers Journal 01-Jun-2000, vol. 3, no. 5 by Richard Grimes
	Create Your Own ATL Object Wizard
	 
	Richard Grimes
	  
	By creating your own ATL Object Wizard, you can streamline your 
development efforts and customize objects you use most often.
	
Extract ODBC-Based Data [ODBC, DBMS, Data Extraction, Article, Visual C++] Visual C++ Developers Journal 01-Jun-2000, vol. 3, no. 5 by Tom Creighton
	Extract ODBC-Based Data
	 
	Tom Creighton
	  
	Do you repeatedly move data from one DBMS to another, or pull out data 
for backup? Follow the expert advice of our Black Belt columnist as he 
demonstrates how to build a utility for speedy Data Extraction.
	
Create COM+ Business Objects With ADO Recordsets [COM+, Business Object, ADO, Recordset, Article, Visual C++] Visual C++ Developers Journal 01-Jun-2000, vol. 3, no. 5 by Alan Gordon
	Create COM+ Business Objects With ADO Recordsets
	 
	Alan Gordon
	  
	ADO Recordsets provide a simple object type that holds and manipulates 
tabular or relational data records. Use VC++ to create COM+ objects that use 
ADO Recordsets as input or return values.
	
Monitor System State With SENS [Monitor, SENS, COM+, Event, System Event Notification Service, Article, Visual C++] Visual C++ Developers Journal 01-Jun-2000, vol. 3, no. 5 by Jim Beveridge
	Monitor System State With SENS
	 
	Jim Beveridge
	  
	Want to notify your app of relevant events? Find out what's happening 
on the user's desktop by using COM+ Events to subscribe to the System Event 
Notification Service (SENS).
	
Save Time With Software Patterns [Pattern, Singleton Pattern, Article, Visual C++] Visual C++ Developers Journal 01-Jun-2000, vol. 3, no. 5 by Muaz Niazi
	Save Time With Software Patterns
	 
	Muaz Niazi
	  
	You probably hear the buzzword 'patterns' dart around the 
object-oriented world, but might not know how to put these patterns to 
practical use. Find out how the Singleton Pattern can speed your coding.
	
Working With the STL: STL Containers, Iterators, and Algorithms [STL, Container, Iterator, Algorithm, Article, Visual C++] Visual C++ Developers Journal 01-Jun-2000, vol. 3, no. 5 by Bill Wagner
	Working With the STL: STL Containers, Iterators, and Algorithms
	 
	Bill Wagner
	 
	Continue your Standard Template Library education by learning to use 
STL containers, iterators, and algorithms.
	
A Snowball's Chance for DLL Hell [DLL, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jun-2000, vol. 10, no. 7 by Jim Deutch
	A Snowball's Chance for DLL Hell
	 
	Jim Deutch
	  
	What do you do if your program fails on some users' machines? Learn how 
to troubleshoot and fix DLL incompatibility problems to restore your program to 
working order.
	
Draw Bitmaps on Device Contexts [Bitmap, Device Context, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jun-2000, vol. 10, no. 7 by Karl E Peterson
	Draw Bitmaps on Device Contexts
	 
	Karl E Peterson
	  
	Learn the skill of drawing on memory-based device contexts.
	
Show Oversized Listbox Data [Listbox Control, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jun-2000, vol. 10, no. 7 by Karl E Peterson
	Show Oversized Listbox Data
	 
	Karl E Peterson
	  
	How to show oversized listbox data.
	
Format a Floppy Disk From Code [Format, Floppy Disk, Win32 API, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jun-2000, vol. 10, no. 7 by John M Calvert
	Format a Floppy Disk From Code
	 
	John M Calvert
	  
	Formatting a floppy drive from code should be easy, but it's not. Learn 
how using some Win32 API calls.
	
Build Hierarchical Recordsets Easily [Hierarchical Recordset, ADO, Database, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jun-2000, vol. 10, no. 7 by Brad Freels
	Build Hierarchical Recordsets Easily
	 
	Brad Freels
	  
	Data shaping with VB6 and ADO 2.x is the key to simplifying 
master/detail Database relationships. Use it to improve application performance.
	
Search Tool Add-in To Do Regular Expression Searches [Search, Add-in, Regular Expression, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jun-2000, vol. 10, no. 7 by Tade Oyebode
	Search Tool Add-in To Do Regular Expression Searches
	 
	Tade Oyebode
	  
	VB6 doesn't support searches across project groups, but fortunately you 
can use its extensibility model to make up for this shortcoming. Learn how to 
build a search tool add-in to do regular expression searches.
	
Make the Machine Understand [Interpreter, Compiler, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jun-2000, vol. 10, no. 7 by Dan O'Day
	Make the Machine Understand
	 
	Dan O'Day
	 
	Interpreters and Compilers go about the same job, but in different 
ways. It's all about producing machine-level language.
	
Maintain Null Values [Null Value, Data Integrity, N-tier, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jun-2000, vol. 10, no. 7 by Eric Litwin
	Maintain Null Values
	 
	Eric Litwin
	  
	Ensure Data Integrity in your applications by learning how to maintain 
Null values in all layers of an N-tier application.
	
Develop an Autobuild Process [Article, Visual Basic] Visual Basic Programmer's Journal 01-Jun-2000, vol. 10, no. 7 by Dave Summer
	Develop an Autobuild Process
	 
	Dave Summer
	  
	Take control of your code by implementing an automatic build process.
	
Search With Soundex [Search, Soundex, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jun-2000, vol. 10, no. 7 by Stan Schultes
	Search With Soundex
	 
	Stan Schultes
	  
	Help your users find data in your apps and liberate them from exact 
matches by creating Soundex codes, a sounds-like search tool.
	
Use Design Patterns to Create Objects [Design Pattern, Factory Method, Polymorphic Collection, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jun-2000, vol. 10, no. 7 by William Wen
	Use Design Patterns to Create Objects
	 
	William Wen
	  
	Learn how the Factory Method design pattern helps solve object creation 
issues. Also, learn how to extend this factory method into a Polymorphic 
Collection.
	
Reduce DLL Hell in Windows 2000 [DLL, Windows NT, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jun-2000, vol. 10, no. 7 by Michiel de Bruijn
	Reduce DLL Hell in Windows 2000
	 
	Michiel de Bruijn
	  
	New features in Windows 2000 can reduce DLL Hell versioning problems to 
DLL purgatory. They won't solve every problem - and they might even introduce a 
few new ones - but they're a good start.
	
Access SQL Server Metadata [SQL Server, Metadata, Database, System Table, System Stored Procedure, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jun-2000, vol. 10, no. 7 by Dianne Siebold
	Access SQL Server Metadata
	 
	Dianne Siebold
	  
	Looking for a way to store and access information about your Database 
and database objects? Take advantage of SQL Server's System Tables and System 
Stored Procedures.
	
Create Persistent Objects With XML [Persistent Object, XML, Web, Property Let Procedure, Property Get Procedure, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jun-2000, vol. 10, no. 7 by A Russell Jones
	Create Persistent Objects With XML
	 
	A Russell Jones
	  
	You can persist and create objects for the Web using XML in ways you 
can't with VB. Explore how by creating Property Let and Property Get procedures.
	
Creating Temporary Files Using GetTempFileName (using: Visual Basic 6.0) [File, GetTempFileName(), GetTempPath(), Visual Basic, Tip] www.vbnet.com 01-Jun-2000 by Randy Birch
Creating Temporary Files Using GetTempFileName   
        
Occasions may arise when its advantageous to use temporary files for 
manipulation of data during a program's execution. One method is to create your 
own files in the directory of your choosing; another is to use the built-in 
Windows function GetTempFileName to do the work for you. This page demonstrates 
using this in conjunction with the GetTempPath API to create 
application-specific temporary files in the users Windows\Temp folder. 
On a successful call to GetTempFileName, an empty file is created in the path 
specified. The file is not open, therefore you are free to use either VB's or 
Windows' file manipulation methods against the file. The file is not deleted 
automatically when your app terminates .. the cleanup is left up to you.
 

 BAS Module Code 
  
Add the following code to a BAS module: 

Option Explicit
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Copyright ©1996-2000 VBnet, Randy Birch, All Rights Reserved.
' Some pages may also contain other copyrights by the author.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' You are free to use this code within your own applications,
' but you are expressly forbidden from selling or otherwise 
' distributing this source code without prior written consent.
' This includes both posting free demo projects made from this 
' code as well as reproducing the code in text or html format. 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Public Declare Function GetTempPath _
    Lib "kernel32" Alias "GetTempPathA" _
   (ByVal nBufferLength As Long, _
    ByVal lpBuffer As String) As Long

Public Declare Function GetTempFileName _
    Lib "kernel32" Alias "GetTempFileNameA" _
   (ByVal lpszPath As String, _
    ByVal lpPrefixString As String, _
    ByVal wUnique As Long, _
    ByVal lpTempFileName As String) As Long

Public Const MAX_PATH = 260

'--end block--'
   
 Form Code 
  
Add a list (list1), a ... (cont.)
Palm Conduits: Part I [Palm Conduit, Article, Delphi] Delphi Informant 01-Jun-2000, vol. 6, no. 6 by Ron Loewy
	Palm Conduits: Part I
	 
	Ron Loewy
	 
	Mr Loewy explains Palm applications, the databases they use, and how to 
exchange information between Palm and PC, preparing the ground for the sample 
conduit application presented in Part II.
	
Augmenting a Control [VCL, Article, Delphi] Delphi Informant 01-Jun-2000, vol. 6, no. 6 by Ken Revak
	Augmenting a Control
	 
	Ken Revak
	 
	Mr Revak demonstrates and compares the relative merits of four 
approaches to extending native VCL objects: procedural, Windows message-based, 
introspection, and via Delphi interfaces.
	
Exploiting SQL Server 7 DMO: Part I [Distributed Management Objects, SQL-DMO, Database, SQL Server, Article, Delphi] Delphi Informant 01-Jun-2000, vol. 6, no. 6 by Jason Perry
	Exploiting SQL Server 7 DMO: Part I
	 
	Jason Perry
	 
	Sharing impressive applications, Mr Perry begins a two-part series that 
demonstrates using Microsoft SQL Server 7 Distributed Management Objects 
(SQL-DMO) to develop Database management tools.
	
Manipulating Events [Event, Method, TMethod, Article, Delphi] Delphi Informant 01-Jun-2000, vol. 6, no. 6 by Jeremy Merrill
	Manipulating Events
	 
	Jeremy Merrill
	 
	Manipulating Method properties by typecasting them as TMethod affords 
us with some interesting capabilities, and can provide increased power and 
flexibility to an application, as Mr Merrill explains.
	
Waking from Threadmare [Thread, Article, Delphi] Delphi Informant 01-Jun-2000, vol. 6, no. 6 by Nikolai Sklobovsky
	Waking from Threadmare
	 
	Nikolai Sklobovsky
	 
	Mr Sklobovsky shares a robust, reliable, comprehensive, and relatively 
simple approach to multi-threaded programming. Even veterans of multi-threaded 
development will benefit from his insights.
	
The Self-Organizing Neural Network [Neural Network, Article, Visual C++] C++ Users Journal 01-Jun-2000 by Joey Rogers
	The Self-Organizing Neural Network
	 
	Joey Rogers
	  
	People can learn even when they don’t know what they’re being taught. 
So can neural nets.
	
A Reusable Nonlinear System Solver, Part 1 [Newton-Raphson Method, Article, Visual C++] C++ Users Journal 01-Jun-2000 by Michael L Perry
	A Reusable Nonlinear System Solver, Part 1
	 
	Michael L Perry
	  
	C++ lets you encapsulate the Newton-Raphson Method for solving 
equations without obscuring the underlying physical problem to be solved.
	
Combining Boyer-Moore String Search with Regular Expressions [Boyer-Moore String Search, Regular Expression, String, Article, Visual C++] C++ Users Journal 01-Jun-2000 by David Berry
	Combining Boyer-Moore String Search with Regular Expressions
	 
	David Berry
	  
	Some text searches are fast and some are flexible. This one is both.
	
The Double Metaphone Search Algorithm [Article, Visual C++] C++ Users Journal 01-Jun-2000 by Lawrence Philips
	The Double Metaphone Search Algorithm
	 
	Lawrence Philips
	  
	Computer vision is a broad and deep topic, but computer hearing is no 
breeze either, particularly when trying to recognize surnames.
	
Safe and Economical Reference Counting in C++ [Reference Count, Smart Pointer, Article, Visual C++] C++ Users Journal 01-Jun-2000 by Vladimir Batov
	Safe and Economical Reference Counting in C++
	 
	Vladimir Batov
	  
	Smart Pointers keep getting smarter.
	
Generic Extensions to the STL [STL, Article, Visual C++] C++ Users Journal 01-Jun-2000 by Thomas Becker
	Generic Extensions to the STL
	 
	Thomas Becker
	  
	STL is a pretty complete set of tinker toys, but you can always find a 
few more good ones to add.
	
Java Strings [Java, String, Article, Visual C++] C++ Users Journal 01-Jun-2000 by Chuck Allison
	Chuck Allison
	 
	Java Strings
	 
	Every language lets you manipulate text to some degree. Java is 
stronger in this regard than most.
	
Floating Point Basics [Floating Point, Article, Visual C++] C++ Users Journal 01-Jun-2000 by Pete Becker
	Pete Becker
	 
	Floating Point Basics
	 
	You can’t overcome a fear of floating-point arithmetic - or complacency 
about it - until you understand what’s going on.
	
COM+ Object Pooling [COM, DCOM, Article, Visual C++] www.codeproject.com 01-Jun-2000 by Jeremiah Talkar
	COM+ Object Pooling
	 
	Jeremiah Talkar
	 
	An introduction to the COM+ Object Pooling service
	
Architecting Workflow [Workflow, Article, Lotus Notes] Notes Advisor 01-Jun-2000
Workflow FOUNDATIONS - Lotus Notes & Domino Advisor - June 2000 
	Architecting Workflow
	 
	-N/A
	
Steps to WebSphere Success [WebSphere, Article, Lotus Notes] Notes Advisor 01-Jun-2000
WEBSPHERE - Lotus Notes & Domino Advisor - June 2000 
	Steps to WebSphere Success
	 
	-N/A
	
An Alternative to $$Return [$$Return, Article, Lotus Notes] Notes Advisor 01-Jun-2000
Web Development - Lotus Notes & Domino Advisor - June 2000 
	An Alternative to $$Return
	 
	-N/A
	
Plug and Play Help Desk Solution [Article, Lotus Notes] Notes Advisor 01-Jun-2000
HELP DESK - Lotus Notes & Domino Advisor - June 2000 
	Plug and Play Help Desk Solution
	 
	-N/A
	
CORBA Security Tips [CORBA, Security, Article, Lotus Notes] Notes Advisor 01-Jun-2000
Security - Lotus Notes & Domino Advisor - June 2000 
	CORBA Security Tips
	 
	-N/A
	
Search for a File in a Directory Tree Using the Imagehlp DLL (using: Visual Basic 6.0) [Directory, File, IMAGEHLP.DLL, SearchTreeForFile(), Visual Basic, Tip] www.vb2themax.com 31-May-2000
Search for a File in a Directory Tree Using the Imagehlp DLL
------------------------------------------------
You can search for a file in all the subdirectories of a given drive with VB 
using a recursive routine based on the Dir$ function, the FileSystemObject 
component, or the FindFirstFile/FindNextFile API functions. There is a fourth 
way you might want to try, based on the SearchTreeForFile function embedded in 
the ImageHlp DLL. The great thing about this function is that you don't need 
any recursion:

Private Declare Function SearchTreeForFile Lib "imagehlp.dll" (ByVal sRootPath 
As String, ByVal InputPathName As String, ByVal OutputPathBuffer As String) As 
Boolean

' search a file on directory subtree
'
' returns the complete path+name of the filename
' or a null string if the filename hasn't been found
' only the first occurrence of the file is returned
'
' ROOTDIR can be a drive root dir (e.g. "C:\") or a subdir ("C:\DOCS")

Function SearchFileInDirTree(ByVal rootDir As String, ByVal Filename As String) 
As String
    ' this is the max length for a filename
    Dim buffer As String * 260
    If SearchTreeForFile(rootDir, Filename, buffer) Then
        ' a non-zero return value means success
        SearchFileInDirTree = Left$(buffer, InStr(buffer, vbNullChar) - 1)
    End If
End Function

*Note that when you use the SearchTreeForFile API function, your program must 
wait until the file is found or the entire hard disk has been scanned. For this 
reason, you might want to display a warning to the end user, explaining that 
the search might take a long time. This routine is especially useful to quickly 
scan a smaller directory subtree, rather than an entire drive.
IPCONFIG displays the IP address, subnet mask and default gateway for each adapter bound to TCP/IP. (using: Windows NT 4.0) [IP Address, TCP/IP, IP, IPCONFIG, Windows NT, Tip] www.microsoft.com 31-May-2000
The following information is a sample of the output from the Ipconfig tool: 

   Windows NT IP Configuration

      Host Name . . . . . . . . . : MYPC
      DNS Servers . . . . . . . . :
      Node Type . . . . . . . . . : Mixed
      NetBIOS Scope ID. . . . . . :
      IP Routing Enabled. . . . . : No
      WINS Proxy Enabled. . . . . : No
      NetBIOS Resolution Uses DNS : No

   Ethernet adapter Elnk31:

      Description . . . . . . . . : ELNK3 Ethernet Adapter.
      Physical Address. . . . . . : 00-C0-4F-D7-DB-91
      DHCP Enabled. . . . . . . . : Yes
      IP Address. . . . . . . . . : 100.50.84.54
      Subnet Mask . . . . . . . . : 255.255.248.0
      Default Gateway . . . . . . : 100.50.80.1
      DHCP Server . . . . . . . . : 100.50.40.9
      Primary WINS Server . . . . : 100.50.16.153
      Secondary WINS Server . . . : 100.50.16.155
      Lease Obtained. . . . . . . : Friday, January 10, 1997 7:29:32 AM
      Lease Expires . . . . . . . : Wednesday, January 29, 1997 7:29:32 AM 
How to call the EnumServicesStatus() API on Windows NT 4.0 (SP3) or Windows 2000 from Visual Basic (using: Visual Basic 6.0) [EnumServicesStatus(), Services, Windows NT, Visual Basic, Tip] www.microsoft.com 31-May-2000 by Marshall Brain
This article demonstrates how to call the EnumServicesStatus API on Windows NT 
4.0 (SP3) or Windows 2000 from Visual Basic. The EnumServicesStatus function 
enumerates services in the specified service control manager database. The name 
and status of each service is retrieved. 


Step-by-Step Instructions

1 Create a new Standard EXE project in Visual Basic, Project1. Form1 is created 
by default. 


2 Place two command buttons and two list boxes on Form1 and place the following 
code in Form1's code window:


      Private Sub Command1_Click()
         'Getting only the active services
            GetServiceInfo SERVICE_ACTIVE
      End Sub

      Private Sub Command2_Click()
         'Getting all services registered
            GetServiceInfo SERVICE_ACTIVE Or SERVICE_INACTIVE
      End Sub

      Private Sub Form_Load()
         Command1.Caption = "Active Services"
         Command2.Caption = "All Registered Services"
      End Sub
 
3 Add a standard module (Module1) to Project1 and place the following code in 
Module1.


      '****************** MODULE1 CODE **********************

      'UDTs
      '*******************************************************
      Type SERVICE_STATUS
         dwServiceType As Long
         dwCurrentState As Long
         dwControlsAccepted As Long
         dwWin32ExitCode As Long
         dwServiceSpecificExitCode As Long
         dwCheckPoint As Long
         dwWaitHint As Long
      End Type

      Type ENUM_SERVICE_STATUS
         lpServiceName As Long
         lpDisplayName As Long
         ServiceStatus As SERVICE_STATUS
      End Type
      '*******************************************************

      'Constants
      '*******************************************************
      Public Const ERROR_MORE_DATA = 234
      Public Const SERVICE_ACTIVE = &H1
      Public Const SERVICE_INACTIVE = &H2
      Public Const SC_MANAGER_ENUMERATE_SERVICE = &H4
      Public Const SERVICE_WIN32_OWN_PROCESS As Long = &H10
 ... (cont.)
Thread Synchronization Classes [Thread, Process, Inteprocess Communication, Article, Visual C++] www.codeproject.com 30-May-2000 by Zoran M Todorovic
	Thread Synchronization Classes
	 
	Zoran M Todorovic
	 
	Implements a set of classes for thread synchronization.
	
The Time has Come: Members Area [Article, Delphi] delphi.about.com 30-May-2000
	30-May-2000
	 
	30-May-2000
	 
	The Time has Come: Members Area
	 
	Finally, Delphi Programming site gives You the chance to show the World 
what you have made with Delphi.
	
Using the File System controls [Article, Visual Basic] visualbasic.about.com 29-May-2000
	29-May-2000
	 
	29-May-2000
	  
	Using the File System controls
	 
	Do you want to code your own customised open and save dialog boxes? 
Your Visual Basic Guide shows you how, with help from the VB file system 
controls!
	
basAssociations .... How to retrieve the executable name for any file [Association, FindExecutable(), Visual Basic, VB Code Module] www.codeoftheweek.com 28-May-2000, no. 123
Requirements

Visual Basic 4.0 32-bit or higher.

In this issue we discuss how to retrieve the executable name for
any file.


If you have any questions about using this module, let us know at
questions@codeoftheweek.com


basAssociations

This module makes it easy to get the executable associated with a
particular extension.  This routine is most useful for
applications that have to launch filenames by their extensions.
One great use for this function is to automatically launch a
browser based on a particular HTML file that might exist in your
application.  It could also be used to intelligently use the
existing file viewers/editors already installed on a users machine
(such as looking for the default editor for the DOC extension).


Functions

Public Function FindAssociation(sFilename As String, Optional bWithParams As 
Boolean = False) As String

This routine does all the work of calling the FindExecutable API
call to determine the program/executable associated with the
extension specified in sFilename.  This function requires the file
to exist to determine the executable name.  The bWithParams is an
optional parameter that allows you to control what kind of data
gets returned.  If bWithParams is not specified or False only the
executable path and filename will be returned.  If it is True then
any additional parameters or command line information will be
returned.  Typically the full executable filename along with any
startup parameters and the file to launch will be returned as a
single string.

NOTE: The FindExecutable API call seems to have a problem
returning the full parameters when there is a space (blank
character) in the executable filename.  Use the bWithParams with
caution in this case.

Public Function ReverseInstr(sStringToSearch As String, _
                                sStringToFind As String, _
                                Optional Compare As VbCompareMethod = 
vbBinaryCompare) As Long

See Issue #61 for details -
http://www.codeoftheweek ... (cont.)
DevStudioObjects.dsm .... Take a snapshot of the entire Developer Studio object hierarchy [Developer Studio, Macro, Visual C++, Visual Studio, VC++ Add-in, Visual Studio Macro] www.worldofatl.com 28-May-2000 by Alex Stockton
This file contains a single macro, which takes a snapshot of the entire 
Developer Studio object hierarchy whenever it is run. All the objects and 
properties available to Developer Studio, along with their current values, are 
displayed in a newly created text file. 
DevStudioEvents.dsm .... Simple event handlers for every event available in Developer Studio [Developer Studio, Macro, Visual C++, Visual Studio, VC++ Add-in, Visual Studio Macro] www.worldofatl.com 28-May-2000 by Alex Stockton
This file contains simple event handlers for every event available in Developer 
Studio. Each event handler will display a dialog containing the name of the 
event and the information passed to that event. 
Backup.dsm .... Silently creates a backup of that file in a particular location [Developer Studio, Macro, Visual C++, Visual Studio, VC++ Add-in, Visual Studio Macro] www.worldofatl.com 28-May-2000 by Alex Stockton
This file contains a macro that responds to the BeforeDocumentClose() event 
handler. Whenever you close a file that hasn't been saved, this macro silently 
creates a backup of that file in a particular location. This will prevent you 
from losing work if you're one of those people always pressing the wrong button 
on Save dialogs! ;-) Note that you need to edit the strSavePath constant in 
this file so that it's appropriate for your system. You should also be aware 
that the files that this macro backs up need to be manually deleted when you 
are sure that they are no longer needed
BracesEtc.dsm .... Collection of macros that add pairs of braces, brackets and parentheses then position the insertion point between them [Developer Studio, Macro, Visual C++, Visual Studio, VC++ Add-in, Visual Studio Macro] www.worldofatl.com 28-May-2000 by Alex Stockton
This file contains a collection of macros that add pairs of braces, brackets 
and parentheses then position the insertion point between them. These macros 
are best mapped to the keys corresponding to open brace, bracket and 
parenthesis respectively. This file also contains a macro to trigger Developer 
Studio's built-in SmartFormat method, a useful facility for formatting code 
that is only available via a macro. 
IncludeOnce.dsm .... Adds code to a C++ header file to ensure that it is only included once [Developer Studio, Macro, Visual C++, Visual Studio, VC++ Add-in, Visual Studio Macro] www.worldofatl.com 28-May-2000 by Alex Stockton
The macro in this file adds code to a C++ header file to ensure that it is only 
included once. The macro combines safe use of the #pragma once directive with 
#if !defined() style exclusion to minimize compatibility problems. The 
exclusion #define is based on the name of the file and a UUID to ensure that 
there are no collisions. This macro makes use of the AjsUuid scriptable 
control. 
AddDualInterface.dsm .... Adds the basic IDL code for a new dual interface to the current file at the insertion point, [Developer Studio, Dual Interface, IDL, Macro, UUID, Visual C++, Visual Studio, VC++ Add-in, Visual Studio Macro] www.worldofatl.com 28-May-2000 by Alex Stockton
This macro adds the basic IDL code for a new dual interface to the current file 
at the insertion point, even creating and inserting the UUID for you all in one 
go. All you need do is supply the name of the new interface. This macro makes 
use of the AjsUuid scriptable control. 
AjsUuid Control .... Provides a scriptable means of generating UUIDs [ActiveX Control, ATL, UUID, Visual C++] www.worldofatl.com 28-May-2000 by Alex Stockton
This simple ActiveX control, written using the Active Template Library, 
provides a scriptable means of generating UUIDs. This is useful for any macro 
(or other code) that needs to generate CLSIDs, IIDs or any type of unique 
number. This control is used by the AddDualInterface and IncludeOnce macros 
included in the Macro Pack. To use these macros, you will need to build the 
control from the source code provided. The build process will also register the 
control
LiteTimer Class Module [Timer, Class Module, Article, Visual Basic] www.vb2themax.com 27-May-2000 by Kieron O'Connor
	LiteTimer Class Module
	  
	27-May-2000
	 
	27-May-2000
	 
	Kieron O'Connor
	 
	This handy class module by Kieron O'Connor lets you add a control-less 
timer to your application, without actually using a Timer control. Beside being 
useful in itself, the CLiteTimer class provides a great example of how you can 
correctly implement Windows callback procedures. The class comes with a 
complete demo program that demonstrate that you can create multiple forms with 
many a timer on them.
	
Java to JavaScript Communication [JavaScript, COM, Component, Article, Visual C++] www.codeproject.com 26-May-2000 by Jeremiah Talkar
	Java to JavaScript Communication
	 
	Jeremiah Talkar
	 
	Give Java applets a second chance (as COM style binary Components)
	
Scan and Merge INI Files [Tool, Article, Visual C++] www.codeproject.com 26-May-2000 by Philip McGahan
	Scan and Merge INI Files
	 
	Philip McGahan
	 
	A free tool to merge INI files, check for common INI file mistakes, and 
quickly determine how two INI files differ.
	
Smart Grid [ATL, Article, Visual C++] www.codeproject.com 25-May-2000 by Alex Turc
	Smart Grid
	 
	Alex Turc
	 
	Build a grid using ATL, STL and Win32 API
	
Different Styles of Programming [C++, MFC, STL, Article, Visual C++] www.codeproject.com 25-May-2000 by Alex Marbus
	Different Styles of Programming
	 
	Alex Marbus
	 
	A basic introduction to some different styles of programming
	
BCGControlBar 4.7: MFC extension framework library [Toolbar, Docking Window, MFC, Office, Menu, Article, Visual C++] www.codeproject.com 25-May-2000 by Stas Levin
	BCGControlBar 4.7: MFC extension framework library
	 
	Stas Levin
	 
	The MFC extension framework library which allows you create 
MS-Office-like applications with full toolbars/Menus customization.
	
Creating a Self Extracting Executable [File, Folder, Article, Visual C++] www.codeproject.com 25-May-2000 by James Spibey
	Creating a Self Extracting Executable
	 
	James Spibey
	 
	A class that allows you to create self extracting executables for use 
in distribution or setup programs
	
'Wait while loading' message for Java applets [Java Programming, Internet Explorer, Article, Visual C++] www.codeproject.com 25-May-2000 by Glenn S Peffers
	'Wait while loading' message for Java applets
	 
	Glenn S Peffers
	 
	An article describing JavaScript code that will display a message (i.e. 
Please Wait...) while a Java Applet is loading. This code is designed to work 
in both Internet Explorer and Netscape
	
Business Components Gallery [Project, Component, Article, Visual C++] www.codeproject.com 25-May-2000 by Stas Levin
	Business Components Gallery
	 
	Stas Levin
	 
	Windows GUI Solutions.
	
Window Tabs Add-In For DevStudio [Macro, Add-in, Article, Visual C++] www.codeproject.com 25-May-2000 by Oz Solomonovich
	Window Tabs Add-In For DevStudio
	 
	Oz Solomonovich
	 
	Window and File Management For Visual C++
	
An Introductory STL tutorial [C++, MFC, STL, Article, Visual C++] www.codeproject.com 24-May-2000 by David Hubbard
	An Introductory STL tutorial
	 
	David Hubbard
	 
	An STL starter that introduces the various collection types, strings, 
streams, iterators and methods of STL
	
Add a Help Button to a MessageBox [Dialog, Windows Programming, Article, Visual C++] www.codeproject.com 24-May-2000 by Robert Pittenger
	Add a Help Button to a MessageBox
	 
	Robert Pittenger
	 
	How to add a help button to a MessageBox and associate it with a 
context-sensitive help ID
	
Using dialogs in console apps [Dialog, Windows Programming, Article, Visual C++] www.codeproject.com 24-May-2000 by Joseph M Newcomer
	Using dialogs in console apps
	 
	Joseph M Newcomer
	 
	Learn how to display a message box from a console application.
	
Windows 2000 Style Wizards [Dialog, Windows Programming, Article, Visual C++] www.codeproject.com 24-May-2000 by Robert Pittenger
	Windows 2000 Style Wizards
	 
	Robert Pittenger
	 
	Create Windows 2000 style Wizards with white backgrounds
	
Remote Control PCs [Internet, Network, Article, Visual C++] www.codeproject.com 24-May-2000 by Andy Bantly
	Remote Control PCs
	 
	Andy Bantly
	 
	Two projects that work together to remote control PCs across a LAN
	
Java 'Swing' style Components written in MFC [Control, Component, MFC, Article, Visual C++] www.codeproject.com 24-May-2000 by Abhijit Bhole
	Java 'Swing' style Components written in MFC
	 
	Abhijit Bhole
	 
	A set of MFC classes the duplicate the Java Swing look and feel
	
String Conversions [String, Article, Visual C++] www.codeproject.com 23-May-2000 by Zoran M Todorovic
	String Conversions
	 
	Zoran M Todorovic
	 
	Set of classes enabling UNICODE and ANSI string conversion.
	
TFindFile - Delphi Component [Article, Delphi] delphi.about.com 23-May-2000
	23-May-2000
	 
	23-May-2000
	 
	TFindFile - Delphi Component
	 
	Tired of using FindFirst, Next and Close? Come see how to encapsulate 
all those functions in a single "find-files-recursively" component. It's easy 
to use, free and with code.
	
Error Objectives [Article, Visual Basic] visualbasic.about.com 22-May-2000
	22-May-2000
	 
	22-May-2000
	  
	Error Objectives
	 
	Have you ever wished that you could decipher those pesky Visual Basic 
runtime errors? Now you can, with help from the Err object! Your About.com 
guide shows your how to implement intelligent error handling.
	
Connect VB to Oracle through ODBC (using: Visual Basic 6.0) [ADO, Database, ODBC, Oracle, Visual Basic, Tip] www.developer.com 21-May-2000 by Rod Stephens
The ODBC connection 

How do I connect VB to Oracle through ODBC? What is creating a dataset?..Is it 
just creating tables in Oracle using the SQL or is it something else? 



--------------------------------------------------------------------------------
Developer.com Expert Rod Stephen's Answer:

The way I do this is I create a data source name (DSN) for the Oracle database. 
Open the Control Panel and start the ODBC Data Sources applet. On the User or 
System DSN tab, click the Add button.

Then select the Oracle driver you want to use. I use Microsoft's driver but I 
know others who have downloaded Oracle's driver from their Web site. After you 
select the driver, click Finish.

On the next form, enter the data source name. This is the name by which you 
want to identify the database. Also enter the user ID you want to logon as and 
optionally a description. I don't worry about which user it is because I'm 
going to change the user when I connect to the database anyway. Click Ok to 
finish.

Now to open the database using the DSN, use code like this: 

Private m_DBConnection As ADODB.Connection

    Set m_DBConnection = New ADODB.Connection
    m_DBConnection.ConnectionString = _
        "DSN=" & dsn & _
        ";UID=" & user_name & _
        ";PWD=" & password
    m_DBConnection.Open

Where dsn is the DSN name, and user_name and password are the user name and 
password you want to log in as. When the variables are inserted, this string 
looks something like:


    DSN=oracle_database;UID=rod;PWD=testpassword
Make a beep in C++ (using: Visual C++ 6.0) [C++, Visual C++, Tip, Escape Sequence] www.devx.com 21-May-2000 by Danny Kalev
How do I make a beep in C++? I'd like to make my program alert the user in case 
of errors.

Use the '\a' escape sequence to emit a beep. For example: 


const char ALERT = '\a';
if (input < 0)
{
 cout << "wrong input!" << ALERT << endl;
}
Numeric Edits, with Limits and Spinner [Edit Control, Article, Visual C++] www.codeguru.com 21-May-2000 by Kenneth Fleckenstein Nielsen
	Numeric Edits, with Limits and Spinner
	 
	Kenneth Fleckenstein Nielsen
	 
	Several classes for dealing with floats
	
Windows 2000 Style Wizards [Property Sheet, Article, Visual C++] www.codeguru.com 21-May-2000 by Robert Pittenger
	Windows 2000 Style Wizards
	 
	Robert Pittenger
	 
	Two classes that allow you to easily create Windows 2000 style wizards
	
Numeric Edits (with Limits and Spinner) [Article, Visual C++] www.earthweb.com 21-May-2000
	Numeric Edits (with Limits and Spinner)
	 
	-N/A
	 
	21-May-2000
	 
	21-May-2000
	 
	VC++ code for numeric edit controls
	
Windows 2000 Style Wizards [Article, Visual C++] www.earthweb.com 21-May-2000
	Windows 2000 Style Wizards
	 
	-N/A
	 
	21-May-2000
	 
	21-May-2000
	 
	VC++ classes to create Windows 2000-style wizards
	
MB HiTimer ActiveX Control [Timer, ActiveX Control, Article, Visual Basic] www.vb2themax.com 20-May-2000 by Marco Bellinaso
	MB HiTimer ActiveX Control
	  
	20-May-2000
	 
	20-May-2000
	 
	Marco Bellinaso
	 
	Everybody knows that the VB timer is not much accurate: about 10 
milliseconds on Windows NT and 50 milliseconds on Win9.x. In addition, the 
interval value is a Integer value so you can't choose an interval greater that 
just over 1 minute. If you need greater accuracy or longer intervals, the MB 
HiTimer is the right control. It has a accuracy of 1 ms and an Interval 
property specified as a Long value. This control includes the CountDown and the 
StopWatch methods to benchmarck your routines. The package includes both the 
control and a class module with the same features, so that you can use this 
better timer even if you don't have a form to place a control. You can gets 
notifications from the class through standard events or though a secondary 
interface.
	
Custom AppWizard: Programmer's About Box [Macro, Article, Visual C++] www.codeguru.com 20-May-2000 by Tom Archer
	Custom AppWizard: Programmer's About Box
	 
	Tom Archer
	 
	AppWizard that automatically includes an About box that links to your 
home page in all your applications
	
Turn Any CWnd-Derived Control Class into a View [Document/View, Article, Visual C++] www.codeguru.com 20-May-2000 by Tom Archer
	Turn Any CWnd-Derived Control Class into a View
	 
	Tom Archer
	 
	Using the CCtrlView class you can easily make any of your controls act 
as views
	
Deriving CWnd classes from CCtrlView [Article, Visual C++] www.earthweb.com 20-May-2000
	Deriving CWnd classes from CCtrlView
	 
	-N/A
	 
	20-May-2000
	 
	20-May-2000
	 
	VC++ code for deriving CWnd classes from the CCtrlView class
	
Custom AppWizard - Programmer's About Box [Article, Visual C++] www.earthweb.com 20-May-2000
	Custom AppWizard - Programmer's About Box
	 
	-N/A
	 
	20-May-2000
	 
	20-May-2000
	 
	VC++ code for a wizard that creates an About box
	
Useful Managers [Macro, Add-in, Article, Visual C++] www.codeproject.com 19-May-2000 by Mike Melnikov
	Useful Managers
	 
	Mike Melnikov
	 
	An add-in for Devstudio that provides tag indexing and search, window, 
bookmarks, session and other managers
	
'Window Tabs' Developer Studio Add-In [Macro, Update, Article, Visual C++] www.codeguru.com 19-May-2000 by Oz Solomonovich
	'Window Tabs' Developer Studio Add-In
	 
	Oz Solomonovich
	 
	Incredible Add-In just got even better !!
	
"Mail Merge" System for XML and Microsoft Word [Internet, Article, Visual C++] www.codeguru.com 19-May-2000 by Franky Braem
	"Mail Merge" System for XML and Microsoft Word
	 
	Franky Braem
	 
	Illustrates great technique of creating a Word template and merging it 
with XML data
	
The "Window Tabs" Add-In For Visual C++ [Article, Visual C++] www.earthweb.com 19-May-2000
	The "Window Tabs" Add-In For Visual C++
	 
	-N/A
	 
	19-May-2000
	 
	19-May-2000
	 
	VC++ code for a docking tab bar to switch windows
	
"Mail Merge" System with XML and Microsoft Word [Article, Visual C++] www.earthweb.com 19-May-2000
	"Mail Merge" System with XML and Microsoft Word
	 
	-N/A
	 
	19-May-2000
	 
	19-May-2000
	 
	VC++ code to merge XML files with a Word template
	
Setting the width of the dropdown list [Combobox, List Control, Article, Visual C++] www.codeproject.com 18-May-2000 by Chris Maunder
	Setting the width of the dropdown list
	 
	Chris Maunder
	 
	A simple tutorial explaining how to set the width of a combo dropdown 
list so that all items are fully visible
	
Dr. Joseph M. Newcomer's MVP Tips, Techniques, and Goodies [Project, Article, Visual C++] www.codeproject.com 18-May-2000 by Joseph M Newcomer
	Dr. Joseph M. Newcomer's MVP Tips, Techniques, and Goodies
	 
	Joseph M Newcomer
	 
	A collection of code examples and essays that I've often posted to the 
microsoft.public.vc.mfc newsgroup and other places
	
Smart Grid [Control, Update, Article, Visual C++] www.codeguru.com 18-May-2000 by Alex Turc
	Smart Grid
	 
	Alex Turc
	 
	Major update : Addition of sorting, combo-boxes and event firing
	
Multiline Header Control Inside a CListCtrl [Listview, Update, Article, Visual C++] www.codeguru.com 18-May-2000 by Alberto Gattegno, Alon Peleg
	Multiline Header Control Inside a CListCtrl
	 
	Alberto Gattegno and Alon Peleg
	 
	Updated source code and article
	
Multiline Header Control Inside a CListCtrl [Article, Visual C++] www.earthweb.com 18-May-2000
	Multiline Header Control Inside a CListCtrl
	 
	-N/A
	 
	18-May-2000
	 
	18-May-2000
	 
	VC++ code to create a multiline header within a CListCtrl
	
A Better Bitmap Button Class [Button Control, Bitmap, Article, Visual C++] www.codeproject.com 17-May-2000 by Joseph M Newcomer
	A Better Bitmap Button Class
	 
	Joseph M Newcomer
	 
	An improvement on the CBitmapButton class.
	
Combo Box Initialization [Combobox, List Control, Article, Visual C++] www.codeproject.com 17-May-2000 by Joseph M Newcomer
	Combo Box Initialization
	 
	Joseph M Newcomer
	 
	Learn how to programmatically initialize a combo box.
	
A simple STL based XML Parser [C++, MFC, STL, XML, Parser, Article, Visual C++] www.codeproject.com 17-May-2000 by David Hubbard
	A simple STL based XML Parser
	 
	David Hubbard
	 
	This is a small non-validating XML parser based purely on STL
	
Attaching and Detaching Objects [C++, MFC, STL, Article, Visual C++] www.codeproject.com 17-May-2000 by Joseph M Newcomer
	Attaching and Detaching Objects
	 
	Joseph M Newcomer
	 
	Attaching and detaching MFC objects to and from Windows objects.
	
Avoiding GetDlgItem [C++, MFC, STL, Article, Visual C++] www.codeproject.com 17-May-2000 by Joseph M Newcomer
	Avoiding GetDlgItem
	 
	Joseph M Newcomer
	 
	Learn how to refrain from using GetDlgItem.
	
Avoiding Multiple Instances of an Application [C++, MFC, STL, Article, Visual C++] www.codeproject.com 17-May-2000 by Joseph M Newcomer
	Avoiding Multiple Instances of an Application
	 
	Joseph M Newcomer
	 
	Learn the right way to limit your application to run only one instance.
	
Avoiding UpdateData [C++, MFC, STL, Dialog, Article, Visual C++] www.codeproject.com 17-May-2000 by Joseph M Newcomer
	Avoiding UpdateData
	 
	Joseph M Newcomer
	 
	Learn how to avoid using UpdateData in your modal Dialogs.
	
Callbacks, Threads, and MFC [C++, MFC, STL, Callback, Thread, Article, Visual C++] www.codeproject.com 17-May-2000 by Joseph M Newcomer
	Callbacks, Threads, and MFC
	 
	Joseph M Newcomer
	 
	Learn how to use callbacks and threads with MFC.
	
Dialog Box Control Management [Dialog, Windows Programming, Article, Visual C++] www.codeproject.com 17-May-2000 by Joseph M Newcomer
	Dialog Box Control Management
	 
	Joseph M Newcomer
	 
	Learn how to effectively control your dialogs.
	
Message Management [Dialog, Windows Programming, Article, Visual C++] www.codeproject.com 17-May-2000 by Joseph M Newcomer
	Message Management
	 
	Joseph M Newcomer
	 
	Learn effective methods for managing your user-defined messages.
	
Windows 2000 Common File Dialog [Dialog, Windows Programming, File Dialog, Dialog, MFC, Article, Visual C++] www.codeproject.com 17-May-2000 by Keyvan Saneinejad
	Windows 2000 Common File Dialog
	 
	Keyvan Saneinejad
	 
	How to show the new Common File Dialog in MFC Apps in Windows 2000
	
FileMonitor [File, Folder, ATL, Monitor, Article, Visual C++] www.codeproject.com 17-May-2000 by Franky Braem
	FileMonitor
	 
	Franky Braem
	 
	An ATL control for Monitoring your directories and/or files for 
updates, creation and deletion
	
Drawing Techniques [Font, GDI, GUI, Article, Visual C++] www.codeproject.com 17-May-2000 by Joseph M Newcomer
	Drawing Techniques
	 
	Joseph M Newcomer
	 
	Learn how to effectively draw your dialogs.
	
Who Owns the GUI? [Font, GDI, GUI, Article, Visual C++] www.codeproject.com 17-May-2000 by Joseph M Newcomer
	Who Owns the GUI?
	 
	Joseph M Newcomer
	 
	Learn about who owns the GUI definition and pitfalls of GUI programming.
	
The Win32 Foundation Classes (WFC) Version 45 [Project, Article, Visual C++] www.codeproject.com 17-May-2000 by Sam Blackburn
	The Win32 Foundation Classes (WFC) Version 45
	 
	Sam Blackburn
	 
	The Win32 Foundation Classes (WFC) are a library of C++ classes that 
extend Microsoft Foundation Classes (MFC) beyond mere GUI applications, and 
provide extensive support for system and NT specific applications
	
A Logging Listbox Control [List Control, Article, Visual C++] www.codeproject.com 17-May-2000 by Joseph M Newcomer
	A Logging Listbox Control
	 
	Joseph M Newcomer
	 
	Learn how to use printf-like functionality to debug your GUI 
applications.
	
A Multiline Header Control Inside a CListCtrl [List Control, Article, Visual C++] www.codeproject.com 17-May-2000 by Alberto Gattegno, Alon Peleg
	A Multiline Header Control Inside a CListCtrl
	 
	Alberto Gattegno and Alon Peleg
	 
	How to make the CListCtrl's header Multiline
	
WndImage Control [Control, Bitmap, Article, Visual C++] www.codeproject.com 17-May-2000 by Peter Hauptmann
	WndImage Control
	 
	Peter Hauptmann
	 
	An easy-to-use control to display Bitmaps (stretch, scale, tile)
	
A Simple Printing Mechanism [Printing, Article, Visual C++] www.codeproject.com 17-May-2000 by Joseph M Newcomer
	A Simple Printing Mechanism
	 
	Joseph M Newcomer
	 
	Learn how to implement print support in your applications.
	
An Introduction to Processes: Asynchronous Process Notification [Thread, Process, Inteprocess Communication, Article, Visual C++] www.codeproject.com 17-May-2000 by Joseph M Newcomer
	An Introduction to Processes: Asynchronous Process Notification
	 
	Joseph M Newcomer
	 
	Learn how to create new processes and how to efficiently manage them.
	
Using User-Interface Threads [Thread, Process, Inteprocess Communication, Article, Visual C++] www.codeproject.com 17-May-2000 by Joseph M Newcomer
	Using User-Interface Threads
	 
	Joseph M Newcomer
	 
	Learn tricks on how to create and use a User-Interface thread.
	
Surviving the Release Version [Tip, Article, Visual C++] www.codeproject.com 17-May-2000 by Joseph M Newcomer
	Surviving the Release Version
	 
	Joseph M Newcomer
	 
	Learn about the issues and differences between Debug and Release builds.
	
The Graphical Developer Interface [Tip, Article, Visual C++] www.codeproject.com 17-May-2000 by Joseph M Newcomer
	The Graphical Developer Interface
	 
	Joseph M Newcomer
	 
	Learn effective methods for logging and debugging your Windows apps.
	
Auto-Increment of the Build Count [Tool, Article, Visual C++] www.codeproject.com 17-May-2000 by Joseph M Newcomer
	Auto-Increment of the Build Count
	 
	Joseph M Newcomer
	 
	Learn how to implement an auto-incrementing build number for your 
projects.
	
Dialog Shortcut Consistency Checker [Tool, Dialog, Article, Visual C++] www.codeproject.com 17-May-2000 by Joseph M Newcomer
	Dialog Shortcut Consistency Checker
	 
	Joseph M Newcomer
	 
	A tool to check the consistency of your dialog shortcuts.
	
Tokenizing strings in VBScript [Visual Basic, VBScript, VBA, Visual Basic, Article, Visual C++] www.codeproject.com 17-May-2000 by Chris Maunder
	Tokenizing strings in VBScript
	 
	Chris Maunder
	 
	A simple function that allows you to tokenize a string sing multiple 
token separators
	
VBScript directory crawler [Visual Basic, VBScript, VBA, Visual Basic, Article, Visual C++] www.codeproject.com 17-May-2000 by Ron Olson
	VBScript directory crawler
	 
	Ron Olson
	 
	A VBScript program that can recursively walk directories and also 
create a true working tree (good for printouts)
	
A Simple BizTalk Shema Viewer (XML/XDR/XSL) (using: Visual C++ 6.0) [Internet, Article, Visual C++] www.codeguru.com 17-May-2000 by Philippe LaChaise
	A Simple BizTalk Shema Viewer (XML/XDR/XSL)
	 
	Philippe LaChaise
	 
	Great article/demo application for XML and XSL !!
	
Report Control: An Outlook 2000-Style SuperGrid Control [Listview, Article, Visual C++] www.codeguru.com 17-May-2000 by Maarten Hoeben
	Report Control: An Outlook 2000-Style SuperGrid Control
	 
	Maarten Hoeben
	 
	Enhanced to include Outlook 2000 UI Features !
	
A Simple BizTalk Shema Viewer (XML/XDR/XSL) [Article, Visual C++] www.earthweb.com 17-May-2000 by Philippe Lachaise
	A Simple BizTalk Shema Viewer (XML/XDR/XSL)
	 
	Philippe Lachaise
	 
	17-May-2000
	 
	17-May-2000
	 
	Very quick illustration of using several different XML-related 
technologies together
	
Report Control - An Outlook 2000-Style SuperGrid Control [Article, Visual C++] www.earthweb.com 17-May-2000 by Maarten Hoeben
	Report Control - An Outlook 2000-Style SuperGrid Control
	 
	Maarten Hoeben
	 
	17-May-2000
	 
	17-May-2000
	 
	Enhanced to include Outlook 2000 UI Features!
	
A Simple BizTalk Shema Viewer (XML/XDR/XSL) [Article, Visual C++] www.earthweb.com 17-May-2000
	A Simple BizTalk Shema Viewer (XML/XDR/XSL)
	 
	-N/A
	 
	17-May-2000
	 
	17-May-2000
	 
	VC++ code for an BizTalk XML schema viewer
	
A Tree Control using ASP [Active Server Pages, ASP, Article, Visual C++] www.codeproject.com 16-May-2000 by Iulian Iuga
	A Tree Control using ASP
	 
	Iulian Iuga
	 
	A simple tree control written using ASP that allows you to display 
hierachical data.
	
List Components, Executables and Libraries [Tool, Component, Article, Visual C++] www.codeproject.com 16-May-2000 by Phil McGahan
	List Components, Executables and Libraries
	 
	Phil McGahan
	 
	A handy utility that produces a comma delimited list of components such 
as .exe's, ocx's etc on your hard drive.
	
Generic Viewer/Printing Application for Windows Files [Printing, Article, Visual C++] www.codeguru.com 16-May-2000 by Francisco Gajardo
	Generic Viewer/Printing Application for Windows Files
	 
	Francisco Gajardo
	 
	SDI application that enables you to view and print many common 
registered Windows file types
	
Hybrid Edit Control that Combines Prompt Text and Edit Control [Edit Control, Article, Visual C++] www.codeguru.com 16-May-2000 by Tom Archer
	Hybrid Edit Control that Combines Prompt Text and Edit Control
	 
	Tom Archer
	 
	Great for dialogs/views where space is limited or prompt text would 
look out of place (e.g., invoices, purchase orders, etc.)
	
Generic Viewer/Printing Application for Windows Files [Article, Visual C++] www.earthweb.com 16-May-2000 by Francisco Gajardo
	Generic Viewer/Printing Application for Windows Files
	 
	Francisco Gajardo
	 
	16-May-2000
	 
	16-May-2000
	 
	SDI application that enables you to view and print many common 
registered Windows file types
	
Hybrid Edit Control that Combines Prompt Text and Edit Control [Article, Visual C++] www.earthweb.com 16-May-2000 by Tom Archer
	Hybrid Edit Control that Combines Prompt Text and Edit Control
	 
	Tom Archer
	 
	16-May-2000
	 
	16-May-2000
	 
	Great for dialogs/views where space is limited or prompt text would 
look out of place (e.g., invoices, purchase orders, etc.)
	
Searching for Files [Article, Delphi] delphi.about.com 16-May-2000
	16-May-2000
	 
	16-May-2000
	 
	Searching for Files
	 
	Stop. This is the one and only solution to file searching. Use Delphi 
to find any file in any directory and/or subdirectory that match a certain 
mask. Start searching.
	
Gradient Menu in MFC [Menu, MFC, Article, Visual C++] www.codeproject.com 15-May-2000 by Jim Koornneef
	Gradient Menu in MFC
	 
	Jim Koornneef
	 
	Create Popup menus in MFC with a gradient and text on the left side
	
Error Handling 101 [Article, Visual Basic] visualbasic.about.com 15-May-2000
	15-May-2000
	 
	15-May-2000
	  
	Error Handling 101
	 
	Your About.com guide shows you how to use simple error handling code to 
catch those unexpected execution errors.
	
Function to Verify if Connected to the Internet [Internet, Article, Visual C++] www.codeguru.com 15-May-2000 by Dmitry Utenkov
	Function to Verify if Connected to the Internet
	 
	Dmitry Utenkov
	 
	Very quick and straight-forward way of determining if the user is 
connected to the Internet
	
Using MS Office in MFC application [Office, Article, Visual C++] www.codeguru.com 15-May-2000 by Igor Tkachev
	Using MS Office in MFC application
	 
	Igor Tkachev
	 
	Lists step-by-step instructions on incorporating MS Office into your 
applications
	
Function to Verify if Connected to the Internet [Article, Visual C++] www.earthweb.com 15-May-2000 by Dmitri Utenkov
	Function to Verify if Connected to the Internet
	 
	Dmitri Utenkov
	 
	15-May-2000
	 
	15-May-2000
	 
	Very quick and straight-forward way of determining if the user is 
connected to the Internet
	
Programming Windows with MFC, Second Edition [MFC, Object-Oriented Programming, Visual C++, Windows Programming, Book] Purchased 12-May-2000, $40.48
Originally 89.99 CDN
Hot List Control: Another Kind of List Control [Control, Article, Visual C++] www.codeproject.com 14-May-2000 by Robert Pittenger
	Hot List Control: Another Kind of List Control
	 
	Robert Pittenger
	 
	A control for selecting items from a list, with tool tips and mouse 
tracking
	
Outlook Express (OE) Reader Class [Interfacing, Article, Visual C++] www.codeguru.com 14-May-2000 by Mladen Bonev
	Outlook Express (OE) Reader Class
	 
	Mladen Bonev
	 
	Class that reads directly from Outlook Express files (e.g., folder 
names, message subjects, message bodies, etc.)
	
CPrintListCtrl Class [Listview, Update, Article, Visual C++] www.codeguru.com 14-May-2000 by Mike Marquet
	CPrintListCtrl Class
	 
	Mike Marquet
	 
	Print Preview added to popular class !!
	
CPrintListCtrl Class [Article, Visual C++] www.earthweb.com 14-May-2000 by Mike Marquet
	CPrintListCtrl Class
	 
	Mike Marquet
	 
	14-May-2000
	 
	14-May-2000
	 
	The CPrintListCtrl class is a standalone class which can be used to 
easy print a list control content (and even includes a "print preview" feature).
	
A Custom Message Box ActiveX Control [Message Box, ActiveX Control, Article, Visual Basic] www.earthweb.com 14-May-2000
	A Custom Message Box ActiveX Control
	 
	-N/A
	 
	14-May-2000
	 
	14-May-2000
	 
	VB code for an ActiveX message box
	
API CD Player [CD-ROM, Article, Visual Basic] www.earthweb.com 14-May-2000
	API CD Player
	 
	-N/A
	 
	14-May-2000
	 
	14-May-2000
	 
	VB code for a CD player
	
Windows HotKeys [Hot Key, Article, Visual Basic] www.earthweb.com 14-May-2000
	Windows HotKeys
	 
	-N/A
	 
	14-May-2000
	 
	14-May-2000
	 
	VB code to use multiple hotkeys
	
STL-based (non-validating) XML Parser [Internet, Article, Visual C++] www.codeguru.com 13-May-2000 by David Hubbard
	STL-based (non-validating) XML Parser
	 
	David Hubbard
	 
	Another great STL implementation by David, these classes use standard 
parsing (as opposed to the XML DOM) to parse XML documents
	
STL-based Web Server and Utility Classes [Internet, Article, Visual C++] www.codeguru.com 13-May-2000 by David Hubbard
	STL-based Web Server and Utility Classes
	 
	David Hubbard
	 
	Very cool STL (non-UI) implementation of the MSDN httpsvr example
	
STL-based (non-validating) XML Parser [Article, Visual C++] www.earthweb.com 13-May-2000 by Dave Hubbard
	STL-based (non-validating) XML Parser
	 
	Dave Hubbard
	 
	13-May-2000
	 
	13-May-2000
	 
	This is a small XML parser, based purely on STL
	
STL-based Web Server and Utility Classes [Article, Visual C++] www.earthweb.com 13-May-2000 by David Hubbard
	STL-based Web Server and Utility Classes
	 
	David Hubbard
	 
	13-May-2000
	 
	13-May-2000
	 
	The code for the web server was adapted from the httpsvr in MSDN. The 
visual interface has been removed. All of the the MFC code has been ripped out 
and converted to STL and socket classes were implemented
	
Introduction to Software Translation for MFC [C++, MFC, STL, Article, Visual C++] www.codeproject.com 12-May-2000 by Robert Pittenger
	Introduction to Software Translation for MFC
	 
	Robert Pittenger
	 
	An introduction to software localization and translation with issues 
specific to MFC development.
	
Creating Custom Controls [Control, MFC, Article, Visual C++] www.codeproject.com 12-May-2000 by Chris Maunder
	Creating Custom Controls
	 
	Chris Maunder
	 
	An introduction to creating custom controls using MFC
	
ActiveX Grid Control (Written with MFC) [Control, Article, Visual C++] www.codeguru.com 12-May-2000 by Michael C Lombardi
	ActiveX Grid Control (Written with MFC)
	 
	Michael C Lombardi
	 
	Awesome grid that can be bound to an MS Access database!!
	
CString Extensions for Resource Loading and String Formatting [String, Article, Visual C++] www.codeguru.com 12-May-2000 by Joshua Reed
	CString Extensions for Resource Loading and String Formatting
	 
	Joshua Reed
	 
	Very nice CString extension classes that provide helper functions for 
loading resource strings and formatting strings
	
ActiveX Grid Control (Written with MFC) [Article, Visual C++] www.earthweb.com 12-May-2000 by Michael Lombardi
	ActiveX Grid Control (Written with MFC)
	 
	Michael Lombardi
	 
	12-May-2000
	 
	12-May-2000
	 
	ActiveX version of grid
	
CString Extensions for Resource Loading and String Formatting [Article, Visual C++] www.earthweb.com 12-May-2000 by Joshua Reed
	CString Extensions for Resource Loading and String Formatting
	 
	Joshua Reed
	 
	12-May-2000
	 
	12-May-2000
	 
	The following classes were developed to simplify my life and clean up 
my code and perhaps they can do the same for you. They are simple classes, but 
allow an easy load of a string resource (important for internationalization) as 
well as an easy way to format strings.
	
A Custom Block Allocator for Speeding Up VC++ STL (using: Visual C++ 6.0) [C++, MFC, STL, Article, Visual C++] www.codeproject.com 11-May-2000 by Joaquín M López Muñoz
	A Custom Block Allocator for Speeding Up VC++ STL
	 
	
Joaquín M López Muñoz
	 
	A block allocator for use with STL containers that greatly improves 
speed in programs doing massive data insertions and extractions.
	
P J Naughter's Freeware Library [Project, Network, Wrapper Class, Article, Visual C++] www.codeproject.com 11-May-2000 by P J Naughter
	P J Naughter's Freeware Library
	 
	P J Naughter
	 
	A collection of articles that provide freeware classes covering GUIs, 
Networking, Wrapper Classes and general code snippets
	
Dialog for Selecting (and Creating) Folders [Dialog, Article, Visual C++] www.codeguru.com 11-May-2000 by Nguyen Tan Hung
	Dialog for Selecting (and Creating) Folders
	 
	Nguyen Tan Hung
	 
	Not only allows the user to select a folder, but class easily allows 
you to create a new folder (as you see in most installation programs)
	
Smart Grid [Control, Article, Visual C++] www.codeguru.com 11-May-2000 by Alex Turc
	Smart Grid
	 
	Alex Turc
	 
	Extremely well done Grid control written using ATL 3.0, STL and the 
Win32 SDK (does not require MFC)
	
Dialog for Selecting (and Creating) Folders [Article, Visual C++] www.earthweb.com 11-May-2000 by Nguyen Tan Hung
	Dialog for Selecting (and Creating) Folders
	 
	Nguyen Tan Hung
	 
	11-May-2000
	 
	11-May-2000
	 
	Extension of SHBrowseForFolder function.
	
Smart Grid [Article, Visual C++] www.earthweb.com 11-May-2000 by Alex Turc
	Smart Grid
	 
	Alex Turc
	 
	11-May-2000
	 
	11-May-2000
	 
	This is a data grid built using ATL 3.0, STL and Win32 API
	
ISArray [C++, MFC, STL, Template, Article, Visual C++] www.codeproject.com 10-May-2000
	ISArray
	 
	-N/A
	 
	A simple Templated array class. Smaller Animals Software Inc
	
Command Line Parameters Context Menu Extension [Shell Programming, Context Menu, Explorer, Article, Visual C++] www.codeproject.com 10-May-2000 by Nick Carruthers
	Command Line Parameters Context Menu Extension
	 
	Nick Carruthers
	 
	Allows for running programs with command line parameters directly from 
Explorer.
	
Copy Path Context Menu Extension [Shell Programming, Context Menu, Shell Extension, Article, Visual C++] www.codeproject.com 10-May-2000 by Nick Carruthers
	Copy Path Context Menu Extension
	 
	Nick Carruthers
	 
	A context menu Shell Extension that allows you to copy full file paths 
to the clipboard.
	
QuickSplit Version 1.0 [Tool, Article, Visual C++] www.codeguru.com 10-May-2000 by Dmitriy Okunev
	QuickSplit Version 1.0
	 
	Dmitriy Okunev
	 
	Complete documented source code for popular utility that enables you to 
split large files for easier transfer!!
	
Font Selector Combobox [GDI, Article, Visual C++] www.codeguru.com 10-May-2000 by Igo
	Font Selector Combobox
	 
	Igo
	 
	Nifty little combobox control that lists all fonts on system and allows 
you to view each one's impact on test string
	
Font Selector Combobox [Article, Visual C++] www.earthweb.com 10-May-2000
	Font Selector Combobox
	 
	-N/A
	 
	10-May-2000
	 
	10-May-2000
	 
	The CFontCombo class is a CComboBox-derived class that while being a 
simple class is very useful in that it enables you to display all the fonts on 
the system in a combo box for the user's selection
	
Change TCP/IP network settings remotely. [Internet, Network, Article, Visual C++] www.codeproject.com 09-May-2000 by Gert Boddaert
	Change TCP/IP network settings remotely.
	 
	Gert Boddaert
	 
	Do you want to change a Host name, DHCP or static IP settings?
	
STL WebServer [Internet, Network, Article, Visual C++] www.codeproject.com 09-May-2000 by David Hubbard
	STL WebServer
	 
	David Hubbard
	 
	A set of classes written in STL that implement a web server
	
Embed ActiveX controls inside Java GUI [Java Programming, Office, Article, Visual C++] www.codeproject.com 09-May-2000 by Davanum Srinivas
	Embed ActiveX controls inside Java GUI
	 
	Davanum Srinivas
	 
	With this your Java projects can take advantage of ActiveX controls and 
Office documents such as spreadsheets, charts, calendars, word processors, 
specialized graphics, and many more.
	
Converting a Win32 Application to ATL [ATL, COM, Article, Visual C++] www.codeguru.com 09-May-2000 by Chandra Shekar
	Converting a Win32 Application to ATL
	 
	Chandra Shekar
	 
	Easy-to-follow steps that enable you to quickly convert your legacy 
Win32 applications to ATL
	
MFC WindowStyler [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 09-May-2000 by Brian Stuart
	MFC WindowStyler
	 
	Brian Stuart
	 
	Utility that enables you to experiment with creating and changing a 
windows styles at runtime
	
Converting a Win32 Application to ATL [Article, Visual C++] www.earthweb.com 09-May-2000 by Chandra Shekar
	Converting a Win32 Application to ATL
	 
	Chandra Shekar
	 
	9-May-2000
	 
	9-May-2000
	 
	In the midst of all this publicity writing ATL-based applications, you 
will find little in the way of documentation on porting your legacy Win32 
applications to ATL. Hopefully, these steps will ease that migration path.
	
MFC WindowStyler [Article, Visual C++] www.earthweb.com 09-May-2000 by Brian Stuart
	MFC WindowStyler
	 
	Brian Stuart
	 
	9-May-2000
	 
	9-May-2000
	 
	The purpose of MFC WindowStyler is to allow users to experiment 
creating windows with different window styles and extended window styles, 
WS_styles and WS_EX_styles, with out having to recompile
	
Routines in Delphi: Beyond the Basics [Article, Delphi] delphi.about.com 09-May-2000
	09-May-2000
	 
	09-May-2000
	 
	Routines in Delphi: Beyond the Basics
	 
	Delphi For Beginners: Extending Object Pascal's functions and 
procedures with default (optional) parameters and method overloading.
	
Inside COM+ Base Services [COM, COM+, Book] Purchased 05-May-2000, $33.73
Regular 74.99
CryptIt [C++, MFC, STL, Article, Visual C++] www.codeproject.com 08-May-2000 by Daniel Madden
	CryptIt
	 
	Daniel Madden
	 
	Keep sensitive data safe via encryption
	
Handling right-click on the CListCtrl header control [List Control, Article, Visual C++] www.codeproject.com 08-May-2000 by Alberto Gattegno
	Handling right-click on the CListCtrl header control
	 
	Alberto Gattegno
	 
	Determining the right click on the header of the CListCtrl
	
A Tutorial on Pointers [Article, Visual C++] cplus.about.com 08-May-2000
	08-May-2000
	 
	08-May-2000
	  
	A Tutorial on Pointers
	 
	A tutorial on how to use pointers in C++
	
Multiline Header Control Inside a CListCtrl [Listview, Article, Visual C++] www.codeguru.com 08-May-2000 by Alberto Gattegno, Alon Peleg
	Multiline Header Control Inside a CListCtrl
	 
	Alberto Gattegno and Alon Peleg
	 
	If you've ever had Listviews where some of the column headings would 
display better on multiple lines, this article is for you!
	
ATL Date Routines [ATL, COM, Article, Visual C++] www.codeguru.com 08-May-2000 by Paul E Bible
	ATL Date Routines
	 
	Paul E Bible
	 
	Great set of Date routines that does not require MFC
	
ATL Date Routines [Article, Visual C++] www.earthweb.com 08-May-2000 by Paul Bible
	ATL Date Routines
	 
	Paul Bible
	 
	8-May-2000
	 
	8-May-2000
	 
	ATL library of date and time routines
	
Comment Block Macros [Macro, Article, Visual C++] www.codeguru.com 07-May-2000 by Vu Dang
	Comment Block Macros
	 
	Vu Dang
	 
	Macros to quickly comment and uncomment blocks of code
	
Colored/Blinking Controls and Dialogs with any Font [Control, Article, Visual C++] www.codeguru.com 07-May-2000 by Yury Goltsman
	Colored/Blinking Controls and Dialogs with any Font
	 
	Yury Goltsman
	 
	These classes are template-based so they work with your current 
CWnd-derived classes!!
	
Comment Block Macros [Article, Visual C++] www.earthweb.com 07-May-2000 by Vu Dang
	Comment Block Macros
	 
	Vu Dang
	 
	7-May-2000
	 
	7-May-2000
	 
	Do you find that it is much easier to comment or uncomment a block of 
code in Visual Basic editor? I wrote a couple of macro routines to do the same 
for Visual C++ editor
	
Project Line Counter Add-In [Macro, Article, Visual C++] www.codeguru.com 06-May-2000 by Oz Solomonovich
	Project Line Counter Add-In
	 
	Oz Solomonovich
	 
	Great add-in that enables you to quickly ascertain source code 
statistics for your entire project
	
Simple Way to Check All Dialog Controls for Changings [Dialog, Article, Visual C++] www.codeguru.com 06-May-2000 by Ramin Sadeghi
	Simple Way to Check All Dialog Controls for Changings
	 
	Ramin Sadeghi
	 
	Uses the ON_CONTROL_RANGE MFC macro to avoid having to individually 
check each control
	
Simple Way to Check All Dialog Controls for Changings [Article, Visual C++] www.earthweb.com 06-May-2000 by Ramin Sadeghi
	Simple Way to Check All Dialog Controls for Changings
	 
	Ramin Sadeghi
	 
	6-May-2000
	 
	6-May-2000
	 
	It is very difficult and toilsome to implement code that checks every 
single control on a given dialog for changes; especially for complex dialogs. 
This aritcles shows you one method of accomplishing this.
	
A 3D Label Control [Label Control, Article, Visual Basic] www.earthweb.com 06-May-2000
	A 3D Label Control
	 
	-N/A
	 
	6-May-2000
	 
	6-May-2000
	 
	VB code to create a 3D ActiveX label
	
Overloading Operator << for a User-Defined Type (using: Visual C++ 6.0) [C++, Overloading, User-defined Type, iostream, Visual C++, Tip] www.devx.com 05-May-2000 by Danny Kalev
Overloading Operator << for a User-Defined Type
By Danny Kalev


One of the advantages of using the iostream objects is that you can customize 
them to support your own classes. I will show how to overload ostream's 
operator << so that it can display a user-defined object. 

Suppose you declared the following class: 


  class student
  {
  private:
    string name;
    string department;
  public:
    student(string n = "", string dep = 0) 
    : name(n), department(dep) {}

    string get_name() const { return name; }
    string get_department () const { return department; }
    void set_name(const string& n) { name=n; }
    void set_department (const string& d) {department=d;}
  };

And you want to be able to use it in a cout statement as follows: 


  student st("Bill Jones", "Zoology"); // create instance
  cout<
CIniFile [C++, MFC, STL, Article, Visual C++] www.codeproject.com 05-May-2000 by Adam Clauss
	CIniFile
	 
	Adam Clauss
	 
	A class that makes it easy to implement an INI settings file in your 
applications.
	
Reformat source code [Macro, Add-in, Article, Visual C++] www.codeproject.com 05-May-2000 by Alvaro Mendez
	Reformat source code
	 
	Alvaro Mendez
	 
	A great macro for reformatting C++ source code
	
A Case Study about InterProcess Synchronization [Thread, Process, Inteprocess Communication, Synchronization, Article, Visual C++] www.codeproject.com 05-May-2000 by Gert Boddaert
	A Case Study about InterProcess Synchronization
	 
	Gert Boddaert
	 
	An application demonstrating process Synchronisation and interprocess 
communication
	
Single Toobar Simultaneously Used by Multiple Dialog-Based Applications At Once [Dialog, Article, Visual C++] www.codeguru.com 05-May-2000 by Oscar Kogosov
	Single Toobar Simultaneously Used by Multiple Dialog-Based Applications 
At Once
	 
	Oscar Kogosov
	 
	Enables you to use a single Toolbar across multiple dialog-based 
application
	
CIniFile: Class for Reading and Writing .INI Files [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 05-May-2000 by Adam Clauss
	CIniFile: Class for Reading and Writing .INI Files
	 
	Adam Clauss
	 
	Very easy-to-use class to handle the reading and writing .INI files
	
CIniFile - Class for Reading and Writing .INI Files [Article, Visual C++] www.earthweb.com 05-May-2000 by Adam Clauss
	CIniFile - Class for Reading and Writing .INI Files
	 
	Adam Clauss
	 
	5-May-2000
	 
	5-May-2000
	 
	Simple .INI wrapper
	
Single Toobar Simultaneously Used by Multiple Dialog-Based Applications At Once [Article, Visual C++] www.earthweb.com 05-May-2000 by Oscar Kogosov
	Single Toobar Simultaneously Used by Multiple Dialog-Based Applications 
At Once
	 
	Oscar Kogosov
	 
	5-May-2000
	 
	5-May-2000
	 
	TlbDlg_OK is a sample how to work with common toolbar from several 
dialog-based applications
	
Customizable forms [Active Server Pages, Template, Article, Visual C++] www.codeproject.com 04-May-2000 by Iulian Iuga
	Customizable forms
	 
	Iulian Iuga
	 
	Template Active Server Page to display different objects based on 
registry settings
	
ATL Object Wizard Property Page [ATL, ATL Object Wizard, C++, MFC, STL, Article, Visual C++] www.codeproject.com 04-May-2000 by Shaun Wilde, John R Bandela
	ATL Object Wizard Property Page
	 
	Shaun Wilde
	 
	A wizard that allows you to create an ATL Object Wizard Property Page
	
Asynchronous IO within ISAPI modules [IIS, ISAPI, Article, Visual C++] www.codeproject.com 04-May-2000 by Mike Junkin
	Asynchronous IO within ISAPI modules
	 
	Mike Junkin
	 
	How to use asynchronous IO to send data from an ISAPI module
	
ITEMIDLIST management library [Shell Programming, Article, Visual C++] www.codeproject.com 04-May-2000 by Vassili Bourdo
	ITEMIDLIST management library
	 
	Vassili Bourdo
	 
	The library that helps to manage Shell ITEMIDLISTS
	
Removing debug information from .obj files [Tip, Article, Visual C++] www.codeproject.com 04-May-2000 by Tibor Blazko
	Removing debug information from .obj files
	 
	Tibor Blazko
	 
	A small program for removing debug information from object files that 
aids incrementally linking extremely large projects.
	
Observer Pattern Class [C++, MFC, Article, Visual C++] www.codeguru.com 04-May-2000 by Ray Virzi
	Observer Pattern Class
	 
	Ray Virzi
	 
	Provides a very fine C++ implementation of the Observer Pattern 
(implementing cyclic updates, self reference, etc.)
	
Visual C++ Custom Debug Monitor [Debugging, Article, Visual C++] www.codeguru.com 04-May-2000 by Daniel Chirca
	Visual C++ Custom Debug Monitor
	 
	Daniel Chirca
	 
	Nifty little utility that allows you to route debug messages to a 
separate window for viewing while testing your application
	
Visual C++ Custom Debug Monitor [Article, Visual C++] www.earthweb.com 04-May-2000 by Daniel Chirca
	Visual C++ Custom Debug Monitor
	 
	Daniel Chirca
	 
	4-May-2000
	 
	4-May-2000
	 
	Easy way to get the same functionality in Microsoft Visual C++ that 
Visual Basic provides, i.e. to insert into the source code some debug messages 
and have them displayed at runtime into a separated, dedicated window (...the 
"Immediate" window in Visual Basic).
	
Observer Pattern Class [Article, Visual C++] www.earthweb.com 04-May-2000 by Ray Virzi
	Observer Pattern Class
	 
	Ray Virzi
	 
	4-May-2000
	 
	4-May-2000
	 
	The class CObserver is a base class from which you can derive both 
observer and subject classes. An 'observer' object is one whose internal state 
depends upon the internal state of one or more other objects.
	
SHFILEOPSTRUCT and the SHFileOperation [File, Folder, Update, Article, Visual C++] www.codeguru.com 03-May-2000 by John Z Czopowik
	SHFILEOPSTRUCT and the SHFileOperation
	 
	John Z Czopowik
	 
	Updated example code
	
WTL Tool Bar Drop-Down Extension [ATL, COM, Article, Visual C++] www.codeguru.com 03-May-2000 by Ben Burnett
	WTL Tool Bar Drop-Down Extension
	 
	Ben Burnett
	 
	Drop down Toolbar buttons implemented with WTL
	
WTL Tool Bar Drop-Down Extension [Article, Visual C++] www.earthweb.com 03-May-2000 by Ben Burnett
	WTL Tool Bar Drop-Down Extension
	 
	Ben Burnett
	 
	3-May-2000
	 
	3-May-2000
	 
	Great article on this unsupported Microsoft technology
	
SHFILEOPSTRUCT and the SHFileOperation [Article, Visual C++] www.earthweb.com 03-May-2000 by John Z Czopowik
	SHFILEOPSTRUCT and the SHFileOperation
	 
	John Z Czopowik
	 
	3-May-2000
	 
	3-May-2000
	 
	Introduction of the SHFILEOPSTRUCT and the SHFileOperation function.
	
Simple midi - IN, OUT & THRU demonstrated and Midi FAQ [MIDI, Article, Visual Basic] www.earthweb.com 03-May-2000 by Stefaan Casier
	Simple midi - IN, OUT & THRU demonstrated and Midi FAQ
	 
	Stefaan Casier
	 
	3-May-2000
	 
	3-May-2000
	 
	VB code to demonstrate MIDI programming techniques
	
Base Number Conversion Routines [Conversion, Article, Visual Basic] www.earthweb.com 03-May-2000
	Base Number Conversion Routines
	 
	-N/A
	 
	3-May-2000
	 
	3-May-2000
	 
	VB code to convert between decimal and base numbers
	
Getting the Module (exe) Filename from an HWND [System, Article, Visual C++] www.codeguru.com 02-May-2000 by Mike Ryan
	Getting the Module (exe) Filename from an HWND
	 
	Mike Ryan
	 
	Very useful class that also includes the ability to filter out specific 
module names and types
	
Class (CShellList) to Retrieve All Icon File Types [ImageList Control, Update, Article, Visual C++] www.codeguru.com 02-May-2000 by Nathan Moinvaziri
	Class (CShellList) to Retrieve All Icon File Types
	 
	Nathan Moinvaziri
	 
	Code updated to retrieve all icon types
	
Class (CShellList) to Retrieve All Icon File Types [Article, Visual C++] www.earthweb.com 02-May-2000 by Nathan Moinvaziri
	Class (CShellList) to Retrieve All Icon File Types
	 
	Nathan Moinvaziri
	 
	2-May-2000
	 
	2-May-2000
	 
	CShellList shows about how you would go extracting each one of the 
individual file type icons, from windows, just like what happens when you click 
on File Types in Folder Options of any folder view in windows
	
Getting the Module (exe) Filename from an HWND [Article, Visual C++] www.earthweb.com 02-May-2000 by Mike Ryan
	Getting the Module (exe) Filename from an HWND
	 
	Mike Ryan
	 
	2-May-2000
	 
	2-May-2000
	 
	This is a very useful class that also includes the ability to filter 
out specific module names and types.
	
MDI Development in Delphi. Part II. [Article, Delphi] delphi.about.com 02-May-2000
	02-May-2000
	 
	02-May-2000
	 
	MDI Development in Delphi. Part II.
	 
	Creating a multiple document interface graphic file viewer.
	
Using Predicate Waits with Win32 Threads [Thread, Synchronization, Article, Visual C++] C++ Users Journal 01-May-2000 by David M Howard
	Using Predicate Waits with Win32 Threads
	 
	David M Howard
	  
	Most Win32 Synchronization primitives are just that - primitive. But 
you can use them to build queues that are safe and easy to use.
	
Integrating Threads with Template Classes [Thread, Template Class, Article, Visual C++] C++ Users Journal 01-May-2000 by Charles Calkins
	Integrating Threads with Template Classes
	 
	Charles Calkins
	  
	It’s obviously a good idea to encapsulate a thread as an object. It is 
less obvious how to get all the interfaces right.
	
Thread-Safe Access to Collections [Thread Safe, Collection, Thread, Article, Visual C++] C++ Users Journal 01-May-2000 by Jeff Kleber
	Thread-Safe Access to Collections
	 
	Jeff Kleber
	  
	The best place to store a thread lock for a shared container is 
somewhere inside the container - deep inside.
	
Visualizing Depth Images via Rendering [Rendering, Graphic, Image, Article, Visual C++] C++ Users Journal 01-May-2000 by Dwayne Phillips
	Visualizing Depth Images via Rendering
	 
	Dwayne Phillips
	  
	In case you thought that Dwayne Phillips had exhausted the topic of 
imaging in these pages, here’s another interesting installment.
	
Catching Untested Return Codes [Article, Visual C++] C++ Users Journal 01-May-2000 by Marc Guillemot
	Catching Untested Return Codes
	 
	Marc Guillemot
	  
	Who watches the watchers, at least to make sure they're watching? This 
class does.
	
State Machine Design in C++ [State Machine, C++, Finite-state Machine, Multithreading, Article, Visual C++] C++ Users Journal 01-May-2000 by David Lafreniere
	State Machine Design in C++
	 
	David Lafreniere
	  
	It’s not all that hard to implement a Finite-State Machine, unless it’s 
very large, and you have to worry about Multithreading, and ...
	
Speed Up Your Apps With Data Structures [Data Structure, Linked List, Hash Table, Article, Visual Basic] Visual Basic Programmer's Journal 01-May-2000, vol. 10, no. 6 by Francesco Balena
	Speed Up Your Apps With Data Structures
	 
	Francesco Balena
	 
	Choosing the right data structure can help you write faster apps. 
Here's how to use Linked Lists and Hash Tables to write code that rivals C for 
speed.
	
Build Your Own MMC Snap-In [MMC, Snap-In, Microsoft Management Console, Article, Visual Basic] Visual Basic Programmer's Journal 01-May-2000, vol. 10, no. 6 by Bill Block
	Build Your Own MMC Snap-In
	 
	Bill Block
	 
	The Microsoft Management Console (MMC) Designer gives developers 
something they've been waiting a long time for - the ability to create MMC 
snap-ins in VB.
	
From Office DOM to XML DOM [Office, DOM, XML, Outlook, Document Object Model, VBA, Article, Visual Basic] Visual Basic Programmer's Journal 01-May-2000, vol. 10, no. 6 by Kurt Cagle
	From Office DOM to XML DOM
	 
	Kurt Cagle
	 
	Although Microsoft Outlook doesn't really support XML, knowing how to 
use MS Office's Document Object Models (DOMs) lets you create complex 
applications with tools such as VBA.
	
Share Your Appointments [Article, Visual Basic] Visual Basic Programmer's Journal 01-May-2000, vol. 10, no. 6 by Chris Barlow
	Share Your Appointments
	 
	Write apps that read and write most common vCalendar data elements.
	 
	Chris Barlow
	
Save Code With Common Dialogs [Common Dialog, File, Font, Printer, Article, Visual Basic] Visual Basic Programmer's Journal 01-May-2000, vol. 10, no. 6 by Ron Schwarz
	Save Code With Common Dialogs
	 
	VB's CommonDialog control provides a useful interface for opening and 
saving Files, Font selection, and Printer management.
	 
	Ron Schwarz
	
Roll Your Own Upload Component [Component, File-uploading, Web, Article, Visual Basic] Visual Basic Programmer's Journal 01-May-2000, vol. 10, no. 6 by Jonathan Goodyear
	Roll Your Own Upload Component
	 
	File-uploading capability makes Web-based apps more interactive. Learn 
how to build a file upload component that implements custom business rules.
	 
	Jonathan Goodyear
	
Six Tips Developers Should Know [Pattern, Antipattern, Design, Database, Article, Visual Basic] Visual Basic Programmer's Journal 01-May-2000, vol. 10, no. 6 by Deborah Kurata
	Six Tips Developers Should Know
	 
	Using Patterns and Antipatterns can help you improve your Design, 
deliverables, and the Database.
	 
	Deborah Kurata
	
How to direct Callbacks into Classes and Forms [Callback, Class, Form, Article, Visual Basic] Visual Basic Programmer's Journal 01-May-2000, vol. 10, no. 6 by Karl E Peterson
	How to direct Callbacks into Classes and Forms
	 
	Learn how to direct callbacks into classes and forms.
	 
	Karl E Peterson
	
Mine Your Resources [Resource, Enumerate, Article, Visual Basic] Visual Basic Programmer's Journal 01-May-2000, vol. 10, no. 6 by Karl E Peterson
	Mine Your Resources
	 
	Learn how to Enumerate resources from outside your app.
	 
	Karl E Peterson
	
Handle Events With Triggers [Event, Trigger, Stored Procedure, Table, Audit Trail, Summary Table, Article, Visual Basic] Visual Basic Programmer's Journal 01-May-2000, vol. 10, no. 6 by Joseph Lax
	Handle Events With Triggers
	 
	Triggers - Stored Procedures that you create and attach to a Table - 
fire whenever data in the table is modified. Practical uses range from 
maintaining an Audit Trail to updating Summary Tables.
	 
	Joseph Lax
	
Create Data-Driven Forms [Form, Article, Visual Basic] Visual Basic Programmer's Journal 01-May-2000, vol. 10, no. 6 by Francesco Balena
	Create Data-Driven Forms
	 
	Data-driven forms are one of the best applications of VB6's ability to 
create controls dynamically. Use such forms to write better programs in less 
time.
	 
	Francesco Balena
	
Minimize Cache Thrash [Cache, Database, Oracle, SQL Server, Article, Visual Basic] Visual Basic Programmer's Journal 01-May-2000, vol. 10, no. 6 by Kirk Allen Evans
	Minimize Cache Thrash
	 
	Improve your app's performance by using Database caching, query plans, 
and bind variables in Oracle or SQL Server.
	 
	Kirk Allen Evans
	
Implement Dynamic Role-Based Security [Role, Security, COM+, Article, Visual Basic] Visual Basic Programmer's Journal 01-May-2000, vol. 10, no. 6 by Brian A Manlove
	Implement Dynamic Role-Based Security
	 
	Meet security requirements by using membership in COM+ roles to alter 
the user interface.
	 
	Brian A Manlove
	
Windows 2000 Translucent Windows [Translucent Windows, WS_EX_TRANSPARENT, Visual C++, Windows NT, Article] Windows Developer's Journal 01-May-2000, vol. 11, no. 5 by Petter Hesselberg
	Windows 2000 Translucent Windows
	 
	Petter Hesselberg
	  
	Win32 has long offered the intriguing window style known as 
WS_EX_TRANSPARENT, but anyone who's used it knows it doesn't live up to the 
name. Now, Windows 2000 finally provides functioning support for not just 
transparent windows, but also translucent (or "bleed-through") windows.
	
Enumerating/Calling Control Panel Applets [Enumerating, Control Panel Applet, Visual C++, Article] Windows Developer's Journal 01-May-2000, vol. 11, no. 5 by Zuoliu Ding
	Enumerating/Calling Control Panel Applets
	 
	Zuoliu Ding
	  
	Sometimes your application needs functionality that a control panel 
applet provides. For example, if your program needs to let the user set the 
current date/time, you could either tell them to manually use the control 
panel, or write your own dialog that duplicates that work. This article 
provides a third alternative: calling a control panel applet directly from your 
own application.
	
Configuring VC++ Multithreaded Memory Management [Memory Management, Multithreaded, Visual C++, Article] Windows Developer's Journal 01-May-2000, vol. 11, no. 5 by Gerbert Orasche
	Configuring VC++ Multithreaded Memory Management
	 
	Gerbert Orasche
	  
	Multithreaded VC++ programs can actually run slower on multiprocessor 
machines if they are performing intensive memory management. Here's a trick to 
greatly speed up such bottlenecked programs - without even rebuilding the 
program!
	
Understanding NT: Files reside on Network Shares that aren't always connected? [File, Network Share, Visual C++, Article] Windows Developer's Journal 01-May-2000, vol. 11, no. 5 by Paula Tomlinson
	Understanding NT: Files reside on Network Shares that aren't always 
connected?
	 
	Paula Tomlinson
	  
	Your program provides a File menu with a list of most recently used 
files. But what if some of those files reside on network shares that aren't 
always connected? Instead of stupidly saying "Can't access that file.", you can 
detect this situation, pop up a dialog that lets the user provide the needed 
logon information, create the connection, and then open the file - here's how.
	
Add a much-needed history feature to the standard Combobox Control [Combobox, Visual C++, Article] Windows Developer's Journal 01-May-2000, vol. 11, no. 5 by Petter Hesselberg
	Add a much-needed history feature to the standard Combobox Control
	 
	Petter Hesselberg
	  
	The standard controls are the workhorses of Windows user interface 
programming, but they lack some obvious features that many programs need. This 
month's column adds a much-needed history feature to the standard combobox 
control.
	
Win98 TransparentBlt() Bugs [TransparentBlt(), Transparent Bitmap, Visual C++, Article] Windows Developer's Journal 01-May-2000, vol. 11, no. 5 by Chris Branch
	Win98 TransparentBlt() Bugs
	 
	Chris Branch
	 
	The new Win98 function, TransparentBlt(), can handle the details of 
drawing a Transparent Bitmap - but unless you don't mind resource leaks, use it 
only with monochrome source bitmaps.
	
Distinguishing Big Endian From Little Endian [Endian, HTTP, Visual C++, Article] Windows Developer's Journal 01-May-2000, vol. 11, no. 5 by Moishe Halibard
	Distinguishing Big Endian From Little Endian
	 
	Moishe Halibard
	 
	One set of software can provide both web server and standalone 
application functionality; the trick is to just write a tiny HTTP server to let 
your 'standalone' application be accessed locally via HTTP.
	
Finding Trace Statements [Trace, Debugging, Visual C++, Article] Windows Developer's Journal 01-May-2000, vol. 11, no. 5 by Michael Taylor
	Finding Trace Statements
	 
	Michael Taylor
	 
	How to make your Debugging trace statements click to the source code 
they arose from.
	
Internet Audio: Using the Audio Compression Manager [Internet, Audio, Audio Compression Manager, Article, Delphi] Delphi Developer 01-May-2000, vol. 6, no. 5 by Peter Morris
	Internet Audio: Using the Audio Compression Manager
	 
	Peter Morris
	 
	Are you excited by the possibilities of transmitting audio over the 
Internet, but confused by all of the crazy buzzwords that go with it? Peter 
Morris cuts through the confusion and shows you how to use Delphi to make 
inroads into this exciting technology.
	
Using Network Graphs to Represent Linked Objects [Graph, Object, Article, Delphi] Delphi Developer 01-May-2000, vol. 6, no. 5 by Keith Wood
	Using Network Graphs to Represent Linked Objects
	 
	Keith Wood
	 
	Network graphs provide a visual representation for many areas of 
interest. Any time you're working with entities joined by connections, a 
network graph can be used to help visualize the relationship. In this article, 
Keith Wood shows you how to construct an interface and class structure that 
models and then displays a graph. Separating the graph structure from its 
presentation makes it easier to use and reuse.
	
Integrating Auto Completion into Your Applications [Auto Completion, Article, Delphi] Delphi Developer 01-May-2000, vol. 6, no. 5 by Anthony Walter
	Integrating Auto Completion into Your Applications
	 
	Anthony Walter
	 
	A feature standard to newer versions of Microsoft Windows is auto 
completion. Anthony Walter shows how to incorporate this feature into your own 
Delphi programs with just a few lines of code.
	
Embed Perl in Your Projects [Perl, Scripting, Article, Visual C++] Visual C++ Developers Journal 01-May-2000, vol. 3, no. 4 by Martin C Brown
	Embed Perl in Your Projects
	 
	Martin C Brown
	 
	Adding a programmable element to your applications makes them more 
practical solutions for users. Extend your program's functionality by using 
Perl to provide an embedded Scripting language.
	
Multithreaded Programming in C++ and Java [Multithreaded, C++, Java, Article, Visual C++] Visual C++ Developers Journal 01-May-2000, vol. 3, no. 4 by Dianne M Marsh
	Multithreaded Programming in C++ and Java
	 
	Dianne M Marsh
	 
	Multithreading improves the user's interaction with your program. Get 
the scoop on the best ways to use multithreading in C++ and Java.
	
Discover Class Designs [Class, Article, Visual C++] Visual C++ Developers Journal 01-May-2000, vol. 3, no. 4 by Bill Wagner
	Discover Class Designs
	 
	Bill Wagner
	 
	A class's design speaks volumes about how it should be used. Figure out 
what functions to look for and what they tell you.
	
Programming COM+ Security [COM+, Security, COM, Article, Visual C++] Visual C++ Developers Journal 01-May-2000, vol. 3, no. 4 by Yasser Shohoud
	Programming COM+ Security
	 
	Yasser Shohoud
	 
	In this excerpt from Mastering COM and COM+, discover how to define 
roles and perform security checks at the application level for any COM+ 
component.
	
(The Joy of) Memory Mapping [Memory Mapping, File, Article, Visual C++] Visual C++ Developers Journal 01-May-2000, vol. 3, no. 4 by Andy Harding
	(The Joy of) Memory Mapping
	 
	Andy Harding
	 
	Use memory mapping to view your Files quickly and easily. Our VC++ Pro 
also answers questions about loading device-independent bitmaps.
	
Generate Rich Error Information [Error, Article, Visual C++] Visual C++ Developers Journal 01-May-2000, vol. 3, no. 4 by Richard Grimes
	Generate Rich Error Information
	 
	Richard Grimes
	 
	Learn to generate rich error information - descriptive text that 
pinpoints the source of an error - to help your components' users solve 
problems that might arise.
	
Manage Thread Affinity Issues [Thread Affinity, Apartment, Windows NT, Article, Visual C++] Visual C++ Developers Journal 01-May-2000, vol. 3, no. 4 by George Shepherd
	Manage Thread Affinity Issues
	 
	George Shepherd
	 
	Understand the new role for Apartments in Windows 2000 so you can 
associate your objects with apartment-calling threads effectively.
	
Business-to-Business Architecture and Tools for Trading Partner Integration [Business-to-Business, BizTalk Server 2000, Web, XML, Visual Basic, Article] MSDN Magazine 01-May-2000, vol. 15, no. 5 by Aaron Skonnard, Bob Laskey
	Business-to-Business Architecture and Tools for Trading Partner 
Integration
	 
	This article provides an overview of the concepts involved with 
implementing a trading partner integration system on BizTalk Server 2000 and 
details the document interchange server architecture and toolset. Additionally, 
an early look was taken at some business process integration features planned 
for the production release of the product that allow easy design, execution and 
sharing of new business processes with trading partners. The concepts and 
architecture presented allow companies to prepare internal line-of-business 
applications and trading partners for systems that improve customer service and 
reduce operating costs.
	 
	Aaron Skonnard
	 and 
	Bob Laskey
	
Use Web Tools to Monitor and Manage Embedded Devices with Windows CE Web Server [Web, Monitor, Embedded Device, Windows CE Web Server, Internet Information Server, IIS, Visual C++, Article] MSDN Magazine 01-May-2000, vol. 15, no. 5 by Leonid Braginski, Matthew Powell
	Use Web Tools to Monitor and Manage Embedded Devices with Windows CE 
Web Server
	 
	This article explains how the Windows CE Web Server component can be 
included in the operating system for a given device. We’ll also show you how 
the Web server features you’re familiar with from Microsoft Internet 
Information Services are implemented in the Windows CE Web Server.
	 
	Leonid Braginski
	 and 
	Matthew Powell
	
Implement E-Commerce Affiliate Programs to Create New Partnerships and Generate Business [E-Commerce, Web, ASP, VBScript, Article] MSDN Magazine 01-May-2000, vol. 15, no. 5 by Ted Coombs
	Implement E-Commerce Affiliate Programs to Create New Partnerships and 
Generate Business
	 
	This article gives you an overview of some of the new e-commerce 
concepts and implementations that are helping forge those new relationships 
with customers, vendors, and shipping companies.
	 
	Ted Coombs
	
Administering Windows and Applications across an Enterprise [Administration, Enterprise, Windows Management Instrumentation, WMI, Common Information Model, CIM, Windows Management Instrumentation Query Language, WQL, COM, Scripting, Windows NT, Visual C++, Article] MSDN Magazine 01-May-2000, vol. 15, no. 5 by Jeffrey Cooperstein
	Administering Windows and Applications across an Enterprise
	 
	This article provides an overview of Windows Management 
Instrumentation, a technology that exposes a wide variety of system and device 
information through a standard API. With WMI, management information is exposed 
by following the object oriented structure outlined in the Common Information 
Model (CIM), which relies on inheritance for reuse and standardization of 
object classes that represent system devices. This article briefly describes 
querying WMI for information using a query language much like SQL called 
Windows Management Instrumentation Query Language (WQL), existing system 
classes, handling system events, and security in WMI.
	 
	Jeffrey Cooperstein
	
Building a WMI Provider to Expose Your Object Info [WMI, Windows Management Instrumentation, COM, Windows NT, Visual C++, Article] MSDN Magazine 01-May-2000, vol. 15, no. 5 by Kevin Hughes, David Wohlferd
	Building a WMI Provider to Expose Your Object Info
	 
	You need a WMI provider to expose system information to WMI to manage 
applications and devices. This article offers an in-depth discussion of how to 
write WMI providers using the WMI provider framework, and how to optimize 
performance.
	 
	Kevin Hughes
	 and 
	David Wohlferd
	
Managing Projects Using Visual SourceSafe [Visual SourceSafe, ASP, Source Control, VBScript, Article] MSDN Magazine 01-May-2000, vol. 15, no. 5 by Ken Ramirez
	Managing Projects Using Visual SourceSafe
	 
	Visual SourceSafe provides an object model that you can use as the 
basis of your own customized source code control environment. To give you an 
idea of what is possible, we’ll walk you through the elements of a 
browser-based source code control system built with Visual SourceSafe, ASP, and 
VBScript. This simple system lets members of your team build, label, and 
promote individual files or entire projects, and to reverse promotions.
	 
	Ken Ramirez
	
Extending HTML with custom tags (using: Interent Explorer 5.0) [Article, HTML, Internet Explorer, Interent Explorer] MSDN Magazine 01-May-2000, vol. 15, no. 5 by Dino Esposito
	Extending HTML with custom tags
	 
	Dino Esposito
	
XPath, XSLT, and other XML specs (using: Interent Explorer 5.0) [Article, Internet Explorer, XML, XPath, XSLT, Interent Explorer] MSDN Magazine 01-May-2000, vol. 15, no. 5 by Aaron Skonnard
	XPath, XSLT, and other XML specs
	 
	Aaron Skonnard
	
Building and testing ADO components with Visual Basic [ADO, Visual Basic, Article] MSDN Magazine 01-May-2000, vol. 15, no. 5 by Ken Spencer
	Building and testing ADO components with Visual Basic
	 
	Ken Spencer
	
Porting apps from MTS to COM+ [MTS, COM+, Visual Basic, Article] MSDN Magazine 01-May-2000, vol. 15, no. 5 by Ted Pattison
	Porting apps from MTS to COM+
	 
	Ted Pattison
	
Optimizing DLL load time Performance with the MakeLoadTimeTest utility [DLL, Performance, Visual C++, Article] MSDN Magazine 01-May-2000, vol. 15, no. 5 by Matt Pietrek
	Optimizing DLL load time Performance with the MakeLoadTimeTest utility
	 
	Matt Pietrek
	
Understanding Kerberos credential delegation using TktView utility [Kerberos, Windows NT, Article] MSDN Magazine 01-May-2000, vol. 15, no. 5 by Keith Brown
	Understanding Kerberos credential delegation using TktView utility
	 
	Keith Brown
	
How to build a stealth dialog .. one that doesn't appear on the taskbar [Dialog, Taskbar, Visual C++, Article] MSDN Magazine 01-May-2000, vol. 15, no. 5 by Paul DiLascia
	How to build a stealth dialog .. one that doesn't appear on the taskbar
	 
	Paul DiLascia
	
Parsing the Web [Parsing, Web, SGML, HTML, XML, Article, Delphi] Delphi Informant 01-May-2000, vol. 6, no. 5 by Richard Phillips
	Parsing the Web
	 
	Richard Phillips
	 
	In this tour de force, Mr Phillips describes the parsing rules for 
SGML, HTML, and XML. He then shares and demonstrates three powerful Delphi 
classes for programmatically gathering any Web information.
	
Active Directories [Active Directories, ADSI, Windows NT, Article, Delphi] Delphi Informant 01-May-2000, vol. 6, no. 5 by Simon Murrell
	Active Directories
	 
	Simon Murrell
	 
	Microsoft's Active Directories is to directories what ADO is to 
databases. It's also at the foundation of Windows 2000. All of which makes it 
important to read Mr Murrell's guide to ADSI for Delphi developers.
	
Delphi in the Office [Add-in, COM, Word, Excel, Outlook, Office, Article, Delphi] Delphi Informant 01-May-2000, vol. 6, no. 5 by Ron Loewy
	Delphi in the Office
	 
	Ron Loewy
	 
	Step by step, Mr Loewy demonstrates how to construct Office 2000 
Add-ins with Delphi. Now you can use COM to extend the capabilities of your 
favorite Microsoft Office tools, such as Word, Excel, and Outlook.
	
Dynamic Forms [Dynamic Form, Form, Dialog, Article, Delphi] Delphi Informant 01-May-2000, vol. 6, no. 5 by Ron Gray
	Dynamic Forms
	 
	Ron Gray
	 
	Need to create a Form or Dialog box on the fly? How about adding new 
controls - even database controls - at run time? The applications are endless, 
and Mr Gray shows us how it's done.
	
VisiBroker 3.3 for Delphi [CORBA, VisiBroker, Article, Delphi] Delphi Informant 01-May-2000, vol. 6, no. 5 by Eric Whipple
	VisiBroker 3.3 for Delphi
	 
	Eric Whipple
	 
	With VisiBroker 3.3, and its IDL2PAS compiler, Delphi can now create 
CORBA clients based on existing interfaces, written in other languages. Mr 
Whipple provides the details and demonstration client and server applications.
	
What are Pointers [Article, Visual C++] cplus.about.com 01-May-2000
	01-May-2000
	 
	01-May-2000
	  
	What are Pointers
	 
	An introduction to pointers
	
CreateDragImage for (Unlimited) Multiply Selected Items [Listview, Article, Visual C++] www.codeguru.com 01-May-2000 by Hao ( David ) TRAN
	CreateDragImage for (Unlimited) Multiply Selected Items
	 
	Hao ( David ) TRAN
	 
	Includes great Dual-ListCtrl Selection Manager Demo!
	
Automatic Font Handling Class [GDI, Update, Article, Visual C++] www.codeguru.com 01-May-2000 by Jamie Nordmeyer
	Automatic Font Handling Class
	 
	Jamie Nordmeyer
	 
	Wrapper class that greatly eases task of using fonts from within an 
application
	
JavaScript for Domino 101 [JavaScript, Domino, Article, Lotus Notes] Notes Advisor 01-May-2000
JAVASCRIPT FOUNDATIONS - Lotus Notes & Domino Advisor - May 2000 
	JavaScript for Domino 101
	 
	-N/A
	
Handle Human Resources on the Web [Web, Article, Lotus Notes] Notes Advisor 01-May-2000
Web Development - Lotus Notes & Domino Advisor - May 2000 
	Handle Human Resources on the Web
	 
	-N/A
	
Easy, Flexible Reporting [Reporting, Article, Lotus Notes] Notes Advisor 01-May-2000
Data Integration - Lotus Notes & Domino Advisor - May 2000 
	Easy, Flexible Reporting
	 
	-N/A
	
The Best of Both Worlds [Article, Lotus Notes] Notes Advisor 01-May-2000
Enterprise Integration - Lotus Notes & Domino Advisor - May 2000 
	The Best of Both Worlds
	 
	-N/A
	
Strengthen Domino Security [Domino, Security, Article, Lotus Notes] Notes Advisor 01-May-2000
Security - Lotus Notes & Domino Advisor - May 2000 
	Strengthen Domino Security
	 
	-N/A
	
CreateDragImage for (Unlimited) Multiply Selected Items [Article, Visual C++] www.earthweb.com 01-May-2000 by David Tran
	CreateDragImage for (Unlimited) Multiply Selected Items
	 
	David Tran
	 
	1-May-2000
	 
	1-May-2000
	 
	Allows nice user feedback when dragging multiple items from one 
listview to another
	
Automatic Font Handling Class [Article, Visual C++] www.earthweb.com 01-May-2000 by Jamie Nordmeyer
	Automatic Font Handling Class
	 
	Jamie Nordmeyer
	 
	1-May-2000
	 
	1-May-2000
	 
	Simple class to be used in the place of the MFC CFont class
	
A Database Tool for Client-Server Systems [Database, Article, Visual C++] www.codeproject.com 30-Apr-2000 by Xiangyang Liu
	A Database Tool for Client-Server Systems
	 
	Xiangyang Liu
	 
	Introducing a database tool for client-server systems
	
MDI Windows Manager Dialog [Document/View, MDI, Dialog, Article, Visual C++] www.codeproject.com 30-Apr-2000 by Ivan Zhakov
	MDI Windows Manager Dialog
	 
	Ivan Zhakov
	 
	Implementing "Windows..." dialog
	
Project Explorer [Macro, Add-in, Explorer, Article, Visual C++] www.codeproject.com 30-Apr-2000 by Mark Wickman
	Project Explorer
	 
	Mark Wickman
	 
	A DevStudio Add-in that adds the ability to launch windows explorer in 
the directory of the currently active project
	
Introduction to WTL, Part 1 [Windows Template Library, WTL, Article, Visual C++] www.codeproject.com 30-Apr-2000 by Ben Burnett
	Introduction to WTL, Part 1
	 
	Ben Burnett
	 
	The 'what' and 'where do I get it' of WTL
	
SHFILEOPSTRUCT and the SHFileOperation [File, Folder, Article, Visual C++] www.codeguru.com 30-Apr-2000 by John Z Czopowik
	SHFILEOPSTRUCT and the SHFileOperation
	 
	John Z Czopowik
	 
	Discusses some of the (poorly documented) issues regarding the use of 
the SHFileOperation function
	
Macro That Opens Resource File as Text [Macro, Article, Visual C++] www.codeguru.com 30-Apr-2000 by Roman A Surma
	Macro That Opens Resource File as Text
	 
	Roman A Surma
	 
	Automates tedious task of opening current resource file (.rc) as text
	
Macro That Opens Resource File as Text [Article, Visual C++] www.earthweb.com 30-Apr-2000 by Roman Surma
	Macro That Opens Resource File as Text
	 
	Roman Surma
	 
	30-Apr-2000
	 
	30-Apr-2000
	 
	Automates tedious task of opening current resource file (.rc) as text
	
Browse IIS Directory Structures [ISAPI, Article, Visual C++] www.codeguru.com 29-Apr-2000 by Schellnast Bernd
	Browse IIS Directory Structures
	 
	Schellnast Bernd
	 
	ISAPI Extension that displays (in an HTML Web page) the directory 
structure of an IIS Web Server
	
CDirTreeCtrl for displaying or selecting Folders and Files [Treeview, Update, Article, Visual C++] www.codeguru.com 29-Apr-2000 by Michael Hofer
	CDirTreeCtrl for displaying or selecting Folders and Files
	 
	Michael Hofer
	 
	Very popular file/folder Treeview that can be used on either a dialog 
or a view
	
DirTreeCtrl - for displaying folders and files [Article, Visual C++] www.earthweb.com 29-Apr-2000 by Michael Hofer
	DirTreeCtrl - for displaying folders and files
	 
	Michael Hofer
	 
	29-Apr-2000
	 
	29-Apr-2000
	 
	Very popular file/folder treeview that can be used on either a dialog 
or a view
	
COM delegation using the COM channel hook mechanism [COM, DCOM, Delegate, Article, Visual C++] www.codeproject.com 28-Apr-2000 by Pavlo Barvinko
	COM delegation using the COM channel hook mechanism
	 
	Pavlo Barvinko
	 
	Allows a low-privileged COM client to Delegate calls to a COM server 
that is running under a higher-priveleged NT user account.
	
ObjectLookup Utility [COM, DCOM, Article, Visual C++] www.codeproject.com 28-Apr-2000 by Christian Skovdal Andersen
	ObjectLookup Utility
	 
	Christian Skovdal Andersen
	 
	A small utility for looking up an object based on a CLSID or progid
	
Using the std::sort() Method [C++, MFC, STL, Article, Visual C++] www.codeproject.com 28-Apr-2000 by Paul Wolfensberger
	Using the std::sort() Method
	 
	Paul Wolfensberger
	 
	An introduction to sorting using STL
	
The CPerfTimer timer class [Date, Time, Article, Visual C++] www.codeproject.com 28-Apr-2000 by Dean Wyant
	The CPerfTimer timer class
	 
	Dean Wyant
	 
	This class encapsulates QueryPerformanceCounter for high precision 
timing
	
Cool WTL Menu with Gradient Sidebar [Windows Template Library, WTL, Menu, Icon, Article, Visual C++] www.codeproject.com 28-Apr-2000 by Ramon Smits
	Cool WTL Menu with Gradient Sidebar
	 
	Ramon Smits
	 
	An article about changing the look of WTL Icon menu
	
ATL Masked Edit Control [ATL, COM, Article, Visual C++] www.codeguru.com 28-Apr-2000 by Fred Forester
	ATL Masked Edit Control
	 
	Fred Forester
	 
	Implements popular CodeGuru Masked Edit control in ATL
	
Passing Binary Data in COM [ATL, COM, Article, Visual C++] www.codeguru.com 28-Apr-2000
	Passing Binary Data in COM
	 
	-N/A
	 
	Illustrates most efficient manner of passing binary data via COM
	
ATL Masked Edit Control [Article, Visual C++] www.earthweb.com 28-Apr-2000 by Fred Forester
	ATL Masked Edit Control
	 
	Fred Forester
	 
	28-Apr-2000
	 
	28-Apr-2000
	 
	MEdit is an ATL-based version of an MEdit control that appears here at 
CodeGuru
	
Passing Binary Data in COM [Article, Visual C++] www.earthweb.com 28-Apr-2000
	Passing Binary Data in COM
	 
	-N/A
	 
	28-Apr-2000
	 
	28-Apr-2000
	 
	Illustrates most efficient manner of passing binary data via COM
	
Deleting a Folder and its Contents in Windows NT (using: Windows NT 4.0) [Command Prompt, Windows NT, Tip] Woody's Windows Watch 27-Apr-2000
 
 
Deleting a Folder and its Contents in Windows NT
ZDTips: Windows NT


If you want to delete a folder, including all files and folders within the 
folder, you can use the rd Command Prompt utility. (This command is very 
similar to the DOS deltree command.)

To delete a folder and all of its contents, type the following:

rd x:\folder /S

Replace x:\folder with the drive letter and name of the folder you want to 
delete. If you don't want rd to verify that you really do want to delete the 
folder and everything below it, you can type the following command:

rd x:\folder /S /Q

Adding the /Q parameter runs rd in "quiet" mode--which means you won't be 
prompted to confirm the deletion of the folder and its contents. (So be 
careful!!)

 
Performance Comparison - FSO vs API (using: Visual Basic 6.0) [File, FileSystemObject Object, FindFirstFile(), Visual Basic, Tip] www.mvps.org/vbnet 27-Apr-2000 by Randy Birch
Whenever someone in the newsgroups ask about performing file searches in a 
specific folder, you can count on three different answers - use Dir(), use the 
FileSystemObject (FSO), and use the FindFirstFile APIs.

I always recommend the latter ... and then put up with comments about the 
amount of code required to actually do it compared to the Dir or FSO method. 
The FSO method looks so compact ... but what is the real price paid for using 
an unnecessary COM object? The illustration shows the results on my system for 
a non-recursive ListView listing of all files in my \winnt\system32\ folder.  
The demo is as simple as possible to reduce unneeded overhead, and both methods 
return identical data.

The FileSystemObject method uses the FSO and one additional routine to populate 
the ListView. The API method uses FindFirstFile/FindNextFile/FindClose to 
perform the search, along with SHGetFileInfo for obtaining the file type and 
FileTimeToSystemTime for obtaining the file date. In both methods the elapsed 
time is tracked using the GetTickCount API.

The first illustration shows the comparative results for the non-recursive 
search for files in my \winnt\ststem32\ folder, populating the ListView with 
name, size, date, and file-type info. The second illustrations shows the result 
of the same searches, but with the code to populate the SubItem code commented 
out, eliminating some of the ListView overhead as well as API and FSO property 
calls. The API methods have been tweaked with suggestions provided by Brad 
Martinez, providing even better performance compared to the FSO.

Regardless of the amount of data displayed, tests prove that a well-written API 
method blows the doors off of a similar FileSystemObject method. Sure it 
involves more code, but the end results should be obvious to anyone wishing to 
maximize the performance of their application.

 Form Code 
  
Ad to a form a ListView (ListView1), two command buttons (Command1, Command2) 
and four textboxes (Text1/Text2 f ... (cont.)
Accessing Microsoft Access Databases in ASP using ADO [Active Server Pages, Access, Database, ASP, ADO, Article, Visual C++] www.codeproject.com 27-Apr-2000 by Chris Maunder
	Accessing Microsoft Access Databases in ASP using ADO
	 
	Chris Maunder
	 
	A simple introduction to using Access .mdb databases in your ASP pages
	
Implementing Tooltips for Menus [Menu, Article, Visual C++] www.codeguru.com 27-Apr-2000 by Marco Dehn
	Implementing Tooltips for Menus
	 
	Marco Dehn
	 
	Illustrates how to implement tooltips for menus by overriding some key 
CMainFrame functions
	
Getting ComboBox Strings to Appear with an ATL Project [ATL, COM, Article, Visual C++] www.codeguru.com 27-Apr-2000 by Joe Schmitt
	Getting ComboBox Strings to Appear with an ATL Project
	 
	Joe Schmitt
	 
	Shows how to overcome Microsoft-acknowledged bug in ATL where ComboBox 
strings don't appear at runtime
	
Getting ComboBox Strings to Appear with an ATL Project [Article, Visual C++] www.earthweb.com 27-Apr-2000 by Joe Schmitt
	Getting ComboBox Strings to Appear with an ATL Project
	 
	Joe Schmitt
	 
	27-Apr-2000
	 
	27-Apr-2000
	 
	This article illustrates how to overcome a bug in ATL that deals with 
creating a dialog resource with a combobox that contains string initialization 
data
	
Implementing Tooltips for Menus [Article, Visual C++] www.earthweb.com 27-Apr-2000 by Marco Dehn
	Implementing Tooltips for Menus
	 
	Marco Dehn
	 
	27-Apr-2000
	 
	27-Apr-2000
	 
	Illustrates how to implement tooltips for menus by overriding some key 
CMainFrame functions
	
cThumbnailViewer .... How to create an thumbnail image viewer [Image Viewer, Thumbnail, Visual Basic, VB Code Module] www.codeoftheweek.com 26-Apr-2000, no. 121
Requirements

Visual Basic 5.0 or higher.

In this Issue

In this issue we discuss how to create an thumbnail image viewer.
The basic idea here is to create a scrollable window that can
display many images at once.  Most image management programs
contain this feature.

cThumbnailViewer

This class takes a form with a couple of controls on it (two
picture boxes and a vertical scroller control) and turns it into a
easy-to-use image viewer.   It supports three different image
sizes.

We are planning on expanding this module to include routines to
aid in the creation of a full-blown image viewer.  With the
proliferation of digital cameras and online images we have been
receiving many requests for routines to help manage these
graphics.  If you have any suggestions, drop us an email at
image@codeoftheweek.com

NOTE:  You can use last weeks' issue to create thumbnail versions
of all the graphics within a directory and then point this viewer
class to the directory you created the thumbnails in.  This can
speed up the performance of this thumbnail viewer tremendously.
Another useful feature would be the autogeneration of the
thumbnail images on the fly to speed up future viewing of the
images.


Properties

Public ParentForm As Form

The form that will be the image viewer form.  This form must have
a picture box (with an Index value of zero) control within a
container control (another picture box works fine) and a vertical
scroller  (VScrollBar) control.


Public PictureFolder As String

Folder name which contains the graphics to display.  This should
be the fully qualfied path name, such as c:\windows or
e:\pics\thumbs


Public ThumbnailSize As eThumbSize

This determines the size of the thumbnail graphic.  It can be one
of the following: ethSmall, ethMedium, ethLarge.


Public WithEvents Scroller As VScrollBar

This property needs to be set to the vertical scroller that is on
the image form.  The class will automatically manage this scroller
and respond to th ... (cont.)
SQL Server and Database Enumerator [Database, SQL Server, Article, Visual C++] www.codeproject.com 26-Apr-2000 by Santosh Rao
	SQL Server and Database Enumerator
	 
	Santosh Rao
	 
	A class that helps enumerate SQL servers, databases and languages.
	
Class (CShellList) to Retrieve All Icon File Types [ImageList Control, Article, Visual C++] www.codeguru.com 26-Apr-2000 by Nathan Moinvaziri
	Class (CShellList) to Retrieve All Icon File Types
	 
	Nathan Moinvaziri
	 
	Shows how to use the Shell API function, SHGetFileInfo, to retrieve 
file information such as icon file types
	
Minimize-to-SysTray for Dialog-Based Applications [Shell Programming, Article, Visual C++] www.codeguru.com 26-Apr-2000 by Warren Young
	Minimize-to-SysTray for Dialog-Based Applications
	 
	Warren Young
	 
	Illustrates how to have your dialog based applications minimize to the 
system tray instead of the task bar
	
Minimize-to-SysTray for Dialog-Based Applications [Article, Visual C++] www.earthweb.com 26-Apr-2000 by Warren Young
	Minimize-to-SysTray for Dialog-Based Applications
	 
	Warren Young
	 
	26-Apr-2000
	 
	26-Apr-2000
	 
	Minimize-to-systray is a common UI idiom these days, but Windows 
doesn't make this task easy
	
Asynchronous Sockets Class as an ActiveX Control [Network, Article, Visual C++] www.codeguru.com 25-Apr-2000 by G Balamurali
	Asynchronous Sockets Class as an ActiveX Control
	 
	G Balamurali
	 
	Non-blocking socket solution based on MFC's CASyncSocket and 
implemented as an ActiveX control for developing other applications
	
Logging 404's using Filter DLL [ISAPI, Article, Visual C++] www.codeguru.com 25-Apr-2000 by Chiraz
	Logging 404's using Filter DLL
	 
	Chiraz
	 
	Simple ISAPI filter (and maintenance application) that logs 404 events
	
Asynchronous Sockets Class as an ActiveX Control [Article, Visual C++] www.earthweb.com 25-Apr-2000
	Asynchronous Sockets Class as an ActiveX Control
	 
	-N/A
	 
	25-Apr-2000
	 
	25-Apr-2000
	 
	VC++ code to perform non-blocking socket communication
	
Logging 404's using Filter DLL [Article, Visual C++] www.earthweb.com 25-Apr-2000
	Logging 404's using Filter DLL
	 
	-N/A
	 
	25-Apr-2000
	 
	25-Apr-2000
	 
	VC++ code to list Web site 404s
	
MDI Development in Delphi. Part I. [Article, Delphi] delphi.about.com 25-Apr-2000
	25-Apr-2000
	 
	25-Apr-2000
	 
	MDI Development in Delphi. Part I.
	 
	Constructing "multiple document interface" application with Delphi. 
Examining MDI parent/child relationship, menus and some most important MDI 
parent form properties.
	
Create Multiple Level Subdirectories [File, Folder, Article, Visual C++] www.codeguru.com 24-Apr-2000 by Brad Guttilla
	Create Multiple Level Subdirectories
	 
	Brad Guttilla
	 
	Article moved from Misc section
	
View Desktops Remotely [Network, Update, Article, Visual C++] www.codeguru.com 24-Apr-2000 by Andy Bantly
	View Desktops Remotely
	 
	Andy Bantly
	 
	Updated client and server code
	
SysInfo .... A non-visible control that gathers system information about the operating system, disk space and memory, processor details and file version information from a selected module [Visual C++, ActiveX Control] www.organicsoftware.net 24-Apr-2000
A non-visible control that gathers system information about the operating 
system, disk space and memory, processor details and file version information 
from a selected module.  The screenshot shows a client dialog-based application 
using the control to display all this information.
Viewer Desktop Remotely [Article, Visual C++] www.earthweb.com 24-Apr-2000
	Viewer Desktop Remotely
	 
	-N/A
	 
	24-Apr-2000
	 
	24-Apr-2000
	 
	VC++ projects to create a Sockets programming knowledgebase
	
COM Delegation Using the COM Channel Hook Mechanism [ATL, COM, Article, Visual C++] www.codeguru.com 23-Apr-2000 by Paul Barvinko
	COM Delegation Using the COM Channel Hook Mechanism
	 
	Paul Barvinko
	 
	Allows a COM client to delegate calls to a COM server that is running 
under a higher-priveleged NT user account.
	
COM Delegation Using the COM Channel Hook Mechanism [Article, Visual C++] www.earthweb.com 23-Apr-2000
	COM Delegation Using the COM Channel Hook Mechanism
	 
	-N/A
	 
	23-Apr-2000
	 
	23-Apr-2000
	 
	VC++ code to provide a channel hook mechanism for COM delegation
	
Class to manipulate UNICODE string on Window 95/98 [String, Update, Article, Visual C++] www.codeguru.com 22-Apr-2000 by Kim, Sang-Yup
	Class to manipulate UNICODE string on Window 95/98
	 
	Kim, Sang-Yup
	 
	Updated article and demo
	
Class to manipulate UNICODE string on Window 95/98 [Article, Visual C++] www.earthweb.com 22-Apr-2000
	Class to manipulate UNICODE string on Window 95/98
	 
	-N/A
	 
	22-Apr-2000
	 
	22-Apr-2000
	 
	VC++ code for a class to manipulate UNICODE strings
	
Using VB to load a Web page (using: Visual Basic 6.0) [HTML, Microsoft Internet Transfer Control, Web, DHTML, Visual Basic, Tip] www.devx.com 20-Apr-2000 by Michael Gellis
Is there a way (using VB) to load a Web page (without actually showing the page 
through a browser or otherwise) and then extract the HTML code for use in 
extracting data (whether by scanning the actual HTML or saving it as a text 
file for later automated scanning)?

Yes there is. Place the Microsoft Internet Control on a form, navigate to the 
page you want to scan, using the Navigate method. Once the page has been 
downloaded (beware downloading is asynchronous) you can use the WebBrowser's 
Document object to gain entry into the downloaded document's DHTML object 
model. The following code will return all the HTML in a document: 

s=WebBrowser1.Document.All(0).OuterHTML
Convert a Text File to XML (using: Visual Basic 6.0) [Document Object Model, DOM, FielSystemObject Object, XML, Visual Basic, Article, Tip] www.devx.com 19-Apr-2000 by Kurt Cagle
Convert a Text File to XML 
Harness the XML Document Object Model to create generic functions for dealing 
with straight text 

By Kurt Cagle 

 
  Here's an interesting conundrum. You have an application that doesn't have an 
object model (or has one that's so hideously complex that you'd just as soon 
not pay a programmer three months' wages just to build a matching automation 
interface). The details of the program are unimportant, except that it can 
output a comma or tab-separated text file; it can produce a text file with 
fields of a fixed length; or it can work with an INI file or some similar 
minimally structured text file. 
These sort of text files are the poor cousins of the database world. They often 
contain sufficiently small numbers of records, which makes them ideal to work 
with as XML files. With the data in an XML file, you can perform queries, sort 
and filter the data, and even handle multilayer formats—all with a common set 
of tools. This data file could be sent to a different machine without worrying 
about such coding conventions as whether you're using a comma and I'm using a 
tab to separate data. Once in an XML file, you can easily transform the data 
using XSL (Extensible Stylesheet Language) into tables, combo boxes, or far 
more sophisticated controls or behaviors. In other words, the record becomes 
vastly easier to manipulate anywhere. 

If this is the case, then it should be easy to create an XSL filter or perhaps 
a schema to load this data into an XML file. Unfortunately, as useful as this 
would be, the fundamental problem that any text-to-XML conversion faces is that 
without tags, an XSL filter or schema sees such files as undifferentiated 
blobs. However, here's one case where you can harness the XML Document Object 
Model itself to create a few fairly generic functions for dealing with straight 
text. 

Delimited text to XML

Consider a simple text database that contains information about employees in 
your company: 

name,dateOfBirth ... (cont.)
Validate Data with Regular Expressions and XSL (using: Visual Basic 6.0) [FileSystemObject Object, Regular Expression, XSL, Visual Basic, Article, Tip] www.devx.com 19-Apr-2000 by Kurt Cagle
Validate Data with Regular Expressions and XSL 
By Kurt Cagle 

 
  Extensible Stylesheet Language (XSL) has slowly been gaining a reputation as 
the SQL of the hierarchical data world. Even with only the partial 
implementation that Microsoft's XSL offers, you can perform surprisingly 
complex queries. Yet the language has been hamstrung somewhat in that the 
current XSL query language can only perform queries based upon the complete 
text of a text node. There is no clean way to search all nodes and return nodes 
that include an expression within a larger block of text, or that can validate 
specific types of text. 
Furthermore, there are times where you need to include parameters in your XML 
(or XSL) that change depending upon external conditions (the XSL targets 
different browsers, the return XML must work against specific records passed 
through ASP parameters, and so forth). XML does support entities, of course, 
but in the current implementation, the entities must be defined within a DTD 
(useful for documents, but worthless for programmatic parameters). Microsoft's 
XML Schema notation as it exists right now simply doesn't support entities. 

In both of these cases (and several others), you need a mechanism that can 
search at a lower level of granularity than the XML text element. Fortunately, 
the problem of searching within strings of text is extremely common, and over 
the years a number of tools have arisen to solve that particular problem set. 
The most powerful (and most pervasive) are the constructs known as regular 
expressions. 

Introducing regular expressions

Regular expressions are staples in the Unix world—indeed, whole languages are 
built around them (Perl, Python, and Tcl, to name a few). But surprisingly they 
have only begun creeping into the Windows world fairly recently, primarily in 
the scripting languages, JavaScript and VBScript, although you can use them to 
good effect in languages like Visual Basic and Java. 

With a regular expression, you ... (cont.)
CFraction: a double / fraction / String conversion class [C++, MFC, STL, String, Article, Visual C++] www.codeproject.com 18-Apr-2000 by Dean Wyant
	CFraction: a double / fraction / String conversion class
	 
	Dean Wyant
	 
	A class that converts between doubles, strings and fractional 
representations
	
Programming Toolbar Chevrons [Toolbar, Docking Window, Article, Visual C++] www.codeproject.com 18-Apr-2000 by S Rajasekar
	Programming Toolbar Chevrons
	 
	S Rajasekar
	 
	An introduction to using the cool new toolbar chevrons
	
Animated Dialog Windows [Font, GDI, GUI, Dialog, Article, Visual C++] www.codeproject.com 18-Apr-2000 by Anton Stuck
	Animated Dialog Windows
	 
	Anton Stuck
	 
	A class that provides some simple, yet spectacular window animation 
effects. Try the demo!
	
Arrays in Object Pascal [Article, Delphi] delphi.about.com 18-Apr-2000
	18-Apr-2000
	 
	18-Apr-2000
	 
	Arrays in Object Pascal
	 
	Delphi For Beginners: Understanding and using array data types in 
Delphi.
	
Convert a CString value to integer value in order to do computation (using: Visual C++ 6.0) [Conversion, CString Class, Integer, int, Visual C++, Tip] www.devx.com 17-Apr-2000
How can I convert a CString value to integer value in order to do computation?

CString StrInt = "23";
int i = _ttoi(StrInt);

There is also _ttol, _ttoi64 available.
Overloading Operator << for a User-Defined Type (using: Visual C++ 6.0) [C++, Overloading, Visual C++, Tip] www.devx.com 17-Apr-2000 by Danny Kalev
Overloading Operator << for a User-Defined Type
By Danny Kalev


One of the advantages of using the iostream objects is that you can customize 
them to support your own classes. I will show how to overload ostream's 
operator << so that it can display a user-defined object. 

Suppose you declared the following class: 


  class student
  {
  private:
    string name;
    string department;
  public:
    student(string n = "", string dep = 0) 
    : name(n), department(dep) {}

    string get_name() const { return name; }
    string get_department () const { return department; }
    void set_name(const string& n) { name=n; }
    void set_department (const string& d) {department=d;}
  };

And you want to be able to use it in a cout statement as follows: 


  student st("Bill Jones", "Zoology"); // create instance
  cout<
Get the contents of the system variable "PATH" (using: Visual C++ 6.0) [getenv(), MFC, PATH, System Variable, Environment Variable, Visual C++, Tip] www.devx.com 17-Apr-2000 by Danny Kalev
Is there any method (MFC, Win32) to get the contents of the systemvariable 
"PATH"?

Sure there is. Use the standard function getenv() for this purpose: 

#include 
{
  char * descr = getenv("PATH");
}

After the getenv() call, the pointer descr will point to the string description 
of the environment variable path. 
basImage .... How to take any image and create a thumbnail version of it [Image, PictureBox Control, Thumbnail, Visual Basic, VB Code Module] www.codeoftheweek.com 17-Apr-2000, no. 120
Requirements

Visual Basic 5.0 or higher.

In this issue we discuss how to take any image and create a
thumbnail version of it.

basImage

This module contains a single routine called CreateThumbnail that
takes an image and creates a new version of the image in bitmap
format that can be used as a thumbnail version of the original
graphic.  This is useful for any application that needs to show
many large images in a smaller space (such as an image viewing
program).  It can also be useful for generating thumbnail graphics
for use on the web (i.e. catalog images, product images, etc)

We are planning on expanding this module to include routines to
aid in the creation of a full-blown image viewer.  With the
proliferation of digital cameras and online images we have been
receiving many requests for routines to help manage these
graphics.  If you have any suggestions, drop us an email at
image@codeoftheweek.com


Methods

Public Sub CreateThumbnail(Picbox As PictureBox, sImageFile As String, 
sThumbnailFile As String)

This routine requires the existence of a PictureBox on a form.
It does not have to be a visible PictureBox.  picbox is the
PictureBox on your form.  sImageFile is the name of the image file
to load into picbox for which you want to create a thumbnail
graphic.  sThumbnailFile is the file that the thumbnail graphic
will be saved into.  It should have an extension of BMP since the
SavePicture method that this routine uses only supports the saving
of bitmaps.

It will not change the original graphic in any way.

Any errors which occur in this routine (such as a missing file)
will be raised to the caller.



Sample Usage

This example will take the image file called e:\pics\p1010023.jpg
and convert it to a thumbnail called e:\pics\thumb-p1010023.bmp.

    CreateThumbnail pic, "e:\pics\p1010023.jpg", "e:\pics\thumb-p1010023.bmp"
The Microsoft Message Queue [Windows 2000, Article, Visual C++] www.codeproject.com 16-Apr-2000 by Santosh Rao
	The Microsoft Message Queue
	 
	Santosh Rao
	 
	An introduction to the Microsoft Message Queue (MSMQ)
	
Creating DeskBands with an ATL Object Wizard [ATL, ATL Object Wizard, COM, Article, Visual C++] www.codeproject.com 15-Apr-2000 by Erik Thompson
	Creating DeskBands with an ATL Object Wizard
	 
	Erik Thompson
	 
	An ATL Object Wizard that creates an DeskBand COM Object implementation
	
Transparent Scrolling Credits [Bitmap, Palette, Color, Article, Visual C++] www.codeproject.com 15-Apr-2000 by Jim Connor
	Transparent Scrolling Credits
	 
	Jim Connor
	 
	Scroll Colored text and bitmaps transparently over a bitmapped 
background.
	
CComboBox with disabled items [Combobox, List Control, CComboBox Class, Article, Visual C++] www.codeproject.com 15-Apr-2000 by Petr Novotny
	CComboBox with disabled items
	 
	Petr Novotny
	 
	combobox with disabled items
	
CListBox with disabled items [Combobox, List Control, CListBox Class, Article, Visual C++] www.codeproject.com 15-Apr-2000 by Petr Novotny
	CListBox with disabled items
	 
	Petr Novotny
	 
	Listbox with disabled items.
	
Simple wizard property sheet class [Property Sheet, CPropertySheet Class, Article, Visual C++] www.codeproject.com 15-Apr-2000 by Petr Novotny
	Simple wizard property sheet class
	 
	Petr Novotny
	 
	A simply class to turn CPropertySheet into wizard mode without needing 
to alert the property pages within
	
Copy Location Shell Extension [Shell Programming, Shell Extension, File, Folder, Explorer, Article, Visual C++] www.codeproject.com 15-Apr-2000 by Itay Szekely
	Copy Location Shell Extension
	 
	Itay Szekely
	 
	This shell extension adds the ability to copy File and Folder names 
from the Windows Explorer to the clipboard.
	
Communicating with Remote Processes without DCOM or CORBA [Thread, Process, Inteprocess Communication, DCOM, Article, Visual C++] www.codeproject.com 15-Apr-2000 by Xiangyang Liu
	Communicating with Remote Processes without DCOM or CORBA
	 
	Xiangyang Liu
	 
	Introduce a new interprocess communication tool
	
Create your own controls - the art of subclassing [Control, Common Control, MFC, Article, Visual C++] www.codeproject.com 14-Apr-2000 by Chris Maunder
	Create your own controls - the art of subclassing
	 
	Chris Maunder
	 
	An introduction to subclassing the Windows Common Controls using MFC
	
A utility to stagger processes at Windows Startup [Thread, Process, Inteprocess Communication, Article, Visual C++] www.codeproject.com 14-Apr-2000 by Philip McGahan
	A utility to stagger processes at Windows Startup
	 
	Philip McGahan
	 
	This utility uses very little system resources to launch apps base on a 
timer.
	
basLogin .... How to retrieve the username used to login to Windows [Username, WNetGetUser(), Visual Basic, VB Code Module] www.codeoftheweek.com 12-Apr-2000, no. 122
Requirements

Visual Basic 4.0 32-bit or higher.

In this issue we discuss how to retrieve the username used to
login to Windows.

basLogin

This module makes it easy to get the username used to login to
Windows.  This routine is most useful to avoid having to prompt
your users with additional login information in your applications.
You can use the built-in operating system security to provide
authentication.  This is most effective in Windows NT where
security can be very high.  One example of this is how Microsoft
Outlook works.


Functions

Public Function LoginName() As String

Returns the username used to login to Windows.  If an error
occurs it will be raised to the calling routine.


Sample Usage

Simply shows a message box with the current username.

MsgBox LoginName()
Some useful additions for the C++ standard library [C++, MFC, STL, Article, Visual C++] www.codeproject.com 12-Apr-2000 by Daniel Lohmann
	Some useful additions for the C++ standard library
	 
	Daniel Lohmann
	 
	Defines some TCHAR compatible STL elements and gives you an 
std::ostream to send output to the debugger windows.
	
Write a C++ class [Macro, Add-in, Article, Visual C++] www.codeproject.com 12-Apr-2000 by Dhananjay Gune
	Write a C++ class
	 
	Dhananjay Gune
	 
	A Macro which writes an empty C++ class.
	
Clock .... A simple HH:MM:SS alarm clock [ATL Control, Visual C++, ActiveX Control] www.organicsoftware.net 12-Apr-2000
A simple HH:MM:SS alarm clock.  You can get/set the hours/minutes for the alarm 
and/or the clock time.  You can also set the sound to be used for the alarm, 
and turn the alarm on/off.  The foreground and background colors are also 
exposed properties.  The user has access to design-time properties at runtime 
via the right mouse button.
ColorSpace .... A color selection composite control which exposes colors in both RGB (Red-Green-Blue) and HSV (Hue-Saturation-Luminance Value) forms [ATL Control, ActiveX Control, Visual C++] www.organicsoftware.net 30-Apr-2000
A color selection composite control which exposes colors in both RGB 
(Red-Green-Blue) and HSV (Hue-Saturation-Luminance Value) forms. (With many 
thanks to Rajiv Ramachandran and the developer.com Codeguru site).
4 Different Methods to display the Find Files Dialog [Find Files Dialog, Article, Visual Basic] www.earthweb.com 11-Apr-2000
	4 Different Methods to display the Find Files Dialog
	 
	-N/A
	 
	11-Apr-2000
	 
	11-Apr-2000
	 
	VB code to display a Find Files dialog box
	
A Visual Basic PaintBrush / Imaging Program [Imaging, Article, Visual Basic] www.earthweb.com 11-Apr-2000
	A Visual Basic PaintBrush / Imaging Program
	 
	-N/A
	 
	11-Apr-2000
	 
	11-Apr-2000
	 
	VB code to create an imaging application
	
Dynamic Link Libraries and Delphi [Article, Delphi] delphi.about.com 11-Apr-2000
	11-Apr-2000
	 
	11-Apr-2000
	 
	Dynamic Link Libraries and Delphi
	 
	Everything you ever wanted to know about DLLs and Delphi but didn't 
know where to look for answers (or were to afraid to ask).
	
The future of Visual Basic [Article, Visual Basic] visualbasic.about.com 10-Apr-2000
	10-Apr-2000
	 
	10-Apr-2000
	  
	The future of Visual Basic
	 
	Your VB guide takes a look at a few of the features we can expect in 
the next version of Visual Basic.
	
A 'mouse repeat' function [C++, MFC, STL, Article, Visual C++] www.codeproject.com 09-Apr-2000 by Pete Sackett
	A 'mouse repeat' function
	 
	Pete Sackett
	 
	A function that simulates the keyboard repeat behavior for mouse clicks
	
Quick and Dirty Collection Class Notes [C++, MFC, STL, Article, Visual C++] www.codeproject.com 09-Apr-2000 by Joe Harleman
	Quick and Dirty Collection Class Notes
	 
	Joe Harleman
	 
	An article describing MFC Collection Classes
	
String Tokenizer class [C++, MFC, STL, String, Article, Visual C++] www.codeproject.com 09-Apr-2000 by Zoly Farkas
	String Tokenizer class
	 
	Zoly Farkas
	 
	A customizable string tokenizer
	
A snap to screen border dialog class [Dialog, Windows Programming, Article, Visual C++] www.codeproject.com 09-Apr-2000 by François Gagné
	A snap to screen border dialog class
	 
	François Gagné
	 
	Dialog class that implement a snap-to-screen-border feature like Winamp
	
Shell Extension to make executables as services [Shell Programming, Shell Extension, Article, Visual C++] www.codeproject.com 09-Apr-2000 by Sardaukar
	Shell Extension to make executables as services
	 
	Sardaukar
	 
	A 'not-so-simple' shell extension allowing executable to be run as 
services
	
CSNTPClient - An SNTP Implementation [Internet, Network, MFC, Article, Visual C++] www.codeproject.com 08-Apr-2000 by P J Naughter
	CSNTPClient - An SNTP Implementation
	 
	P J Naughter
	 
	A collection of freeware MFC classes to encapsulate the SNTP protocol.
	
CTraceRoute v1.0 [Internet, Network, MFC, Article, Visual C++] www.codeproject.com 08-Apr-2000 by P J Naughter
	CTraceRoute v1.0
	 
	P J Naughter
	 
	A freeware MFC class to implement traceroute functionality.
	
W3Mfc v1.11 [Internet, Network, MFC, Article, Visual C++] www.codeproject.com 08-Apr-2000 by P J Naughter
	W3Mfc v1.11
	 
	P J Naughter
	 
	A collection of freeware MFC classes to implement a simple Web server.
	
Making UNIX and Windows NT Talk [Cross-platform Development, C++, Networking, Socket, Threading, Unix, Windows NT, Book] Purchased 27-Mar-2000, $69.95

C++ tutorials include documents and examples (using: Visual C++) [C++, OOP, Tutorial, Visual C++, Example] CompuServe 06-Apr-2000
A series of 12 lessons teaching C++ programming for a person with a
working knowledge of C.  Careful attention is given to a full description
of Object Oriented Programming and how to use it
Frhed .... Binary file hex editor [C++, Hex, Visual C++, EXE] www.codeproject.com 06-Apr-2000 by Raihan Kibria
Frhed - free hex editor is a free binary file editor for Windows 95/98/Nt4. 
Source code in C++ is included (does not use MFC, only the Win32 API). Features 
include cut&paste (for binary and text data), find and replace (binary and/or 
text), bookmarking, file comparison, customizable colors and font (ANSI or OEM 
display), partially opening large files and more. 
VBLikeCombo - A Visual Basic Style Combo Box [Combobox, List Control, Article, Visual C++] www.codeproject.com 06-Apr-2000 by J Cardinal
	VBLikeCombo - A Visual Basic Style Combo Box
	 
	J Cardinal
	 
	Creates a combo box similar to those in Visual Basic.
	
BUG in Visual C++ access for destructors with virtual base classes [C++, MFC, STL, Article, Visual C++] www.codeproject.com 06-Apr-2000 by Roger Onslow
	BUG in Visual C++ access for destructors with virtual base classes
	 
	Roger Onslow
	 
	When inheriting from a virtual base class the access specifier for the 
destructor is ignored
	
Wrapper Classes for MFC list classes the extend their functionality (using: Visual C++ 6.0) [Smart List, Wrapper Class, MFC, Article, Visual C++] www.codeproject.com 06-Apr-2000 by Simon Hughes
	Simon Hughes
	 
	Wrapper Classes for MFC list classes the extend their functionality
	 
	
	
frhed - free hex editor [Tip, Article, Visual C++] www.codeproject.com 06-Apr-2000 by Raihan Kibria
	frhed - free hex editor
	 
	Raihan Kibria
	 
	A free hex editor with C++ source
	
CS-RCS - a free revision control system for Windows (using: Visual C++ 6.0) [Tool, Component, Article, Visual C++] www.codeproject.com 06-Apr-2000
	CS-RCS - a free revision control system for Windows
	 
	Component Software
	 
	Based on GNU RCS, CS-RCS is fully integrated with Windows, providing 
robust and intuitive configuration management and change control
	
SmartHelp 1.01 [Macro, Article, Visual C++] www.codeguru.com 05-Apr-2000 by Goran Mitrovic
	SmartHelp 1.01
	 
	Goran Mitrovic
	 
	Update to popular Visual Studio add-in
	
System Information Class [System, Article, Visual C++] www.codeguru.com 05-Apr-2000 by Tien Tran Ngoc
	System Information Class
	 
	Tien Tran Ngoc
	 
	Minor bugs fixed and readme.txt added
	
Simple Numerical Formula Parser [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 05-Apr-2000 by Ralf Wirtz
	Simple Numerical Formula Parser
	 
	Ralf Wirtz
	 
	
	
Colored/Blinking Controls and Dialogs with any Font [Article, Visual C++] www.earthweb.com 05-Apr-2000 by Yury Goltsman
	Colored/Blinking Controls and Dialogs with any Font
	 
	Yury Goltsman
	 
	5-Apr-2000
	 
	5-Apr-2000
	 
	In this article I want to introduce two template classes, that can help 
you in simple dialog development. Very frequently we try to set different color 
or font to static, editbox or another control in our
	
System Information Class [Article, Visual C++] www.earthweb.com 05-Apr-2000 by Tien Tran Ngoc
	System Information Class
	 
	Tien Tran Ngoc
	 
	5-Apr-2000
	 
	5-Apr-2000
	 
	C++ Class for retrieving almost all the information in a Windows system 
with only two lines of code
	
Simple Numerical Formula Parser [Article, Visual C++] www.earthweb.com 05-Apr-2000
	Simple Numerical Formula Parser
	 
	-N/A
	 
	5-Apr-2000
	 
	5-Apr-2000
	 
	VC++ code for a class to parse formulas
	
Handling right-click on the CListCtrl header control [Article, Visual C++] www.earthweb.com 04-Apr-2000
	Handling right-click on the CListCtrl header control
	 
	-N/A
	 
	4-Apr-2000
	 
	4-Apr-2000
	 
	VC++ code to determine a right-click on a header control
	
A Tab Control - VB5/6 [Tab Control, Article, Visual Basic] www.earthweb.com 04-Apr-2000
	A Tab Control - VB5/6
	 
	-N/A
	 
	4-Apr-2000
	 
	4-Apr-2000
	 
	VB code to create a tabbed dialog control
	
String Function - CountWords [String, Article, Visual Basic] www.earthweb.com 04-Apr-2000
	String Function - CountWords
	 
	-N/A
	 
	4-Apr-2000
	 
	4-Apr-2000
	 
	VB code to return the number of words in a string
	
String Functions - Library of Routines [String, Article, Visual Basic] www.earthweb.com 04-Apr-2000
	String Functions - Library of Routines
	 
	-N/A
	 
	4-Apr-2000
	 
	4-Apr-2000
	 
	VB library of string-manipulation code
	
A Dynamic Timer Class [Timer, Article, Visual Basic] www.earthweb.com 04-Apr-2000
	A Dynamic Timer Class
	 
	-N/A
	 
	4-Apr-2000
	 
	4-Apr-2000
	 
	VB code to wait with a responsive UI
	
Advanced Graphics / Astrology Example VB5/6 [Graphic, Article, Visual Basic] www.earthweb.com 04-Apr-2000
	Advanced Graphics / Astrology Example VB5/6
	 
	-N/A
	 
	4-Apr-2000
	 
	4-Apr-2000
	 
	VB code demonstrating graphics techniques
	
An Owner Drawn Clock Control VB5/6 [Ownerdrawn, Article, Visual Basic] www.earthweb.com 04-Apr-2000
	An Owner Drawn Clock Control VB5/6
	 
	-N/A
	 
	4-Apr-2000
	 
	4-Apr-2000
	 
	VB code to create an analogue clock
	
Using XML and Word for Mail Merging [XML, Word, Mail Merge, Article, Visual Basic] www.earthweb.com 04-Apr-2000
	Using XML and Word for Mail Merging
	 
	-N/A
	 
	4-Apr-2000
	 
	4-Apr-2000
	 
	VB code to merge XML-files with a MS Word97 template
	
An Owner Drawn Calendar Control VB5/6 [Ownerdrawn, Calendar, Control, Article, Visual Basic] www.earthweb.com 04-Apr-2000
	An Owner Drawn Calendar Control VB5/6
	 
	-N/A
	 
	4-Apr-2000
	 
	4-Apr-2000
	 
	VB code to create a calendar control
	
Exploring Directories and Files [Article, Delphi] delphi.about.com 04-Apr-2000
	04-Apr-2000
	 
	04-Apr-2000
	 
	Exploring Directories and Files
	 
	Delphi For Beginners: Creating custom file-selection and 
directory-navigation forms (dialogs) with file system components.
	
System Information Class [System, Update, Article, Visual C++] www.codeguru.com 03-Apr-2000 by Tien Chen
	System Information Class
	 
	Tien Chen
	 
	Code updated and demo added
	
Handling right-click on the CListCtrl header control [Listview, Article, Visual C++] www.codeguru.com 03-Apr-2000 by Alberto Gattegno
	Handling right-click on the CListCtrl header control
	 
	Alberto Gattegno
	 
	An alternative to determining the right click on the header of the 
CListCtrl
	
Using the Document/View Architecture with a DLL [Document/View, Article, Visual C++] www.codeguru.com 03-Apr-2000 by Roger Allen
	Using the Document/View Architecture with a DLL
	 
	Roger Allen
	 
	Explorting Views from a DLL
	
Creating a CTabCtrl Application [Control, Article, Visual C++] www.codeguru.com 03-Apr-2000 by Ben Hill
	Creating a CTabCtrl Application
	 
	Ben Hill
	 
	Illustrates how to quickly create an application whose dialog contains 
a tab control
	
Using the Document/View Architecture with a DLL [Article, Visual C++] www.earthweb.com 03-Apr-2000
	Using the Document/View Architecture with a DLL
	 
	-N/A
	 
	3-Apr-2000
	 
	3-Apr-2000
	 
	VC++ code for a DLL containing document/views
	
Creating a CTabCtrl Application [Article, Visual C++] www.earthweb.com 03-Apr-2000
	Creating a CTabCtrl Application
	 
	-N/A
	 
	3-Apr-2000
	 
	3-Apr-2000
	 
	VC++ code to create a tabbed dialog box
	
basCCValidate .... How use the LUHN credit card number validation formula [Credit Card Number, Visual Basic, VB Code Module] www.codeoftheweek.com 02-Apr-2000, no. 119
Requirements

Visual Basic 3.0 or higher.

In this Issue

In this issue we discuss how use the LUHN credit card number
validation formula.  This is sometimes called the MOD 10 formula.


basCCValidate

This module contains a single routine called CreditCardValidate
that takes a string of digits, removes all characters other than
numbers and performs the Luhn validation formula (mod 10 formula).

This algorithm works by doing the following:

- A checksum is calculated by summing all the alternate digits
starting with the rightmost digit and moving to the left.

- Once this sum is calculated start with the second to last digit
and double each alternate digit (basically you are using each
number you did not use in the first step) moving to the left.
After doubling each digit add it to the total calculated in the
first step.

- If the doubling of a digit results in a number greater or equal
to 10 then subtract 9 from the overall total for each digit that
is greater or equal to 10. The final sum after processing all the
digits should be a multiple of ten if the credit card number is
valid.


If you had a number such as 372712312312345 the formula would
calculate like this: 5+3+1+2+3+1+2+3 for the first step.  The
first part of the second step would be
(4*2)+(2*2)+(3*2)+(1*2)+(2*2)+(7*2)+(7*2) which would result in
the following additions 8+4+6+3+4+(14-9)+(14-9).


Functions

Public Function CreditCardValidate(sCardNumber As String) As Boolean

Sample Usage

Some examples are shown using different credit card numbers
(NOTE: the credit card numbers are not real card numbers).

    Debug.Print CreditCardValidate("4234123412341234")
    ' will print out as True (if the credit card was actually a real card 
number)
Understanding OO Programming [Article, Visual C++] cplus.about.com 02-Apr-2000
	02-Apr-2000
	 
	02-Apr-2000
	  
	Understanding OO Programming
	 
	A tutorial on the basics of Object-Oriented Programming
	
CStringFile Class [File, Folder, Article, Visual C++] www.codeguru.com 02-Apr-2000 by Frank Driesens
	CStringFile Class
	 
	Frank Driesens
	 
	Efficient means of reading large text files
	
Simple Chat Program [Internet, Article, Visual C++] www.codeguru.com 02-Apr-2000 by Ivan Cerrato, Max Vigilante, Bartolo Sorrentino
	Simple Chat Program
	 
	Ivan Cerrato and Max Vigilante and Bartolo Sorrentino
	 
	ATL and DCOM based Chat Program
	
UniTalk2 Chat Program [Article, Visual C++] www.earthweb.com 02-Apr-2000
	UniTalk2 Chat Program
	 
	-N/A
	 
	2-Apr-2000
	 
	2-Apr-2000
	 
	VC++ code for a chat program
	
CStringFile Class [Article, Visual C++] www.earthweb.com 02-Apr-2000
	CStringFile Class
	 
	-N/A
	 
	2-Apr-2000
	 
	2-Apr-2000
	 
	VC++ code to read and filter a text file
	
Programming Excel COM Objects in C++ [Excel, COM, C++, Article, Visual C++] C++ Users Journal 01-Apr-2000 by Philippe Lacoude, Grum Ketema
	Programming Excel COM Objects in C++
	 
	Philippe Lacoude
	 and 
	Grum Ketema
	  
	Excel is a powerful tool that you can use from a C++ program, once you 
get the protocol right.
	
Stressing Your COM Objects [Stressing, COM, Synchronization Error, Article, Visual C++] C++ Users Journal 01-Apr-2000 by Panos Kougiouris
	Stressing Your COM Objects
	 
	Panos Kougiouris
	  
	The best known way to detect Synchronization Errors in code is simply 
to pound on it to see if it breaks.
	
Views, A New Form of Container Adaptors [Container, Article, Visual C++] C++ Users Journal 01-Apr-2000 by Gary Powell, Martin Weiser
	Views, A New Form of Container Adaptors
	
	Gary Powell
	 and 
	Martin Weiser
	  
	There’s more than one way to slice a container. Views provide a 
particularly sharp knife.
	
Error Logging with Iostreams [Error, Logging, Iostream, Debugging, Article, Visual C++] C++ Users Journal 01-Apr-2000 by Brad Offer
	Error Logging with Iostreams
	
	Brad Offer
	  
	You don’t have to sacrifice the convenience of Iostreams while 
Debugging, at least not if they’re packaged properly.
	
A Class for Scanning Directories [Class, Wildcard, Directory, Article, Visual C++] C++ Users Journal 01-Apr-2000 by Michal Niklas
	A Class for Scanning Directories
	
	Michal Niklas
	  
	Expanding Wildcard filenames is something you want to do uniformly 
across many utilities and different operating systems.
	
Building HTML Documents with C++ [HTML, C++, Article, Visual C++] C++ Users Journal 01-Apr-2000 by Giovanni Bavestrelli
	Building HTML Documents with C++
	 
	Giovanni Bavestrelli
	  
	The block structure of C++ can really help you get the block structure 
of HTML right.
	
Testing C++ Library Conformance [C++, Library, Conformance, Article, Visual C++] C++ Users Journal 01-Apr-2000 by P J Plauger
	P J Plauger
	 
	Testing C++ Library Conformance
	 
	Now that we have a standard for C++ libraries, we need to know how to 
determine which libraries conform to the standard.
	
Casts and Conversions [Cast, Conversion, Type Casting, C++, Article, Visual C++] C++ Users Journal 01-Apr-2000 by Pete Becker
	Pete Becker
	 
	Casts and Conversions
	 
	Type Casting is a blunt instrument in C. The four different casts in 
C++ are safer, but still require care when used.
	
Delphi COM: Out-of-Process and DCOM, Part 2 [COM, DCOM, Out-of-Process Server, Article, Delphi] Delphi Developer 01-Apr-2000, vol. 6, no. 4 by Fernando Vicaria
	Delphi COM: Out-of-Process and DCOM, Part 2
	 
	Fernando Vicaria
	 
	Last month Fernando Vicaria described in-process COM servers that run 
in DLLs and consequently in the same address space as the client application. 
In this article, he'll show you out-of-process (local or remote) COM servers 
running, as the name suggests, in an address space separate from the client. 
Now, two completely separate applications can share data -- even if they're 
running on different machines!
	
Programming Internet Explorer 5: Adding an ActiveX Web Bar [Internet Explorer, ActiveX, HTML, Article, Delphi] Delphi Developer 01-Apr-2000, vol. 6, no. 4 by David Bolton
	Programming Internet Explorer 5: Adding an ActiveX Web Bar
	 
	David Bolton
	 
	In this article, David Bolton demonstrates how to add a Web bar to IE 
5, like Favorites or History. It's implemented as an ActiveX object, supplied 
in a DLL. The Web bar includes additional functionality so that it can respond 
to IE events. It captures the names and values of the HTML form input objects 
when a Submit button on a Web page is clicked.
	
Character Animation 2: Fleshing Out the Model [Animation, Article, Delphi] Delphi Developer 01-Apr-2000, vol. 6, no. 4 by Michael Chapin
	Character Animation 2: Fleshing Out the Model
	 
	Michael Chapin
	 
	Character animation is what makes some motion pictures show things that 
can never be seen in real life. Toy Story, Antz and A Bug's Life are just a few 
movies that are made entirely with character animation. In the first article of 
this series, Michael Chapin introduced code for a skeleton and how to move it 
in 3D space. In this part, he'll show you how to add flesh to that skeleton, 
then move and render those points.
	
Delphi IDE Wizardry: Component Editors [IDE, Component Editor, Article, Delphi] Delphi Developer 01-Apr-2000, vol. 6, no. 4 by Bob Swart
	Delphi IDE Wizardry: Component Editors
	 
	Bob Swart
	 
	Delphi IDE Wizardry is a column exploring new features and enhancements 
found in and developed for the Delphi IDE. This time out, Bob Swart 
demonstrates Component Editors in Delphi. He begins by examining the evolution 
of Component Editors, then shows you how to create your own custom Component 
Editors for Delphi.
	
How to check whether a given .DLL/.OCX/.EXE is a ActiveX component (using: Visual Basic 6.0) [ActiveX Component, OCX, Visual Basic, Tip] www.codeguru.com 01-Apr-2000 by Vasudevan S
How to check whether a given .DLL/.OCX/.EXE is a ActiveX 
component or not? 

There are 3 ways to do it. 

a. Use regsvr32.exe 
---------------- 
If regsvr32.exe says

"vbajet32.dll was loaded but the dll register server entry point was not found. 
Dll register server may not be exported or a corrupt version of vbajet32.dll 
may be in memory" 

then vbajet32.dll is not a ActiveX component. 

b. Use DUMPBIN.EXE 
--------------- 
From Visual C++ bin directory, the syntax is

 DUMPBIN /EXPORTS /OUT:C:\VBAJET32.TXT C:\WINDOWS\SYSTEM\VBAJET32.DLL. 

This will create a VBAJET32.TXT file on your C: drive. 
Open the TXT file and check for "DllRegisterServer" 
under ordinal/name section. 

If the entry "DllRegisterServer" is not there, then the 
component is not a ActiveX component. 

This technique applies to all components. 

c. Use GetProcAddress to return the entry point for DllRegisterServer 
---------------------- 
Inside my code (see -> ) the API call GetProcAddress will return 
0 which means there is no entry point for DllRegisterServer 
in vbajet32.dll. 


Enabling NT Users (using: Visual Basic 6.0) [Account, NetApiBufferFree(), NetUserGetInfo(), NetUserSetInfo(), Network, Windows NT, User Account, Visual Basic, Tip] www.devx.com 01-Apr-2000 by L J Johnson
Enabling NT Users
By L.J. Johnson

A surprisingly simple question that comes up frequently is "How do I disable or 
enable user accounts programmatically?" The easiest way to do this is via ADSI 
(which is native to Windows 2000 and can be downloaded for NT 4.0 SP4+). 
However, for those administrators running NT 4.0 in situations where installing 
ADSI is not an option, the following code will demonstrate how to either enable 
or disable a user's account. 

The only really interesting thing about the code (other than the extra steps 
required in VB to do the Unicode pointer conversions) is the fact that enabling 
or disabling a user's account is done, not via a separate parameter, but by 
setting the flags parameter. In fact, many of the interesting options are 
set/unset by setting the flags for the user (for example, whether or not a 
password is required, or whether the user can change the password or not). 

The code itself is pretty basic, and should run in either VB 5.0 or 6.0 
(although I only tested it with 6.0). First, get the user information and 
extract the flag's parameter, then check to see if the setting is already what 
the UI requested (either disabled or enabled). If it is not currently what was 
requested, you can Xor the current flag with the UF_ACCOUNTDISABLE windows 
constant to set the flag to the correct value. Finally, call the NetUserSetInfo 
to set the revised information back to the operating simple. 

Note that with only very minor changes, this code can be used to set any of the 
other flags for a user's account.

' In a *.FRM file 

Option Explicit

Private Sub cmdDisable_Click()
   UserEnabled strServerName:="", _
               strUserName:=Trim$(Me.Text1.Text), _
               blnIsEnabled:=False
   Me.Label2.Caption = "Account is disabled"
End Sub

Private Sub cmdEnable_Click()
   UserEnabled strServerName:="", _
               strUserName:=Trim$(Me.Text1.Text), _
               blnIsEnabled:=True
   Me.Label2.Caption = "Account is en ... (cont.)
SetString .... Convert a set to a string and vice versa [RTTI, String, Set, Delphi, Dephi Routine] Delphi Informant 01-Apr-2000

Get Accurate Results With Code-Based Timers [Timer, Article, Visual Basic] Visual Basic Programmer's Journal 01-Apr-2000, vol. 10, no. 4 by Warren Bedell
	Get Accurate Results With Code-Based Timers
	 
	Warren Bedell
	 
	Help your apps perform better by using code-based timers. These timers 
offer event-driven timing without controls or forms.
	
Manage Control Data I/O [Control, Database, Article, Visual Basic] Visual Basic Programmer's Journal 01-Apr-2000, vol. 10, no. 4 by Ron Schwarz
	Manage Control Data I/O
	 
	Ron Schwarz
	 
	Coding in VB requires knowing how to get both Database and nondatabase 
data into and out of your controls at run time.
	
Optimize ADO 2.5 [ADO, Data, Article, Visual Basic] Visual Basic Programmer's Journal 01-Apr-2000, vol. 10, no. 4 by Dan Fox
	Optimize ADO 2.5
	 
	Dan Fox
	 
	ADO 2.5 provides great flexibility and performance when accessing 
relational Data sources. Learn techniques to write code that uses ADO to its 
fullest potential.
	
Expose Your App's Object Model [Object Model, ActiveX Scripting, Scripting, Article, Visual Basic] Visual Basic Programmer's Journal 01-Apr-2000, vol. 10, no. 4 by Bill Hludzinski
	Expose Your App's Object Model
	 
	Bill Hludzinski
	 
	Sometimes you need to open up your application for user customization, 
and becoming an ActiveX Script host is the way to do it. Take an in-depth look 
at a VB6 add-in that adds Scripting support to the VB IDE.
	
Update Your Calendar [Calendar, Outlook, Article, Visual Basic] Visual Basic Programmer's Journal 01-Apr-2000, vol. 10, no. 4 by Chris Barlow
	Update Your Calendar
	 
	Avoid scheduling mishaps caused by Outlook adjusting your appointments 
to different time zones.
	 
	Chris Barlow
	
It Takes All Sorts [Sort, Algorithm, Article, Visual Basic] Visual Basic Programmer's Journal 01-Apr-2000, vol. 10, no. 4 by Dan Fox
	It Takes All Sorts
	 
	Algorithms that search and sort are basic, and you should know which to 
use in any programming scenario.
	 
	Dan Fox
	
Finally! An Application-Scope Dictionary Object [Dictionary Object, Article, Visual Basic] Visual Basic Programmer's Journal 01-Apr-2000, vol. 10, no. 4 by A Russell Jones
	Finally! An Application-Scope Dictionary Object
	 
	Although the Scripting Dictionary object can store key/value pairs, it 
isn't both-threaded. The alternative: Use the new LookupTable object. In this 
column, the author shows you how.
	 
	A Russell Jones
	
VB Classes Can Inherit Events [Class, Inheritance, Event, Object-Oriented, Inheritance, Article, Visual Basic] Visual Basic Programmer's Journal 01-Apr-2000, vol. 10, no. 4 by Andrew J Marshall
	VB Classes Can Inherit Events
	 
	There's a way to get around VB's lack of true inheritance. Use Event 
classes to enable event inheritance and follow the principles of 
Object-Oriented Inheritance.
	 
	Andrew J Marshall
	
Copy Several Files Into One [File, Concatenate, Article, Visual Basic] Visual Basic Programmer's Journal 01-Apr-2000, vol. 10, no. 4 by Karl E Peterson
	Copy Several Files Into One
	 
	Learn how to Concatenate files.
	 
	Karl E Peterson
	
Check for the presence of a CD-ROM [CD-ROM, Article, Visual Basic] Visual Basic Programmer's Journal 01-Apr-2000, vol. 10, no. 4 by Karl E Peterson
	Check for the presence of a CD-ROM
	 
	Check for the presence of a CD-ROM.
	 
	Karl E Peterson
	
Check the existence of a File on an FTP server [File, FTP, Article, Visual Basic] Visual Basic Programmer's Journal 01-Apr-2000, vol. 10, no. 4 by Karl E Peterson
	Check the existence of a File on an FTP server
	 
	Check the existence of a file on an FTP server.
	 
	Karl E Peterson
	
Avoid Locking Conflicts [Locking, SQL Server, Transaction, Article, Visual Basic] Visual Basic Programmer's Journal 01-Apr-2000, vol. 10, no. 4 by Barry Fridley
	Avoid Locking Conflicts
	 
	Learn why and how SQL Server uses locking to protect Transactions. 
Also, learn how to override the default locking behavior when necessary.
	 
	Barry Fridley
	
Encapsulate Windows API Calls in Classes [API Programming, Class, Article, Visual Basic] Visual Basic Programmer's Journal 01-Apr-2000, vol. 10, no. 4 by Francesco Balena
	Encapsulate Windows API Calls in Classes
	 
	Learn how you can simplify your Windows programming chores by 
encapsulating much of the API's functionality into complex object hierarchies.
	 
	Francesco Balena
	
Choose the Best Database Design [Database, Object-Oriented Database, Article, Visual Basic] Visual Basic Programmer's Journal 01-Apr-2000, vol. 10, no. 4 by Joel Garcia
	Choose the Best Database Design
	 
	When should you use a traditional database, and when is using an 
Object-Oriented Database better? The author gives you the scoop on your options.
	 
	Joel Garcia
	
Name That Language [Jet, Article, Visual Basic] Visual Basic Programmer's Journal 01-Apr-2000, vol. 10, no. 4 by Michael Kaplan
	Name That Language
	 
	Utilize Jet's hidden language-detection feature to make good use of 
your data, even if you don't know ahead of time what language the text is 
written in.
	 
	Michael Kaplan
	
The Shell Namespace PIDLs [Shell Namespace, PIDL, Article, Visual C++] Windows Developer's Journal 01-Apr-2000, vol. 11, no. 4 by Oz Solomonovich
	The Shell Namespace PIDLs
	 
	Oz Solomonovich
	  
	Whether you just want to add an entry to a shell’s context menu, or 
write your own complete extension to the shell’s namespace, you’re going to 
have to deal with PIDLs. This article explains what they are, how they work, 
and provides reusable code that handles the more tedious details of PIDL 
manipulation.
	
Tracing NT Kernel-Mode Calls [Tracing, Kernel Mode Call, Debugging, Windows NT, Article, Visual C++] Windows Developer's Journal 01-Apr-2000, vol. 11, no. 4 by Dmitri Leman
	Tracing NT Kernel-Mode Calls
	 
	Dmitri Leman
	  
	Interactive Debugging is useful, but sometimes tracing is a better 
choice, such as when you’re tracking down a race condition. Tracing tools are 
available for user-mode programs, but the choices for kernel-mode tracing are 
more limited. This article demonstrates an NT tool that lets you trace calls to 
any kernel-mode API function (such as those exported by ntoskrnl.exe and 
hal.dll).
	
Help keep your Dialog’s use of Default Buttons correct [Dialog, Default Button, Article, Visual C++] Windows Developer's Journal 01-Apr-2000, vol. 11, no. 4 by Petter Hesselberg
	Help keep your Dialog’s use of Default Buttons correct
	 
	Petter Hesselberg
	  
	The default button is a great convenience for users, but it’s easy to 
end up with a dialog that sometimes contains a disabled default button or 
paints a button as though it were the default, even though it isn’t. This 
column explores these problems and provides reusable code to help keep your 
dialog’s use of default buttons correct.
	
Understanding NT: Windows NT Embedded 4.0 [Embedding, Windows CE, Windows NT, Article, Visual C++] Windows Developer's Journal 01-Apr-2000, vol. 11, no. 4 by Paula Tomlinson
	Understanding NT: Windows NT Embedded 4.0
	 
	Paula Tomlinson
	  
	Windows CE puts a Windows-like operating system into the embedded 
market, but Microsoft also has another candidate for embedded systems: Windows 
NT Embedded 4.0. This column provides an overview of this embedded product, 
including a comparison with CE.
	
Disabling Ctrl+Alt+Del on Win95/Win98 [Ctrl+Alt+Del, Keyboard, Rebooting, Windows, Article, Visual C++] Windows Developer's Journal 01-Apr-2000, vol. 11, no. 4 by Simon Liu
	Disabling Ctrl+Alt+Del on Win95/Win98
	 
	Simon Liu
	 
	The cheap and dirty way to disable Keyboard Rebooting - via screensaver 
functionality
	
Mini-Servers for Cross-Platform Client-Side Hypertext [Web, HTTP, Article, Visual C++] Windows Developer's Journal 01-Apr-2000, vol. 11, no. 4 by Ron Burk
	Mini-Servers for Cross-Platform Client-Side Hypertext
	 
	Ron Burk
	 
	One set of software can provide both Web server and standalone 
application functionality; the trick is to just write a tiny HTTP server to let 
your 'standalone' application be accessed locally via HTTP.
	
VB Problems with DEFLNG [Article, Visual C++, Visual Basic] Windows Developer's Journal 01-Apr-2000, vol. 11, no. 4 by Darin Higgins
	VB Problems with DEFLNG
	 
	Darin Higgins
	
Distributed Computing With SOAP [Distributed Computing, SOAP, DCOM, Article, Visual C++] Visual C++ Developers Journal 01-Apr-2000, vol. 3, no. 3 by Davide Marcato
	Distributed Computing With SOAP
	 
	Davide Marcato
	 
	If you lament the complexity and inflexibility of DCOM, check out SOAP. 
Learn how and why SOAP fits into the big picture of today's distributed 
computing arena.
	
Manage Images Efficiently [Image, BMP File, ICO, Article, Visual C++] Visual C++ Developers Journal 01-Apr-2000, vol. 3, no. 3 by Dino Esposito
	Manage Images Efficiently
	 
	Dino Esposito
	 
	Need a better way to store BMP and ICO files, create images 
dynamically, and overlay icons? Let ImageLists give you a hand.
	
Mastering the STL [STL, Standard Template Library, Article, Visual C++] Visual C++ Developers Journal 01-Apr-2000, vol. 3, no. 3 by Bill Wagner
	Mastering the STL
	 
	Bill Wagner
	 
	The Standard Template Library (STL) gives you a rich set of components 
you can use to simplify complex programming jobs.
	
An Introduction to Polymorphism [Polymorphism, Object-Oriented, Article, Visual C++] Visual C++ Developers Journal 01-Apr-2000, vol. 3, no. 3 by David Steinhoff
	An Introduction to Polymorphism
	 
	David Steinhoff
	 
	Polymorphism lets you reuse existing code to solve new programming 
problems. Learn how to use this Object-Oriented technique effectively.
	
Write Publisher Filters [Publisher Filter, Event, Article, Visual C++] Visual C++ Developers Journal 01-Apr-2000, vol. 3, no. 3 by Jeff Prosise
	Write Publisher Filters
	 
	Jeff Prosise
	 
	Filter the Events a publisher fires without modifying the code for 
either the publisher or the event class.
	
Load XML Documents in C++ [XML, C++, Article, Visual C++] Visual C++ Developers Journal 01-Apr-2000, vol. 3, no. 3 by Jim Beveridge
	Load XML Documents in C++
	 
	Jim Beveridge
	 
	Use mixin interfaces and decentralized logic to build an extensible 
converter between XML and C++ objects.
	
Debug Multithreaded Code [Debugging, Multithreaded, ATL, COM, Article, Visual C++] Visual C++ Developers Journal 01-Apr-2000, vol. 3, no. 3 by Davide Marcato
	Debug Multithreaded Code
	 
	Davide Marcato
	 
	Learn how to debug multithreaded code, and find out how ATL helps COM 
programmers.
	
Write With WTL [WTL, Windows Template Library, Article, Visual C++] Visual C++ Developers Journal 01-Apr-2000, vol. 3, no. 3 by Richard Grimes
	Write With WTL
	 
	Richard Grimes
	 
	Windows Template Library (WTL) gives you the application framework and 
wrapper classes to use Win32, common controls, and printers - all without the 
bulk of MFC.
	
Use Activities to Manage COM Threading [COM, Thread, Concurrency Management, Article, Visual C++] Visual C++ Developers Journal 01-Apr-2000, vol. 3, no. 3 by George Shepherd
	Use Activities to Manage COM Threading
	 
	George Shepherd
	 
	Are you looking for a way to solve the callback-deadlock issue? Try 
activity-based Concurrency Management.
	
Windows 2000: Asynchronous Method Calls Eliminate the Wait for COM Clients and Servers [Asynchronous Method Call, COM, Windows NT, Article] MSDN Magazine 01-Apr-2000, vol. 15, no. 4 by Jeff Prosise
	Windows 2000: Asynchronous Method Calls Eliminate the Wait for COM 
Clients and Servers
	 
	Windows 2000 is the first version of COM to support asynchronous method 
calls, which permit clients to make nonblocking calls to COM objects and 
objects to process incoming calls without blocking the calling threads. COM 
clients benefit from asynchronous method calls because they can continue 
working while waiting for outbound calls to return. Objects benefit because 
they can queue incoming calls and service them from a thread pool. Our 
SieveClient and SieveServer sample apps demonstrate how to create and use 
asynchronous clients and servers in COM-based distributed applications.
	 
	Jeff Prosise
	
Visual Basic: Web Forms, Web Services, and Language Enhancements Slated for Next Generation [Web Form, Web Services, SOAP, Inheritance, Polymorphism, Overloading, Visual Basic, Article] MSDN Magazine 01-Apr-2000, vol. 15, no. 4 by Joshua Trupin
	Visual Basic: Web Forms, Web Services, and Language Enhancements Slated 
for Next Generation
	 
	The plans for the next version of Microsoft Visual Basic include three 
major improvements: Web Forms, Web services, and object-oriented language 
enhancements. Web Forms will let veteran Visual Basic users develop Web-based 
applications as easily as they design standalone apps today. Through a SOAP 
interface, Web services will let you deploy programmable modules anywhere that 
can be reached by a URL. In addition, several key object-oriented language 
enhancements, including Inheritance, Polymorphism, and Overloading, will make 
Visual Basic code as flexible as C++.
	 
	Joshua Trupin
	
Scripting Windows: Windows Management Instrumentation Provides a Powerful Tool for Managing Windows with Script [Scripting, Windows Management Instrumentation, WMI, Windows NT, Article] MSDN Magazine 01-Apr-2000, vol. 15, no. 4 by Alan Boshier
	Scripting Windows: Windows Management Instrumentation Provides a 
Powerful Tool for Managing Windows with Script
	 
	The new Windows Management Instrumentation (WMI) technology for Windows 
2000, Windows NT 4.0, and Windows 98 provides powerful scripting technology 
that can be used to administrate Windows-based systems. With WMI, you can 
create scripts to simplify management of devices, user accounts, services, 
networking, and other aspects of your system. This piece will introduce you to 
WMI and the WMI Scripting Object Model, taking a look at the available objects, 
methods, and properties. Along the way, you’ll see how these elements can be 
used to create system management scripts.
	 
	Alan Boshier
	
Which Framework Should You Use? Building ActiveX Controls with ATL and MFC [ActiveX Control, Visual C++, MFC, ATL, Article] MSDN Magazine 01-Apr-2000, vol. 15, no. 4 by George Shepherd
	Which Framework Should You Use? Building ActiveX Controls with ATL and 
MFC
	 
	Currently MFC and ATL represent two frameworks targeted at different 
types of Windows-based development. MFC represents a simple and consistent 
means of creating standalone apps for Windows; ATL provides a framework to 
implement the boilerplate code necessary to create COM clients and servers. The 
two frameworks overlap in their usefulness for developing ActiveX controls. 
We’ll take a look at both frameworks as they apply to creating ActiveX 
controls-highlighting strengths and weaknesses, and walking through the process 
of creating a control-so you can determine when you might want to use one 
framework or the other.
	 
	George Shepherd
	
Active Accessibility-Compliant Apps Offer New Tools to Manipulate Software [Active Accessibility, Windows NT, Article] MSDN Magazine 01-Apr-2000, vol. 15, no. 4 by Dmitri Klementiev
	Active Accessibility-Compliant Apps Offer New Tools to Manipulate 
Software
	 
	Active Accessibility was developed to allow people with disabilities to 
work on PCs-it’s used in magnifiers, screen readers, and tactile mice. It can 
also be used to create applications that drive other software, and its ability 
to emulate user input is particularly well suited to the design of testing 
software. Starting from the basics of Active Accessibility, this article leads 
you through the development of a software testing application. You’ll see how 
this testing application interacts with common controls and other UI elements, 
then processes the resulting WinEvents.
	 
	Dmitri Klementiev
	
Using XSL for Early Rendering of Frequently Accessed, Data-Driven Web Pages [XSL, Web, HTML, Windows NT, Article] MSDN Magazine 01-Apr-2000, vol. 15, no. 4 by Paul Enfield
	Using XSL for Early Rendering of Frequently Accessed, Data-Driven Web 
Pages
	 
	Dynamic data-driven pages have become the basis of many cutting-edge 
Web sites. Early render systems can provide better performance and 
maintainability for data-driven Web sites by generating frequently accessed 
pages that contain less-volatile information ahead of time. We’ll show you an 
example of a server-side solution that uses Extensible Stylesheet Language 
(XSL) to merge data and layout information into HTML that is compatible with 
just about any modern Web browser. Using these techniques to render Web pages 
early can reduce the load on your database back end and increase performance 
for your users.
	 
	Paul Enfield
	
Two New Redirection Methods in Microsoft IIS 5.0 [IIS, Internet Information Server, ASP, Web, Windows NT, Article] MSDN Magazine 01-Apr-2000, vol. 15, no. 4 by Ram Papatla
	Two New Redirection Methods in Microsoft IIS 5.0
	 
	Internet Information Services (IIS) 5.0 provides several enhancements 
to its support for ASP-based Web development, including two new server-side 
redirection methods: Server.Transfer and Server.Execute. Rather than 
redirecting requests with a round-trip to the client, these new methods can be 
used to transfer requests directly to an ASP file without ever leaving the 
server.
	 
	Ram Papatla
	
Let’s start a 3D revolution [3-D, Visual C++, Article] MSDN Magazine 01-Apr-2000, vol. 15, no. 4 by Doug Boling
	Let’s start a 3D revolution
	 
	Doug Boling
	
Resources for Your Developer Toolbox [Article, Visual C++] MSDN Magazine 01-Apr-2000, vol. 15, no. 4 by Theresa W Carey
	Resources for Your Developer Toolbox
	 
	Theresa W Carey
	
Windows Script Host [Windows Scripting Host, Windows NT, Article] MSDN Magazine 01-Apr-2000, vol. 15, no. 4 by Robert Hess
	Windows Script Host
	 
	Robert Hess
	
Dropdown Menus [Menu, Visual C++, Article] MSDN Magazine 01-Apr-2000, vol. 15, no. 4 by Robert Hess
	Dropdown Menus
	 
	Robert Hess
	
ASP-to-HTML [ASP, HTML, Windows NT, Article] MSDN Magazine 01-Apr-2000, vol. 15, no. 4 by Robert Hess
	ASP-to-HTML
	 
	Robert Hess
	
Exchanging data over the Internet using XML [Internet, Windows NT, Article] MSDN Magazine 01-Apr-2000, vol. 15, no. 4 by Dino Esposito
	Exchanging data over the Internet using XML
	 
	Dino Esposito
	
Working with MTS, ASP and Visual Basic [MTS, ASP, Visual Basic, Article] MSDN Magazine 01-Apr-2000, vol. 15, no. 4 by Ken Spencer
	Working with MTS, ASP and Visual Basic
	 
	Ken Spencer
	
Windows 2000 and LDR messages, a COM symbol engine, finding bloated functions, and PDB2MAP utility [LDR, COM, Windows NT, Article] MSDN Magazine 01-Apr-2000, vol. 15, no. 4 by John Robbins
	Windows 2000 and LDR messages, a COM symbol engine, finding bloated 
functions, and PDB2MAP utility
	 
	John Robbins
	
Adding your own AppWizard to Visual C++ [AppWizard, Visual C++, Article] MSDN Magazine 01-Apr-2000, vol. 15, no. 4 by George Shepherd
	Adding your own AppWizard to Visual C++
	 
	George Shepherd
	
New C++ classes for better resource management in Windows [C++, Visual C++, Article] MSDN Magazine 01-Apr-2000, vol. 15, no. 4 by Jeffrey Richter
	New C++ classes for better resource management in Windows
	 
	Jeffrey Richter
	
Intializing C++ class members and incorporating the Places bar in your MFC apps [C++, Visual C++, MFC, Article] MSDN Magazine 01-Apr-2000, vol. 15, no. 4 by Paul DiLascia
	Intializing C++ class members and incorporating the Places bar in your 
MFC apps
	 
	Paul DiLascia
	
WAP! Delphi Does Wireless [WAP, Wireless Application Protocol, Wireless Markup Language, Article, Delphi] Delphi Informant 01-Apr-2000, vol. 6, no. 4 by Jani Järvinen
	WAP! Delphi Does Wireless
	 
	Jani Järvinen
	 
	After explaining the basics of Wireless Application Protocol and 
Wireless Markup Language, Mr Järvinen demonstrates how to create a real-time, 
order query system for use over a WAP phone.
	
TChart Actions [TChart, Article, Delphi] Delphi Informant 01-Apr-2000, vol. 6, no. 4 by Keith Wood
	TChart Actions
	 
	Keith Wood
	 
	Mr Wood demonstrates actions, handy entities that centralize 
functionality for a class (or group of classes), and synchronize changes to 
their states within GUI elements (i.e. another way to reuse code).
	
Interfaces Revisited: Part II [Interface, Article, Delphi] Delphi Informant 01-Apr-2000, vol. 6, no. 4 by Cary Jensen
	Interfaces Revisited: Part II
	 
	Cary Jensen
	 
	Dr Jensen ends his series by showing how to use objects through 
interface references, and by discussing two types of interface implementation 
by delegation - one of which is inherently dangerous.
	
Maintaining State [Browser, Internet, Article, Delphi] Delphi Informant 01-Apr-2000, vol. 6, no. 4 by Jon Etheredge
	Maintaining State
	 
	Jon Etheredge
	 
	Maintaining the state of Browser sessions is a classic Internet 
problem. Mr Etheredge weighs the relative merits of cookies, URL variables, 
hidden fields, etc. from a Delphi perspective.
	
Sets to Strings, and Back [Set, String, Run-Time Type Information, RTTI, Article, Delphi] Delphi Informant 01-Apr-2000, vol. 6, no. 4 by Ray Lischner
	Sets to Strings, and Back
	 
	Ray Lischner
	 
	Mr Lischner demonstrates how to take advantage of Delphi's Run-time 
Type Information (RTTI) to write functions that convert any set to a string and 
back again.
	
Filtering Mail with Mail::Audit and News::Gateway [Mail, Mail::Audit, News::Gateway, Article, Perl] The Perl Journal 01-Apr-2000, vol. 5, no. 2 by Simon Cozens
	Filtering Mail with Mail::Audit and News::Gateway
	 
	Simon Cozens
	
Tktk: a Perl/Tk Solitare Game [Tk, Article, Perl] The Perl Journal 01-Apr-2000, vol. 5, no. 2 by Greg Bacon
	Tktk: a Perl/Tk Solitare Game
	 
	Greg Bacon
	
Trees [Tree, Article, Perl] The Perl Journal 01-Apr-2000, vol. 5, no. 2 by Sean M Burke
	Trees
	 
	Sean M Burke
	
GDGraph3d [Article, Perl] The Perl Journal 01-Apr-2000, vol. 5, no. 2 by Jeremy Wadsack
	GDGraph3d
	 
	Jeremy Wadsack
	
Lingua::Wordnet [Article, Perl] The Perl Journal 01-Apr-2000, vol. 5, no. 2 by Dan Brian
	Lingua::Wordnet
	 
	Dan Brian
	
Patterns in Perl [Pattern, Article, Perl] The Perl Journal 01-Apr-2000, vol. 5, no. 2 by Sean Hunter
	Patterns in Perl
	 
	Sean Hunter
	
Capturing Video in Real Time [Video, Article, Perl] The Perl Journal 01-Apr-2000, vol. 5, no. 2 by Marc Lehmann
	Capturing Video in Real Time
	 
	Marc Lehmann
	
Perlix, the Perl Operating System [Perlix, Article, Perl] The Perl Journal 01-Apr-2000, vol. 5, no. 2 by Bruce Winter
	Perlix, the Perl Operating System
	 
	Bruce Winter
	
TkComics, A Perl/Tk Web Client [Tk, Web, Article, Perl] The Perl Journal 01-Apr-2000, vol. 5, no. 2 by Stephen Lidie
	TkComics, A Perl/Tk Web Client
	 
	Stephen Lidie
	
The Perl Shell [Shell, Article, Perl] The Perl Journal 01-Apr-2000, vol. 5, no. 2 by Gregor N Purdy
	The Perl Shell
	 
	Gregor N Purdy
	
Lotus Increases XML Integration [XML, Article, Lotus Notes] Notes Advisor 01-Apr-2000 by Greg Pepus
EDITOR'S VIEW - Lotus Notes & Domino Advisor - April 2000 
	Lotus Increases XML Integration
	 
	Greg Pepus
	
Best Practices for Web UI Design [Web, UI, Article, Lotus Notes] Notes Advisor 01-Apr-2000
WEB FOUNDATIONS - Lotus Notes & Domino Advisor - April 2000 
	Best Practices for Web UI Design
	 
	-N/A
	
WebSphere & Domino: How do They Fit? [WebSphere, Domino, Article, Lotus Notes] Notes Advisor 01-Apr-2000
Web Development - Lotus Notes & Domino Advisor - April 2000 
	WebSphere & Domino: How do They Fit?
	 
	-N/A
	
Make Notes Links Work for You [Link, Article, Lotus Notes] Notes Advisor 01-Apr-2000
Knowledge Management - Lotus Notes & Domino Advisor - April 2000 
	Make Notes Links Work for You
	 
	-N/A
	
Target Frames in Domino [Frame, Domino, Article, Lotus Notes] Notes Advisor 01-Apr-2000
Web Development - Lotus Notes & Domino Advisor - April 2000 
	Target Frames in Domino
	 
	-N/A
	
Java-less Show Single Category Views [Java, View, Article, Lotus Notes] Notes Advisor 01-Apr-2000
Web Development - Lotus Notes & Domino Advisor - April 2000 
	Java-less Show Single Category Views
	 
	-N/A
	
A smart critical section wrapper for COM objects [COM, DCOM, COM, Article, Visual C++] www.codeproject.com 30-Mar-2000 by Jeremiah Talkar
	A smart critical section wrapper for COM objects
	 
	Jeremiah Talkar
	 
	An extremely simple class that wraps the win32 CRITICAL_SECTION. Ideal 
for the COM STA or MTA.
	
Unicode, MBCS and Generic text mappings [C++, MFC, STL, Article, Visual C++] www.codeproject.com 29-Mar-2000 by Chris Maunder
	Unicode, MBCS and Generic text mappings
	 
	Chris Maunder
	 
	A guide to using generic text functions to make the transition between 
character sets simple and painless
	
Hershey Font Wrapper Class [Font, GDI, GUI, Wrapper Class, Rendering, Article, Visual C++] www.codeproject.com 29-Mar-2000 by Randy More
	Hershey Font Wrapper Class
	 
	Randy More
	 
	Using Hershey vector fonts for faster Rendering
	
Making UNIX and Windows NT Talk [C++, Object-Oriented Programming, Unix, Windows NT, Book] Purchased 27-Mar-200, $69.95

Debug Toolkit [Debugging, Article, Visual C++] www.codeproject.com 28-Mar-2000 by Keith Westley
	Debug Toolkit
	 
	Keith Westley
	 
	A complete debug toolkit to add intelligent debugging capability to 
your application.
	
Flicker free redrawing and background buffering of drawing with two simple classes [Font, GDI, GUI, Article, Visual C++] www.codeproject.com 28-Mar-2000 by Ernst Versteeg
	Flicker free redrawing and background buffering of drawing with two 
simple classes
	 
	Ernst Versteeg
	 
	Two classes that make double buffering simple
	
Filename Extensions in Delphi [Article, Delphi] delphi.about.com 28-Mar-2000
	28-Mar-2000
	 
	28-Mar-2000
	 
	Filename Extensions in Delphi
	 
	List of the file extensions created (and used) by Delphi and what they 
all mean.
	
basCCFormat .... How to properly format credit card numbers [Credit Card Number, Visual Basic, VB Code Module] www.codeoftheweek.com 27-Mar-2000, no. 118
Requirements

Visual Basic 5.0 or higher.  Can be used with Visual Basic 3 and
up by changing the optional parameters.

In this Issue

In this issue we discuss how to properly (at least in our opinion)
format credit card numbers.  This routine is useful for anyplace a
credit card number is captured or displayed.  It  should work well
in VBScript with very little modifications.


basCCFormat
-----------
This module contains a single routine called
FormatCreditCardNumber that takes a string of digits and processes
it to produce a nicely formatted credit card number.


Functions

Public Function FormatCreditCardNumber(sCardNumber As String, Optional bSecure 
As Boolean = False) As String

This function returns a formatted credit card number using
separate formats for the different types of credit/charge cards.
An American Express card is 15 digits and has the number grouped
differently than Visa, MasterCard and Novus cards.  The default
number separator is a - (dash).  If you want the return string to
show a secure representation of the card number just set the
bSecure option to True.  This will cause this function to put X
characters in the place of all numbers except the last four
digits.

American Express numbers will be formatted as 1234-123456-12345.
All others will be formatted as 1234-1234-1234-1234.

One really nice feature of this routine is that the input string
specified by sCardNumber can be any format as long as it has 15 or
16 digits.  For example, 1111-1111-2222-2222 or 11111111 222 2
2222 would result in the same output string.  The routine "cleans"
the string first by removing any non-numeric character and then
reformats it according to the specific rules defined in this
function.  This is REALLY useful for those web sites that gather
information from users that can enter numbers any way they wish.



Sample Usage

Some examples are shown using different credit card numbers
(NOTE: the credit card numbers are not real card numbers).



    Debug ... (cont.)
basRegUnreg .... How to Register / UnRegister ActiveX Components through Code [ActiveX Component, CloseHandle(), CreateThread(), DLL, ExitThread(), FreeLibrary(), GetExitCodeThread(), GetProcAddress(), LoadLibrary(), Register, Unregister, VB Code Module, Visual Basic, WaitForSingleObject()] www.codeguru.com 27-Mar-2000
This code sample shows how to Register and Unregister ActiveX Components 
directly through VB Code - useful if you write your own Setup/Installation 
routines for projects. 

The project contains a BAS module with a function RegisterComponent - heres the 
header text that explains exactly how it works : 


public Function RegisterComponent(byval FileName$, _
byval RegFunction as REGISTER_FUNCTIONS) as STATUS

'*******************************************************************************
***
'Author: Vasudevan S
'Helena, MT
'Function: RegisterComponent
'Purpose: Registers/Unregisters any ActiveX DLL/EXE/OCX component
         'Entry Points in ActiveX DLL/EXE/OCX are DllRegisterServer and 
DllUnRegisterServer
'input: FileName:       Any valid file with complete path
        'RegFunction:   Enumerated Type(DllRegisterServer, DllUnregisterServer)
'Returns: Returns the status of the call in a enumerated type
'Comments: The utility REGSVR32.EXE need not be used to register/unregister 
ActiveX
           'components. This code can be embedded inside any application that 
needs
           'to register/unregister any ActiveX component from within the code 
base
'SAMPLE FORM is INCLUDED
'WORKS IN VB5.0/6.0
           
'HOW to CALL:
'-----------
'Dim mEnum as STATUS
'
'to REGISTER A COMPONENT USE
'mEnum = RegisterComponent("C:\windows\system\filename.dll", DllRegisterServer) 
'to Register
'
'If mEnum = [File Could Not Be Loaded Into Memory Space] then
'   MsgBox "Your Message Here", vbExclamation
'ElseIf mEnum = [Not A Valid ActiveX Component] then
'   MsgBox "Your Message Here", vbExclamation
'ElseIf mEnum = [ActiveX Component Registration Failed] then
'   MsgBox "Your Message Here", vbExclamation
'ElseIf mEnum = [ActiveX Component Registered Successfully] then
'   MsgBox "Your Message Here", vbExclamation
'End If
'
'to UNREGISTER A COMPONENT USE
'mEnum = RegisterComponent("C:\windows\system\filename.dll", 
DllUnRegisterServer) 'to UnRegister
'
'If mEnum = [File Could  ... (cont.)
Print ListCtrl on multiple pages [List Control, Article, Visual C++] www.codeproject.com 27-Mar-2000 by Markus Loibl
	Print ListCtrl on multiple pages
	 
	Markus Loibl
	 
	Printing the contents of a CListCtrl or CListView with multiple pages
	
MyTop - a Top/WinTop like application [System, Article, Visual C++] www.codeproject.com 27-Mar-2000 by Darren Schroeder
	MyTop - a Top/WinTop like application
	 
	Darren Schroeder
	 
	An article on listing and killing processes
	
Introduction to Multi-threaded Code [Thread, Process, Inteprocess Communication, Article, Visual C++] www.codeproject.com 27-Mar-2000 by William T Block
	Introduction to Multi-threaded Code
	 
	William T Block
	 
	Synchronizing worker threads using 3 different methods
	
Date-Time Edit Control [Edit Control, Date, Time, Article, Visual C++] www.codeproject.com 26-Mar-2000 by Tri VU KHAC
	Date-Time Edit Control
	 
	Tri VU KHAC
	 
	A simple masked date-time editor
	
How to use the res: protocol in Developer Studio [Tip, MFC, Article, Visual C++] www.codeproject.com 26-Mar-2000 by Santosh Rao
	How to use the res: protocol in Developer Studio
	 
	Santosh Rao
	 
	A simple MFC demo application that demonstrates using the res: protocol 
to use resources in your applications
	
Debugging Applications [Debugging, Error, Error Handler, Book] Purchased 23-Mar-2000, $76.99
20% Discount
Understanding COM+ [COM, COM+, Book] Purchased 29-Feb-2000, $37.99
20% off
Compact long VB filepaths with SHLWAPI library (using: Visual Basic 6.0) [Ellipses, Filename, Long Path Name, Path Name, PathCompactPath(), SHLWAPI.DLL, Visual Basic, Tip] www.zdtips.com 23-Mar-2000
Compact long VB filepaths with SHLWAPI library

The PathCompactPath function in SHLWAPI provides one way to
compact long filenames. It does so by replacing a portion of
the pathname with an ellipsis (...). This function uses the
following API declaration statement:

Private Declare Function _
PathCompactPath Lib "shlwapi"_
	Alias "PathCompactPathA" _
	(ByVal hDC As Long, ByVal _
	lpszPath As String, _
	ByVal dx As Long) As Long

As you can see, the PathCompactPath function requires three arguments.
The first argument contains a device context handle.
The second argument holds the address of the pathname you want to use. 
The third argument contains the width in pixels of the spot in which you want 
the pathname to fit.
So, to place a compacted filename in a label named lblEllipsis, place the 
following in a command button's Click() event:

Private Sub Command1_Click()
Dim lhDC As Long, lCtlWidth As Long
Dim FileSpec As String

FileSpec =  "C:\MyFolder\VisualBasic\MyReallyWayTooLongFolderName\" & 
"ButWhoCares\IhaveTheAPI.doc"
Me.ScaleMode = vbPixels
lCtlWidth = lblEllipsis.Width - Me.DrawWidth
lhDC = Me.hDC
PathCompactPath lhDC, FileSpec, lCtlWidth
lblEllipsis.Caption = FileSpec
End Sub
Multiply Conditions for Boolean Result (using: Visual Basic 6.0) [Boolean, Visual Basic, Tip] www.devx.com 23-Mar-2000
Multiply Conditions for Boolean Result 
  You often have to test for multiple conditions when enabling a confirmation 
button or other control that commits user input. Instead of using complex 
If...ElseIf statements or inline If functions, you can manage multiple 
conditions by multiplying the many conditions together. This way, any condition 
that hasn't been met evaluates to zero and the rules of multiplication will 
keep your confirmation control disabled. For example, assume you have two 
textboxes that must contain text before enabling a command button. Call a 
common subroutine in each textbox's Change event: 

Private Sub Text1_Change()
	Call DoEnables
End Sub
Private Sub Text2_Change()
	Call DoEnables
End Sub

In the common subroutine, set the command button's Enabled property: 

Private Sub DoEnables
	cmdOk.Enabled = Len(Trim$(Text1)) * Len(Trim$(Text2))
End Sub

Also, adding new conditions is a simple task. Simply include the new condition 
into the series of multiplication: 

Private Sub TextMustBeGreaterThan5_Change()
	Call DoEnables
End Sub
Private Sub DoEnables()
	cmdOk.Enabled = Len(Trim$(Text1)) * Len(Trim$(Text2)) * _
		(Val(TextMustBeGreaterThan5) > 5)
End Sub

You can add as many conditions as you need. Any condition not met evaluates to 
zero before being included into the equation. Make sure to enclose your logical 
operators in parentheses. Even one zero results in zero for the entire 
calculation, which VB treats as False for the Enabled property. If all 
conditions are met, you get a nonzero number, which VB treats as True.  
Hyperlink control [Control, Article, Visual C++] www.codeproject.com 23-Mar-2000 by Chris Maunder
	Hyperlink control
	 
	Chris Maunder
	 
	A simple drop-in hyperlink control
	
Onscreen Keyboard [Sample, Article, Visual C++] www.codeproject.com 22-Mar-2000 by Randy More
	Onscreen Keyboard
	 
	Randy More
	 
	An onscreen keyboard for pen computing and touchscreens
	
Using Automation from Perl to send mail via Outlook (using: Perl, Outlook) [Automation, Mail, Perl, Outlook, Tip] 21-Mar-2000
sub mail_notification {

  use OLE;

  msg("*** mailing...");

  my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = 
    localtime(time);
  $mon++;
  my $date = sprintf($DATE_MASK, $year+1900, $mon, $mday);
  my $time= sprintf($TIME_MASK, $hour, $min, $sec);

  my $objSession = CreateObject OLE "Outlook.Application" or die "Cannot create 
Outlook Application object: $!";
  my $objMessage = $objSession -> CreateItem(0); # olMailItem = 0
  my $objRecipient = $objMessage -> Recipients -> 
Add('kirk_pearson@v-wave.com');
  $objRecipient -> {Type} = 1; # To
  $objMessage -> {Subject} = "Backup Log for $date $time";
  $objMessage -> {Body} = join ('', @_);
  $objMessage -> {Importance} = 1;
  $objMessage -> Send;

  msg("*** ... done mailing");

}  sub mail_notification
frmBrowser .... How create your own custom web browser [Browser, Internet Explorer, Microsoft Internet Transfer Control, SHDOCVW.DLL, Web, Visual Basic, VB Form] www.codeoftheweek.com 21-Mar-2000, no. 117
Requirements

Visual Basic 5.0 or higher.
Addition of the control called Microsoft Internet Controls (shdocvw.dll) to 
your project.
Internet Explorer 4.0 or higher.

In this Issue

In this issue we discuss how create your own custom web browser.

Using this form as a base you can expand it to include features
such as history lists, custom bookmarks, limited intranet browser
(restricts the user to certain sites) and more features that you
wish Microsoft included in their browser interface, but did not.
It can also be used to include a browser interface in your
application for display reports, help screens and other formatted
text.


frmBrowser

This form module encapsulates the web browsing feature of
Internet Explorer in about 20-30 lines of source code. This is one
of the best examples of the power of component programming.  It
uses the Microsoft Internet Controls which creates a WebBrowser
object in your Visual Basic environment.  You can get complete
details of the WebBrowser object model at

http://msdn.microsoft.com/workshop/browser/webbrowser/reference/objects/WebBrows
er.asp

You can download the complete project from

http://www.codeoftheweek.com/membersonly/bi/Browser.zip


Methods

Private Sub cmdGo_Click()

This method is where everything starts.  cmdGo_Click calls the
Navigate method of the WebBrowser control.  This starts the
process of downloading the appropriate files to display the pages
in the browser window.


Sample Usage

See below Source Code.
Why I Chose C++ [C++, MFC, STL, Article, Visual C++] www.codeproject.com 21-Mar-2000 by William T Block
	Why I Chose C++
	 
	William T Block
	 
	An introduction to C++ from a personal perspective
	
Introduction to drawing in Windows [Font, GDI, GUI, Article, Visual C++] www.codeproject.com 21-Mar-2000 by William T Block
	Introduction to drawing in Windows
	 
	William T Block
	 
	A simple introduction to using DCs to draw in Windows
	
Hide the JVM Console window [Java Programming, Article, Visual C++] www.codeproject.com 21-Mar-2000 by Buddy
	Hide the JVM Console window
	 
	Buddy
	 
	A simple application that hides the JVM console window while your JVM 
GUI runs
	
Dynamic submenus [Menu, Article, Visual C++] www.codeproject.com 21-Mar-2000 by Anneke Sicherer-Roetman
	Dynamic submenus
	 
	Anneke Sicherer-Roetman
	 
	Some handy functions for adding and deleting submenus and menuitems in 
runtime
	
A 2D data visualisation class [Control, Article, Visual C++] www.codeproject.com 21-Mar-2000 by Paul Barvinko
	A 2D data visualisation class
	 
	Paul Barvinko
	 
	A comprehensive set of classes for displaying 2 dimensional data
	
Syntax Coloring for user-defined keywords in Visual Studio [Tip, Color, Visual Studio, Article, Visual C++] www.codeproject.com 21-Mar-2000 by Keith Kudlac
	Syntax Coloring for user-defined keywords in Visual Studio
	 
	Keith Kudlac
	 
	A UserType.dat file that provides syntax coloring for user-defined 
keywords in Visual Studio
	
Tech Workshop - Create Tic-Tac-Toe [Article, Visual Basic] visualbasic.about.com 21-Mar-2000
	21-Mar-2000
	 
	21-Mar-2000
	  
	Tech Workshop - Create Tic-Tac-Toe
	 
	Your Visual Basic guide shows you how to create your own version of the 
classic game tic-tac-toe.
	
Projects [Article, Delphi] delphi.about.com 21-Mar-2000
	21-Mar-2000
	 
	21-Mar-2000
	 
	Projects
	 
	Delphi For Beginners: Understanding and managing the Project file (dpr).
	
Uses for extern in C++ (using: Visual C++ 6.0) [Compiler, C++, extern, Link, Visual C++, Tip] www.devx.com 19-Mar-2000
There are 2 similar, but different, uses for extern in C++.  It can be used
as 1) a storage class specifier for a variable or 2)to tell the compiler
how to link to an external function.

1) If you write a program that uses multiple files of source code, and you
have a global variable that you want to use in both files, then you can use
the extern keyword.

File A:
. . .
int myGlobal;   // Define a global variable
. . . 

File B:
. . . 
extern int myGlobal;  // Declare that you are using the same
. . .                 // global variable that was defined in 
                      // the other file

The extern keyword used in this sense is good for code maintenance because
it tells someone reading the code that you are intentionally using a variable
that was defined elsewhere.  If you find yourself using extern a lot in this
sense, I recommend that you re-think your program design to minimize coupling
between modules.

2) The second use is a little more complicated to explain well.  If you want
to link to functions in libraries or object files (I mean object as opposed
to source or executable) that were creating using a C compiler, you can use
the extern keyword.

Say File A is object code that was created using a C compiler and has a function
called void myCFunc();

To call that function from your C++ program that you are writing (without
recompiling the the source code for myCFunc using the C++ compiler) you would
use a function prototype like this:

extern "C" void myCFunc();

That will allow the C++ code that you write and compile to link to and use
the already written and compiled C code.  I have needed this to use already
existing libraries of code that were compiled with a C compiler because I
didn't have the source code for those libraries.

Some C++ compilers may even support linking to different languages than C.
 If so, the syntax would be:

extern "language_specifier" function_prototype
Declaring Function Pointers and Implementing Callbacks (using: Visual C++ 6.0) [Callback, Function Pointer, Visual C++, Tip] www.devx.com 19-Mar-2000 by Danny Kalev
Declaring Function Pointers and Implementing Callbacks
By Danny Kalev


Programmers often need to implement callbacks. I will discuss the fundamentals 
of function pointers and show how to use them to implement callbacks. Notice 
that this article focuses on ordinary functions, not class member functions, 
which rely on substantially different syntactic and semantic rules (pointers to 
class members were discussed in a previous 10-Minute Solution). 

Declaring a Function Pointer

A callback function is one that is not invoked explicitly by the programmer; 
rather the responsibility for its invocation is delegated to another function 
that receives the callback function's address. To implement a callback, you 
need to define an appropriate function pointer first. Although the syntax is a 
bit arcane, if you're familiar with function declarations in general, you will 
notice that a function pointer declaration is very similar to a function 
declaration. Consider the following example: 


   void f(); // a function prototype
   
It declares a function f() that takes no arguments and returns void. A pointer 
to such a function has the following type: 


  void (*) ();
 
Let's parse it. The asterisk in the leftmost parentheses is the nucleus of a 
function pointer declaration. Two additional elements are the function's return 
type, which appears on the left and is 'void' in our example, and a parameter 
list enclosed in the rightmost parentheses. In our case, the parameter list is 
empty because f() takes no arguments. Note that we didn't create a pointer 
variable yet—we only declared the type of such a variable. We can use this type 
to create a typedef name, or in a sizeof expression: 


  // get the size of a function pointer
  unsigned psize = sizeof (void (*) ()); 
  
  // declare a typedef for a function pointer
  typedef void (*pfv) ();

pfv is a synonym for "a pointer to a function that takes no arguments and 
returns void". We can use this typedef name to hide th ... (cont.)
HELPING THE COMPILER DEDUCE THE TYPE OF A TEMPLATE ARGUMENT (using: Visual C++ 6.0) [Template, Visual C++, Tip] www.devx.com 19-Mar-2000
HELPING THE COMPILER DEDUCE THE TYPE OF A TEMPLATE ARGUMENT                    
           
In general, the compiler deduces the type of a function template 
argument automatically. For example: 
 
int n = max (5,10); /* max< int > deduced because 5 and 10 are int's */ 
 
However, sometimes the compiler needs more explicit clues regarding 
the type of the argument, as in the following example: 
 
template < class T >T f() 
{ 
  return  static_cast< T > (0); 
}  
int main() 
{ 
 int  n =  f();/*error, can't deduce argument type*/ 
 double d = f(); /*ditto*/ 
} 
 
The program fails to compile because the compiler cannot deduce what 
the type of f's argument is (the return type is insufficient for that 
purpose). In situations like these, you can state the type of the 
template argument explicitly: 
 
int i = f < int > (); /*now OK */ 
double d = f < double >(); /* OK*/ 
ATL/AUX Library [ATL, Article, Visual C++] www.codeproject.com 18-Mar-2000 by Andrew Nosenko
	ATL/AUX Library
	 
	Andrew Nosenko
	 
	A set of VC++ helpers and patterns to help automate some routine coding 
tasks.
	
CByteArrayFile - storing objects in databases using DAO [Database, Article, Visual C++] www.codeproject.com 18-Mar-2000 by You HongJiang, Daniel Kaminski
	CByteArrayFile - storing objects in databases using DAO
	 
	You HongJiang and Daniel Kaminski
	 
	A class used to serialize object into a database field
	
QuickSort enabled CArray Template class [C++, MFC, STL, CArray Class, Template, Article, Visual C++] www.codeproject.com 17-Mar-2000 by Martin Ziacek
	QuickSort enabled CArray Template class
	 
	Martin Ziacek
	 
	A CArray derived class that provides quick and convenient sorting
	
SEH and C++ Exceptions - catch all in one [C++, MFC, STL, Article, Visual C++] www.codeproject.com 17-Mar-2000 by Martin Ziacek
	SEH and C++ Exceptions - catch all in one
	 
	Martin Ziacek
	 
	This article describes how to handle SE and C++ exception together.
	
Round Slider Control [Control, Article, Visual C++] www.codeproject.com 17-Mar-2000 by Daniel Frey
	Round Slider Control
	 
	Daniel Frey
	 
	A round slider control to allow users to adjust an angle or similar 
values
	
The CAccessReports class [Database, Access, Article, Visual C++] www.codeproject.com 15-Mar-2000 by Tom Archer
	The CAccessReports class
	 
	Tom Archer
	 
	A class for Printing and Viewing MS Access Reports
	
The CODBCDynamic class [Database, ODBC, Article, Visual C++] www.codeproject.com 15-Mar-2000 by Tom Archer
	The CODBCDynamic class
	 
	Tom Archer
	 
	A class to dynamically read data from any ODBC data source
	
Views in a Sizeable Docking Control Bar (CSizingControlBar) [Toolbar, Docking Window, Article, Visual C++] www.codeproject.com 15-Mar-2000 by Rob Finch
	Views in a Sizeable Docking Control Bar (CSizingControlBar)
	 
	Rob Finch
	 
	A fairly simple way to incoporate views into sizing control bars
	
Kylix := Delphi in [Linux] [Article, Delphi] delphi.about.com 14-Mar-2000
	14-Mar-2000
	 
	14-Mar-2000
	 
	Kylix := Delphi in [Linux]
	 
	Step forward in the application development software for the Linux 
platform.
	
ucDriveInfo .... Show the available disk space of all connected drives [Disk Space, Drive, UserControl, VB Code Module, Visual Basic, VB UserControl] www.codeoftheweek.com 12-Mar-2000, no. 116
Requirements

Visual Basic 5.0 or higher.

In this Issue

In this issue we discuss a couple of topics.  Primarily this
issue discusses custom controls and dynamic control creation.


ucDriveInfo

This issue is more of an application itself than a single module.
It is designed to show the available disk space of all connected
drives.  It will automatically update as you map and unmap network
drives.  It shows the free space in text and graphical form.  The
available disk space is determined using the logic found in issue
#51 - http://www.codeoftheweek.com/issues/0051.html

Some of the more interesting techniques shown in this issue are
how to create controls on the fly in VB 5 and up (some new
features were introduced in VB 6 to make this even easier).  Each
drive is represented by a ucDriveInfo user control.  The code
within the main form calls the Refresh method as often as
necessary.

The complete source code (project and all) is available at
http://www.codeoftheweek.com/issues/issue116


Properties

Public Property Let DriveLetter(sDrive As String)

Allows you to assign which drive letter this control is going to
watch.  sDrive only needs to contain a single letter from A to Z.
It will handle drives passed as x: (where you specify the : after
the drive letter).


Methods

Public Sub Refresh()

Refreshes the information about the drive specified by
DriveLetter.



Sample Usage

This issue is an application itself so there is no sample to
show.

See http://www.codeoftheweek.com/issues/issue116 for the complete source code.
How to write a C program [Article, Visual C++] cplus.about.com 12-Mar-2000
	12-Mar-2000
	 
	12-Mar-2000
	  
	How to write a C program
	 
	Writing, compiling and running a C program
	
MBSplitter ActiveX Control [Splitter, ActiveX Control, Article, Visual Basic] www.vb2themax.com 11-Mar-2000 by Marco Bellinaso
	MBSplitter ActiveX Control
	  
	11-Mar-2000
	 
	11-Mar-2000
	 
	Marco Bellinaso
	 
	Another great and useful control by Marco Bellinaso. Place this control 
on a form to immediately achieve splitting capabilities. It works as a 
container control, and the controls you drop on it will be automatically 
resized when the end user moves the splitter bars. You can control the splitter 
bar's size, color, and position, and programmatically assign controls to its 
two panes. The SplitBegin and SplitComplete events inform you when the drag 
operation begins and ends, so your code can do any additional processing as 
required.
	
API Spyer Utility [API Programming, Article, Visual Basic] www.vb2themax.com 11-Mar-2000 by Steve Weller
	API Spyer Utility
	  
	11-Mar-2000
	 
	11-Mar-2000
	 
	Steve Weller
	 
	This handy utility by Steve Weller lets you browse the properties of 
the window under the mouse cursor. You can use it to learn the window's handle, 
caption, class name, size, position, style, and application instance. 
Furthermore, you can change a few of its attributes, such as its caption, its 
visibility and the enabled state. On top of that, you have the complete source 
code, to play with and to learn from!
	
Multi-Field Edit Controls [Edit Control, Article, Visual C++] www.codeguru.com 11-Mar-2000 by George Chastain
	Multi-Field Edit Controls
	 
	George Chastain
	 
	A Whole New Class of Edit Controls
	
UTM Coordinate Control [Control, Article, Visual C++] www.codeguru.com 11-Mar-2000 by George Chastain
	UTM Coordinate Control
	 
	George Chastain
	 
	
	
Tuning SHGetFileInfo for Optimum Performance [Shell Programming, Article, Visual C++] www.codeguru.com 11-Mar-2000 by Michael Harnad
	Tuning SHGetFileInfo for Optimum Performance
	 
	Michael Harnad
	 
	
	
Adding a Document Selector to a MDI Application [Document/View, Article, Visual C++] www.codeguru.com 11-Mar-2000 by Yogesh Jagota
	Adding a Document Selector to a MDI Application
	 
	Yogesh Jagota
	 
	
	
Tuning SHGetFileInfo for Optimum Performance [Article, Visual C++] www.earthweb.com 11-Mar-2000 by Michael Harnad
	Tuning SHGetFileInfo for Optimum Performance
	 
	Michael Harnad
	 
	11-Mar-2000
	 
	11-Mar-2000
	 
	Illustrates how to efficiently use the SHGetFileInfo shell function
	
Adding a Document Selector to a MDI Application [Article, Visual C++] www.earthweb.com 11-Mar-2000 by Yogesh Jagota
	Adding a Document Selector to a MDI Application
	 
	Yogesh Jagota
	 
	11-Mar-2000
	 
	11-Mar-2000
	 
	A control which enables the user to quickly jump to a selected document 
in a MDI application
	
UTM Coordinate Control [Article, Visual C++] www.earthweb.com 11-Mar-2000
	UTM Coordinate Control
	 
	-N/A
	 
	11-Mar-2000
	 
	11-Mar-2000
	 
	VC++ code for a control that displays coordinates on a Universal 
Transverse Mercator (UTM) grid
	
Multi-Field Edit Controls [Article, Visual C++] www.earthweb.com 11-Mar-2000
	Multi-Field Edit Controls
	 
	-N/A
	 
	11-Mar-2000
	 
	11-Mar-2000
	 
	VC++ code for an edit control containing multiple fields
	
Tutorial on Extended Stored Procedures for MS SQL Server v7.0 [Database, SQL Server, Article, Visual C++] www.codeproject.com 10-Mar-2000 by Santosh Rao
	Tutorial on Extended Stored Procedures for MS SQL Server v7.0
	 
	Santosh Rao
	 
	An interface that can be used to build robust applications that extend 
the power of MS SQL Server.
	
CRasMonitor v1.41 [Internet, Network, Monitor, Article, Visual C++] www.codeproject.com 10-Mar-2000 by P J Naughter
	CRasMonitor v1.41
	 
	P J Naughter
	 
	A shareware application to Monitor your Dial-Up Networking Connections.
	
PopWatch v1.01 [Internet, Network, Monitor, Article, Visual C++] www.codeproject.com 10-Mar-2000 by P J Naughter
	PopWatch v1.01
	 
	P J Naughter
	 
	A freeware application to Monitor your POP3 mailbox.
	
Auto File Save Add-in for Visual Studio 6.0 [Macro, Add-in, Visual Studio, Article, Visual C++] www.codeproject.com 10-Mar-2000 by Itay Szekely
	Auto File Save Add-in for Visual Studio 6.0
	 
	Itay Szekely
	 
	Add auto-save feature to Visual Studio 6.0.
	
QuickHex [Tip, Shell Extension, Article, Visual C++] www.codeproject.com 10-Mar-2000 by Shanker Chandrabose
	QuickHex
	 
	Shanker Chandrabose
	 
	A Hex Viewer Shell Extension.
	
Wizard2000 - Wizard 97 Property Sheet [Windows 2000, Property Sheet, Article, Visual C++] www.codeproject.com 10-Mar-2000 by Santosh Rao
	Wizard2000 - Wizard 97 Property Sheet
	 
	Santosh Rao
	 
	Implements an application whose main window is a Wizard 97 based 
property sheet.
	
A Document-View foundation for WTL. Part 1 [Windows Template Library, WTL, Component, Article, Visual C++] www.codeproject.com 10-Mar-2000 by Sandu Turcan
	A Document-View foundation for WTL. Part 1
	 
	Sandu Turcan
	 
	A library that provides the easiest way to get loosely coupled 
Components.
	
Auto-Incrementing Build Numbers [Macro, Add-in, Article, Visual C++] www.codeproject.com 09-Mar-2000 by Navi Singh
	Auto-Incrementing Build Numbers
	 
	Navi Singh
	 
	Describes a way to automatically generate an application build number.
	
Animated Tray Icon Class [Shell Programming, Article, Visual C++] www.codeguru.com 09-Mar-2000 by Kiran Thonse Sanjeeva
	Animated Tray Icon Class
	 
	Kiran Thonse Sanjeeva
	 
	
	
Animated Tray Icon Class [Article, Visual C++] www.earthweb.com 09-Mar-2000 by Kiran Thonse Sanjeeva
	Animated Tray Icon Class
	 
	Kiran Thonse Sanjeeva
	 
	9-Mar-2000
	 
	9-Mar-2000
	 
	Very simple function that enables you to animate your tray 
application's icon
	
CFtpGet: FTP File Retrieval Class [Internet, Article, Visual C++] www.codeguru.com 07-Mar-2000 by Robert Lascelle
	CFtpGet: FTP File Retrieval Class
	 
	Robert Lascelle
	 
	
	
Using DAO from a DLL [Database, Article, Visual C++] www.codeguru.com 07-Mar-2000 by Joe Bernier
	Using DAO from a DLL
	 
	Joe Bernier
	 
	
	
Using DAO from a DLL [Article, Visual C++] www.earthweb.com 07-Mar-2000 by Joe Bernier
	Using DAO from a DLL
	 
	Joe Bernier
	 
	7-Mar-2000
	 
	7-Mar-2000
	 
	Illustrated different problems associated with using DAO from an MFC 
DLL and the workarounds necessary to get it to work
	
CFtpGet - FTP File Retrieval Class [Article, Visual C++] www.earthweb.com 07-Mar-2000 by Robert Lascelle
	CFtpGet - FTP File Retrieval Class
	 
	Robert Lascelle
	 
	7-Mar-2000
	 
	7-Mar-2000
	 
	Very easy to use Visual C++ class to download files via FTP
	
An Othello / Reversi Game in VB5 / 6 [Game, Article, Visual Basic] www.earthweb.com 07-Mar-2000
	An Othello / Reversi Game in VB5 / 6
	 
	-N/A
	 
	7-Mar-2000
	 
	7-Mar-2000
	 
	VB code for an Othello game
	
Exporting VB code to RTF or HTML format with Syntax Highlighting [Export, RTF, HTML, Syntax, Article, Visual Basic] www.earthweb.com 07-Mar-2000
	Exporting VB code to RTF or HTML format with Syntax Highlighting
	 
	-N/A
	 
	7-Mar-2000
	 
	7-Mar-2000
	 
	VB code to export code in color
	
A HyperLink Control [HyperLink, ActiveX, Article, Visual Basic] www.earthweb.com 07-Mar-2000
	A HyperLink Control
	 
	-N/A
	 
	7-Mar-2000
	 
	7-Mar-2000
	 
	VB code to create an ActiveX HyperLink control
	
Resize me Gently [Article, Delphi] delphi.about.com 07-Mar-2000
	07-Mar-2000
	 
	07-Mar-2000
	 
	Resize me Gently
	 
	What to keep in mind when scaling Delphi applications (forms) on 
different screen resolutions.
	
System Information Class [System, Article, Visual C++] www.codeguru.com 06-Mar-2000 by Tien Chen
	System Information Class
	 
	Tien Chen
	 
	Class that retrieves all system information in two lines of code !
	
Expanding Dialog [Dialog, Update, Article, Visual C++] www.codeguru.com 06-Mar-2000 by D Sivakumar
	Expanding Dialog
	 
	D Sivakumar
	 
	
	
Corel PhotoHouse-like Color Chooser [Dialog, Article, Visual C++] www.codeguru.com 06-Mar-2000 by Rajiv Ramachandran
	Corel PhotoHouse-like Color Chooser
	 
	Rajiv Ramachandran
	 
	Update to demo project
	
CRichEditView/CRichEditDoc Bug Work-Around [Rich Edit, Article, Visual C++] www.codeguru.com 06-Mar-2000 by John Czopowik
	CRichEditView/CRichEditDoc Bug Work-Around
	 
	John Czopowik
	 
	Very nice article not only the bug, but why it's there and how to fix 
it !!
	
Corel PhotoHouse-like Color Chooser [Article, Visual C++] www.earthweb.com 06-Mar-2000 by Rajiv Ramachandran
	Corel PhotoHouse-like Color Chooser
	 
	Rajiv Ramachandran
	 
	6-Mar-2000
	 
	6-Mar-2000
	 
	Ever wanted one of those fancy color picking dialogs that apps like 
Corel PhotoHouse have ? If you did, here it is !!
	
Corel PhotoHouse-like Color Chooser [Article, Visual C++] www.earthweb.com 06-Mar-2000 by Rajiv Ramachandran
	Corel PhotoHouse-like Color Chooser
	 
	Rajiv Ramachandran
	 
	6-Mar-2000
	 
	6-Mar-2000
	 
	Ever wanted one of those fancy color picking dialogs that apps like 
Corel PhotoHouse have ? If you did, here it is !!
	
Expanding Dialog [Article, Visual C++] www.earthweb.com 06-Mar-2000 by D Sivakumar
	Expanding Dialog
	 
	D Sivakumar
	 
	6-Mar-2000
	 
	6-Mar-2000
	 
	CDialog-based class that enables you to have an expanding/contracting 
dialog
	
CClockCtrl v1.01 [Dialog, Windows Programming, MFC, Article, Visual C++] www.codeproject.com 05-Mar-2000 by P J Naughter
	CClockCtrl v1.01
	 
	P J Naughter
	 
	A Freeware MFC class to display an analog clock.
	
Bitmap Basics - A GDI tutorial [Bitmap, Palette, Article, Visual C++] www.codeproject.com 04-Mar-2000 by Chris Becke
	Bitmap Basics - A GDI tutorial
	 
	Chris Becke
	 
	A set of basic tutorials on working with the core bitmap structures
	
CLedButton [Button Control, Article, Visual C++] www.codeproject.com 04-Mar-2000 by Benjamin Mayrargue
	CLedButton
	 
	Benjamin Mayrargue
	 
	A button that looks like a LED.
	
IconComboBox - Selecting Icons [Combobox, List Control, Icon, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	IconComboBox - Selecting Icons
	 
	P J Naughter
	 
	2 Freeware MFC icon selection combo box classes
	
C & C++ Language Tricks [C++, MFC, STL, Article, Visual C++] www.codeproject.com 04-Mar-2000 by Chris Becke
	C & C++ Language Tricks
	 
	Chris Becke
	 
	More tricks of use to a programmer who shuns run-time libraries.
	
CHookWnd v1.02 [C++, MFC, STL, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CHookWnd v1.02
	 
	P J Naughter
	 
	A freeware MFC class to support MFC subclassing
	
CInt96 v1.04 - 96 Bit Integers [C++, MFC, STL, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CInt96 v1.04 - 96 Bit Integers
	 
	P J Naughter
	 
	A Freeware MFC class which provides 96 bit integers.
	
CSingleInstance - Single Instance Apps [C++, MFC, STL, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CSingleInstance - Single Instance Apps
	 
	P J Naughter
	 
	An MFC class to implement single instance apps.
	
Implementing Linked Lists with Double Pointers [C++, MFC, STL, Article, Visual C++] www.codeproject.com 04-Mar-2000 by Chris Becke
	Implementing Linked Lists with Double Pointers
	 
	Chris Becke
	 
	Describes a linked list implementation that uses double pointers.
	
CCPUTicker v1.22 - Precision Timing [Date, Time, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CCPUTicker v1.22 - Precision Timing
	 
	P J Naughter
	 
	An ultra high precision MFC timing class for Pentium or greater CPUs.
	
CIconDialog - Icon Selection Dialog [Dialog, Windows Programming, Icon, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CIconDialog - Icon Selection Dialog
	 
	P J Naughter
	 
	A Freeware MFC dialog class to select an icon.
	
CPushPinFrame v1.11 [Dialog, Windows Programming, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CPushPinFrame v1.11
	 
	P J Naughter
	 
	A Freeware MFC PushPin property page dialog class.
	
DDXFile v1.11 - DDX Filename Selection [Dialog, Windows Programming, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	DDXFile v1.11 - DDX Filename Selection
	 
	P J Naughter
	 
	A Freeware DDX routine for selecting a filename.
	
Splasher v1.32 - A Splash Screen Implementation [Dialog, Windows Programming, Component, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	Splasher v1.32 - A Splash Screen Implementation
	 
	P J Naughter
	 
	An improved splash screen Component for MFC.
	
HookImportFunctionByName v1.0 [DLL, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	HookImportFunctionByName v1.0
	 
	P J Naughter
	 
	A class to hook any imported function call made by your app.
	
NiftyLoadLibrary and Rebasing DLL [DLL, Article, Visual C++] www.codeproject.com 04-Mar-2000 by Chris Becke
	NiftyLoadLibrary and Rebasing DLL
	 
	Chris Becke
	 
	The home of NiftyLoadLibrary and some notes on rebasing dlls.
	
DDXFolder & CChooseDirDlg v1.24 [Edit Control, Folder, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	DDXFolder & CChooseDirDlg v1.24
	 
	P J Naughter
	 
	A Freeware DDX routine for selecting a Directory / Folder.
	
Capturing the Mouse [Font, GDI, GUI, Article, Visual C++] www.codeproject.com 04-Mar-2000 by Chris Becke
	Capturing the Mouse
	 
	Chris Becke
	 
	Notes on TrackMouseEvent, and SetCapture on Win32.
	
CAnonymousPipe - Anonymous Pipe Implementation [Internet, Network, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CAnonymousPipe - Anonymous Pipe Implementation
	 
	P J Naughter
	 
	A Freeware MFC class to encapsulate Anonymous Pipes
	
CCmc v1.0 - A CMC Implementation [Internet, Network, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CCmc v1.0 - A CMC Implementation
	 
	P J Naughter
	 
	An MFC class to encapsulate sending mail using CMC.
	
CEQD v1.0 - Earthquake Data Downloader [Internet, Network, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CEQD v1.0 - Earthquake Data Downloader
	 
	P J Naughter
	 
	A Freeware MFC class to support retrieval of recent Earthquake data 
from the USGS.
	
CFinger v1.01 The Finger Protocol [Internet, Network, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CFinger v1.01 The Finger Protocol
	 
	P J Naughter
	 
	An MFC class to encapsulate the Finger protocol.
	
CFTPTransferDlg v1.0 - The FTP Protocol [Internet, Network, FTP, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CFTPTransferDlg v1.0 - The FTP Protocol
	 
	P J Naughter
	 
	A dialog implementation that performs a FTP file transfer.
	
CHttpDownloadDlg v1.03 [Internet, Network, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CHttpDownloadDlg v1.03
	 
	P J Naughter
	 
	A dialog implementation that performs HTTP downloads.
	
CMapi v1.01 - A MAPI Implementation [Internet, Network, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CMapi v1.01 - A MAPI Implementation
	 
	P J Naughter
	 
	An MFC class to encapsulate sending mail using Simple MAPI.
	
CNamedPipe v1.0 [Internet, Network, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CNamedPipe v1.0
	 
	P J Naughter
	 
	A Freeware MFC class to encapsulate Named Pipes.
	
CPing v1.22 [Internet, Network, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CPing v1.22
	 
	P J Naughter
	 
	An MFC class to encapsulate the Ping utility.
	
CPop3Connection v1.19 [Internet, Network, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CPop3Connection v1.19
	 
	P J Naughter
	 
	An MFC class to encapsulate the POP3 protocol
	
CServerMailslot & CClientMailslot [Internet, Network, MFC, Wrapper Class, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CServerMailslot & CClientMailslot
	 
	P J Naughter
	 
	Freeware MFC Wrapper Classes for Win32 Mailslots.
	
CSMTPConnection v1.36 [Internet, Network, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CSMTPConnection v1.36
	 
	P J Naughter
	 
	An MFC class to encapsulate the SMTP protocol.
	
Network IPEnum v1.01: IP Address Enumeration [Internet, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	Network IPEnum v1.01: IP Address Enumeration
	 
	P J Naughter
	 
	An MFC class to allow enumeration of IP addresses.
	
MfcCDDB v1.15 [Internet, Network, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	MfcCDDB v1.15
	 
	P J Naughter
	 
	A freeware MFC class to support access to CDDB servers.
	
CMapPin: A Map Pin Implementation [Control, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CMapPin: A Map Pin Implementation
	 
	P J Naughter
	 
	A Freeware MFC class to implement Map pins.
	
CPushPinButton v1.13 = A Push Pin Implementation [Control, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CPushPinButton v1.13 = A Push Pin Implementation
	 
	P J Naughter
	 
	A Freeware MFC PushPin button class.
	
CShellLink & CUrlShellLink v1.1 [Shell Programming, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CShellLink & CUrlShellLink v1.1
	 
	P J Naughter
	 
	2 Freeware MFC classes to encapsulate shell shortcuts.
	
CFile64: File System Wrapper [System, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CFile64: File System Wrapper
	 
	P J Naughter
	 
	A freeware MFC class to encapsulate the Win32 64 bit file system API.
	
CHKLM v1.1: Registry Access [System, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CHKLM v1.1: Registry Access
	 
	P J Naughter
	 
	A Freeware MFC class to write to HKEY_LOCAL_MACHINE.
	
CNTService v1.06: NT Service Framework [System, NT Service, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CNTService v1.06: NT Service Framework
	 
	P J Naughter
	 
	A class framework for developing NT services in MFC.
	
CPdh v1.03: NT Performance Info [System, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CPdh v1.03: NT Performance Info
	 
	P J Naughter
	 
	A collection of freeware MFC classes to encapsulate the NT Performance 
Counters.
	
CSerialPort v1.03: Serial Port Wrapper [System, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CSerialPort v1.03: Serial Port Wrapper
	 
	P J Naughter
	 
	A freeware MFC class for Win32 serial ports.
	
DtWinVer v1.34: OS Detection Utility [System, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	DtWinVer v1.34: OS Detection Utility
	 
	P J Naughter
	 
	A comprehensive OS detection utility.
	
DynData v1.0: Win95/98 Performance Counters [System, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	DynData v1.0: Win95/98 Performance Counters
	 
	P J Naughter
	 
	A collection of freeware MFC classes to encapsulate the Windows 95/98 
performance counters.
	
EnumSerialPorts v1.02: Enumerating Serial Ports [System, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	EnumSerialPorts v1.02: Enumerating Serial Ports
	 
	P J Naughter
	 
	A freeware MFC function to enumerate serial ports.
	
ShelExec v1.01: Executing Shell Commands [System, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	ShelExec v1.01: Executing Shell Commands
	 
	P J Naughter
	 
	A freeware utility to call the ShellExecute API
	
PStat v1.2: Threading Framework [Thread, Process, Inteprocess Communication, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	PStat v1.2: Threading Framework
	 
	P J Naughter
	 
	A Freeware generalized framework for executing a lengthy operation in a 
thread.
	
Programming the MS Agent Control [Tip, Office, Article, Visual C++] www.codeproject.com 04-Mar-2000 by Santosh Rao
	Programming the MS Agent Control
	 
	Santosh Rao
	 
	Programming an animated agent similar to the Office assistant.
	
ResSwitch & ResList v1.2: Easily change screen resolution [Tip, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	ResSwitch & ResList v1.2: Easily change screen resolution
	 
	P J Naughter
	 
	2 freeware utilities to quickly change Screen Depth and Resolution.
	
CTreeFileCtrl & CSortedArray v1.06 [Tree Control, Explorer, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CTreeFileCtrl & CSortedArray v1.06
	 
	P J Naughter
	 
	Implements a tree control similar to the left hand side of Windows 
Explorer.
	
CTreeOptionsCtrl v1.21 [Tree Control, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CTreeOptionsCtrl v1.21
	 
	P J Naughter
	 
	A freeware MFC class to provide a tree options control.
	
CMemMapFile v1.41 [Win32, SDK Programming, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CMemMapFile v1.41
	 
	P J Naughter
	 
	A freeware MFC class to encapsulate Memory Mapped Files.
	
CPL++ v1.1: Control Panel Applets [Win32, SDK Programming, MFC, Article, Visual C++] www.codeproject.com 04-Mar-2000 by P J Naughter
	CPL++ v1.1: Control Panel Applets
	 
	P J Naughter
	 
	A freeware MFC class framework for developing Control Panel Applets.
	
Low-level Security Classes [System, Article, Visual C++] www.codeproject.com 02-Mar-2000 by Peter Kenyon
	Low-level Security Classes
	 
	Peter Kenyon
	 
	A set of classes to encapsulate the Win32 Security APIs
	
GUID Generator: Developer Studio Addin [Macro, Article, Visual C++] www.codeguru.com 02-Mar-2000 by Eddie Velasquez
	GUID Generator: Developer Studio Addin
	 
	Eddie Velasquez
	 
	Extends the Microsoft GUIDGEN by including two more common formats
	
CString like class using STL [String, Article, Visual C++] www.codeguru.com 02-Mar-2000 by Joe O'Leary
	CString like class using STL
	 
	Joe O'Leary
	 
	Bug fixes; Reduced code to single. h file; Also works on non-Win32 
platforms
	
Finger Utility [Internet, Article, Visual C++] www.codeguru.com 02-Mar-2000 by Alexei Veremenko
	Finger Utility
	 
	Alexei Veremenko
	 
	
	
Finger Utility [Article, Visual C++] www.earthweb.com 02-Mar-2000 by Alexei Veremenko
	Finger Utility
	 
	Alexei Veremenko
	 
	2-Mar-2000
	 
	2-Mar-2000
	 
	Very little documentation, but nice code on writing a Finger Utility
	
GUID Generator - Developer Studio Addin [Article, Visual C++] www.earthweb.com 02-Mar-2000 by Eddie Velasquez
	GUID Generator - Developer Studio Addin
	 
	Eddie Velasquez
	 
	2-Mar-2000
	 
	2-Mar-2000
	 
	GUIDGen is an Add-In that replaces and extends the GUID Generator 
component included with Developer Studio.
	
CString-like Class Using STL [Article, Visual C++] www.earthweb.com 02-Mar-2000 by Joe O'Leary
	CString-like Class Using STL
	 
	Joe O'Leary
	 
	2-Mar-2000
	 
	2-Mar-2000
	 
	Gives you all the functionality of a CString (without having to have 
MFC)
	
How to set a file's Date and Time (using: Visual Basic 6.0) [CloseHandle(), File, FILETIME, FileTimeToSystemTime(), GetFileTime(), OFSTRUCT, OpenFile(), SetFileTime(), Solution, SYSTEMTIME, SystemTimeToFileTime(), Time, Visual Basic] www.blackbeltvb.com 01-Mar-2000 by Matt Hart
Uses the following API functions:
CloseHandle()
GetFileTime()
FileTimeToSystemTime()
OpenFile()
SetFileTime()
SystemTimeToFileTime()

' OpenFile() Flags

Private Const OF_READ = &H0
Private Const OF_WRITE = &H1
Private Const OF_READWRITE = &H2
Private Const OF_SHARE_COMPAT = &H0
Private Const OF_SHARE_EXCLUSIVE = &H10
Private Const OF_SHARE_DENY_WRITE = &H20
Private Const OF_SHARE_DENY_READ = &H30
Private Const OF_SHARE_DENY_NONE = &H40
Private Const OF_PARSE = &H100
Private Const OF_DELETE = &H200
Private Const OF_VERIFY = &H400
Private Const OF_CANCEL = &H800
Private Const OF_CREATE = &H1000
Private Const OF_PROMPT = &H2000
Private Const OF_EXIST = &H4000
Private Const OF_REOPEN = &H8000

Private Const OFS_MAXPATHNAME = 128

' OpenFile() Structure
Private Type OFSTRUCT
    cBytes As Byte
    fFixedDisk As Byte
    nErrCode As Integer
    Reserved1 As Integer
    Reserved2 As Integer
    szPathName(OFS_MAXPATHNAME) As Byte
End Type

Private Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type

Private Type SYSTEMTIME
    wYear As Integer
    wMonth As Integer
    wDayOfWeek As Integer
    wDay As Integer
    wHour As Integer
    wMinute As Integer
    wSecond As Integer
    wMilliseconds As Integer
End Type

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As 
Long
Private Declare Function GetFileTime Lib "kernel32" (ByVal hFile As Long, 
lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As 
FILETIME) As Long
Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As 
FILETIME, lpSystemTime As SYSTEMTIME) As Long
Private Declare Function OpenFile Lib "kernel32" (ByVal lpFileName As String, 
lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long
' Note I've changed the lpLastAccessTime from a FILETIME to a LONG, because I'm 
going to pass a 0 (Null) 'cause I don't want to set it.
Private Declare Function SetFileTime Lib "kernel32" (ByVal hFile As Long, 
lpC ... (cont.)
Cross-Platform Development Using GCC [Cross-Platform Development, GCC, Compiler, Article, Visual C++] C++ Users Journal 01-Mar-2000 by Jamie Guinan
	Cross-Platform Development Using GCC
	 
	Jamie Guinan
	  
	You can build any number of native and cross Compilers from GCC, if you 
know how.
	
Not-So-Obvious Utility Macros [Macro, Preprocessor, Article, Visual C++] C++ Users Journal 01-Mar-2000 by Radoslav Getov
	Not-So-Obvious Utility Macros
	 
	Radoslav Getov
	  
	We all know the Preprocessor is primitive and ugly. Nevertheless, a 
clever macro or two can still come in handy more often than we care to admit.
	
Finding Neat Scales for Plotting [Plotting, Article, Visual C++] C++ Users Journal 01-Mar-2000 by Antonio Gómiz Bas
	Finding Neat Scales for Plotting
	 
	Antonio Gómiz Bas
	  
	Labeling axes is easy for people. For a computer, it’s rather less 
obvious.
	
An Embedded Memory-Based SQL Class for C++ [SQL, Class, C++, Article, Visual C++] C++ Users Journal 01-Mar-2000 by Ben Faul
	An Embedded Memory-Based SQL Class for C++
	 
	Ben Faul
	  
	SQL and C++ make a powerful combination, particularly if you don’t have 
to do the combining yourself
	
Taming the 3-D Perspective Transform [3-D, Transform, Perspective, Article, Visual C++] C++ Users Journal 01-Mar-2000 by Alex Telford
	Taming the 3-D Perspective Transform
	 
	Alex Telford
	  
	Showing objects in Perspective requires only simple math, but a little 
not-so-simple strategy makes for a friendlier display.
	
An STL-Based N-Way Set [STL, N-way Set, Database, Container, Article, Visual C++] C++ Users Journal 01-Mar-2000 by Mark L Smith
	An STL-Based N-Way Set
	 
	Mark L Smith
	  
	Databases support access with multiple keys. Why not allow the same 
latitude with an STL-style Container?
	
Making Primitive Objects Thread Safe [Object, Thread Safe, Article, Visual C++] C++ Users Journal 01-Mar-2000 by Juval Lowy
	Making Primitive Objects Thread Safe
	 
	Juval Lowy
	  
	All sorts of things need thread locks. A fairly simple template or two 
can do the job.
	
Testing Conformance [Conformance, Article, Visual C++] C++ Users Journal 01-Mar-2000 by P J Plauger
	P J Plauger
	 
	Testing Conformance
	 
	It’s impossible to prove conclusively that an implementation conforms 
to a standard, but you can at least build some level of confidence.
	
Delphi COM: In-Process Servers Under the Microscope, Part 1 [COM, In-Process Server, COM Server, Article, Delphi] Delphi Developer 01-Mar-2000, vol. 6, no. 3 by Fernando Vicaria
	Delphi COM: In-Process Servers Under the Microscope, Part 1
	 
	Fernando Vicaria
	 
	The objective of this article is not to teach COM or how to program in 
Delphi. Instead, Fernando Vicaria shows you what goes on behind the scenes when 
you write a simple COM Server. This is no short subject, so it's been split 
into two parts. Part 1 discusses in-process servers -- that is, COM servers 
that are implemented as a DLL. Part 2 will discuss out-of-process and remote 
servers.
	
Delphi IDE Wizardry: Experts [IDE, Expert, Wizard, IDE, Article, Delphi] Delphi Developer 01-Mar-2000, vol. 6, no. 3 by Bob Swart
	Delphi IDE Wizardry: Experts
	 
	Bob Swart
	 
	"Delphi IDE Wizardry" is a column that explores new features and 
enhancements found in and developed for the Delphi IDE. This time, Bob Swart 
explores the different ways to integrate Experts or Wizards to the Delphi IDE 
using the Delphi OpenTools API.
	
Creating a Component to Display Application Version Information [Component, Version, Article, Delphi] Delphi Developer 01-Mar-2000, vol. 6, no. 3 by Larry Dew
	Creating a Component to Display Application Version Information
	 
	Larry Dew
	 
	Every time Larry Dew created a Help/About form, he had to write code to 
iterate through the file version information that can be included with the 
application. At first he wrote a simple function and placed it in his utility 
library unit and then called it from the showform method in HelpAboutForm. 
While this worked, he thought a component that could be dropped onto the form 
would be easier to use. In this article, he shows how he created the component, 
called ssShowVersion.
	
Character Animation with Delphi [Animation, Article, Delphi] Delphi Developer 01-Mar-2000, vol. 6, no. 3 by Michael Chapin
	Character Animation with Delphi
	 
	Michael Chapin
	 
	How do the creators of A Bug's Life and Antz build those motion 
pictures? By using character animation software, that's how. In this article, 
Michael Chapin uses Delphi to explore the basics of character animation. It 
will draw a skeleton and move the bones around. Who says C++ programmers have 
all the fun?
	
Owner-drawn Property Editors [Owner-drawn Property, Property, Article, Delphi] Delphi Informant 01-Mar-2000, vol. 6, no. 2 by Ray Lischner
	Owner-drawn Property Editors
	 
	Ray Lischner
	 
	New in Delphi 5 is the ability for a property editor to draw anything 
to display a property's name and value, and if the property has a drop-down 
list, you can draw each list item, as Mr Lischner explains.
	
CORBA: Part II [CORBA, JBuilder, Article, Delphi] Delphi Informant 01-Mar-2000, vol. 6, no. 2 by Dennis P Butler
	CORBA: Part II
	 
	Dennis P Butler
	 
	Mr Butler ends his two-part exploration of CORBA development by 
describing how to build CORBA clients with Delphi (both early and late binding) 
and with JBuilder.
	
Visual Form Inheritance: Part II [Visual Form Inheritance, Inheritance, Article, Delphi] Delphi Informant 01-Mar-2000, vol. 6, no. 2 by Rick Spence
	Visual Form Inheritance: Part II
	 
	Rick Spence
	 
	Mr Spence winds up his two-part introduction to Delphi's woefully 
underdocumented VFI capabilities by creating a generic table maintenance 
application.
	
Interfaces Revisited: Part I [Interface, Article, Delphi] Delphi Informant 01-Mar-2000, vol. 6, no. 2 by Cary Jensen
	Interfaces Revisited: Part I
	 
	Cary Jensen
	 
	More than a method, less than a class, but not an object, the Object 
Pascal interface defies brief description. Dr Jensen is up to the task, 
however, and provides an updated introduction.
	
SAX for Delphi [SAX, Simple API for XML, XML, Article, Delphi] Delphi Informant 01-Mar-2000, vol. 6, no. 2 by Keith Wood
	SAX for Delphi
	 
	Keith Wood
	 
	Mr Wood explains the importance of SAX(Sample API for XML) and then 
demonstrates its power by building an impressive example application for Delphi 
versions 3, 4, and 5.
	
FormShaper [Form, UI, Article, Delphi] Delphi Informant 01-Mar-2000, vol. 6, no. 2 by Peter Morris
	FormShaper
	 
	Peter Morris
	 
	Tired of the standard rectangular windows? Have an exotic UI request 
from a client? Mr Morris shares his FormShaper component, and shows us how to 
think outside the box.
	
Low-level Delphi: Part II [Assembler, Article, Delphi] Delphi Informant 01-Mar-2000, vol. 6, no. 2 by Andre van der Merwe
	Low-level Delphi: Part II
	 
	Andre van der Merwe
	 
	Mr van der Merwe presents the basics of inline Assembler in Delphi, 
including labels, constants, registers, expressions, typecasts, calling 
conventions, and stack frames.
	
Tibco's Rendezvous [Article, Delphi] Delphi Informant 01-Mar-2000, vol. 6, no. 2 by Bob Depin
	Tibco's Rendezvous
	 
	Bob Depin
	 
	Mr Depin outlines the basics of using Rendezvous components, and builds 
a messaging application that distributes data to multiple clients - on the same 
machine, or over a LAN.
	
SQL Server 2000: New XML Features Streamline Web-centric App Development (using: SQL Server 2000) [SQL Server, XML, Web, HTTP, Database, Vector Markup Language, SQL Server, Article] MSDN Magazine 01-Mar-2000, vol. 15, no. 3 by Joshua Trupin
	SQL Server 2000: New XML Features Streamline Web-centric App Development
	 
	With XML support in SQL Server 2000, you can query SQL over HTTP with a 
URL, bring the data down to the browser, and manipulate it on the client 
machine. By adding Internet Explorer 5.0 to the mix and using XSL to convert 
the XML to HTML, you can lighten the load on your Database server. Going still 
one step further, by using Vector Markup Language you can even create drawings 
on the fly using the data from your SQL queries.
	 
	Joshua Trupin
	
A Young Person’s Guide to The Simple Object Access Protocol: SOAP Increases Interoperability Across Platforms and Languages [Simple Object Access Protocol, SOAP, Interoperability, Web, HTTP, XML, Visual C++, Article] MSDN Magazine 01-Mar-2000, vol. 15, no. 3 by Don Box
	A Young Person’s Guide to The Simple Object Access Protocol: SOAP 
Increases Interoperability Across Platforms and Languages
	 
	The Simple Object Access Protocol (SOAP) facilitates interoperability 
among a wide range of programs and platforms, making existing applications 
accessible to a broader range of users. SOAP combines the proven Web technology 
of HTTP with the flexibility and extensibility of XML.
	 
	Don Box
	
Window 2000 UI Innovations: Using New Shell Extensions Such as Infotip and Icon Overlay to Enhance Your User's Experience [Window 2000, UI, Shell Extension, Infotip, Icon Overlay, Explorer, Context Menu Shell Extension, Visual C++, Article] MSDN Magazine 01-Mar-2000, vol. 15, no. 3 by Dino Esposito
	Window 2000 UI Innovations: Using New Shell Extensions Such as Infotip 
and Icon Overlay to Enhance Your User's Experience
	 
	Windows 2000 includes some helpful new UI features you can customize 
and implement in your own applications. In this article you’ll see how to 
provide infotips for files, after making the appropriate registry entries. Then 
create a custom column handler extension, resulting in a new column for the 
Explorer’s Details view. In order to further extend the shell, additional UI 
goodies will also be examined and implemented including: search handlers, 
cleanup handlers, folder customizations using property sheet handlers and icon 
overlays, and Context Menu Shell Extensions. All the code samples are rolled up 
into a handy package which we’ve named, by tradition, ShellToys.
	 
	Dino Esposito
	
Drag and Drop Data Manipulation Powered by XML [Drag and Drop, XML, VML, Vector Markup Language, XSL, JScript, Internet Explorer, Visual C++, Article] MSDN Magazine 01-Mar-2000, vol. 15, no. 3 by Scott Howlett, Jeff Dunmall
	Drag and Drop Data Manipulation Powered by XML
	 
	Building on the browser-based org chart featuring VML (Vector Markup 
Language) described previously in Microsoft Internet Developer, this article 
takes you through the process of refining that sample app by using XML, XSL, 
and JScript code to create a new, improved version. Drag and drop editing is 
added to the org chart interface thanks to built-in support found in Internet 
Explorer 5.0. XML and JScript allow data manipulated on the screen to be saved 
back to the server in its native format. The final product of this combination 
of XML, XSL, and VML is a high performance, scalable Internet app that uses 
processing on the client to reduce stress for the server.
	 
	Scott Howlett
	 and 
	Jeff Dunmall
	
Build a Dynamic Intranet the Easy Way Using Office Docs, FSO and OLE Structured Storage [Intranet, Office, Structured Storage, HTML, File System Object, FSO, ActiveX, Word, Office, Article] MSDN Magazine 01-Mar-2000, vol. 15, no. 3 by Josef Finsel
	Build a Dynamic Intranet the Easy Way Using Office Docs, FSO and OLE 
Structured Storage
	 
	If you’ve ever needed to build an easy-to-maintain intranet site, 
here’s a solution based on Microsoft Office documents. Many sites require 
constant updating of their HTML, but the use of Word documents can simplify the 
process. This article details the construction of a human resources site that 
exploits the File System Object (FSO), OLE Structured Storage, and ActiveX 
capabilities of Word documents. This allows the HR staff to copy their revised 
or newly created Word files to the site, dynamically generate a list of links 
to their files, and free IS from the constant recoding of HR updates into new 
HTML pages.
	 
	Josef Finsel
	
Accessing Recordsets over the Internet [Recordset, Internet, Visual C++, Article] MSDN Magazine 01-Mar-2000, vol. 15, no. 3 by Dino Esposito
	Accessing Recordsets over the Internet
	 
	Dino Esposito
	
XML-based Persistence Behaviors Fix Web Farm Headaches [XML, Persistence, Web, Visual C++, Article] MSDN Magazine 01-Mar-2000, vol. 15, no. 3 by Aaron Skonnard
	XML-based Persistence Behaviors Fix Web Farm Headaches
	 
	Aaron Skonnard
	
Compiling Components in Visual Basic for ASP [Component, ASP, Visual Basic, Article] MSDN Magazine 01-Mar-2000, vol. 15, no. 3 by Ken Spencer
	Compiling Components in Visual Basic for ASP
	 
	Ken Spencer
	
Performance Trade-offs of the Windows 2000 Component Execution Environment [Windows 2000, Component Execution Environment, Windows NT, Article] MSDN Magazine 01-Mar-2000, vol. 15, no. 3 by Don Box
	Performance Trade-offs of the Windows 2000 Component Execution 
Environment
	 
	Don Box
	
Exploring Handle Security in Windows [Handle Security, Security, Windows NT, Article] MSDN Magazine 01-Mar-2000, vol. 15, no. 3 by Keith Brown
	Exploring Handle Security in Windows
	 
	Keith Brown
	
Porting Applications from MTS to COM+ [MTS, COM+, Visual Basic, Article] MSDN Magazine 01-Mar-2000, vol. 15, no. 3 by Ted Pattison
	Porting Applications from MTS to COM+
	 
	Ted Pattison
	
ATL Virtual Functions and vtables [ATL, Virtual Function, vtable, Visual C++, Article] MSDN Magazine 01-Mar-2000, vol. 15, no. 3 by Paul DiLascia
	ATL Virtual Functions and vtables
	 
	Paul DiLascia
	
Supercharge Data Binding [Data Binding, ADO, Article, Visual Basic] Visual Basic Programmer's Journal 01-Mar-2000, vol. 10, no. 3 by Keith Franklin
	Supercharge Data Binding
	 
	Keith Franklin
	 
	Data binding with VB6 and ADO 2.x is now scalable, flexible, and easier 
to implement. Use it to display and enter data, and to control the UI.
	
Prevent File Tampering [File, Article, Visual Basic] Visual Basic Programmer's Journal 01-Mar-2000, vol. 10, no. 3 by James World
	Prevent File Tampering
	 
	James World
	 
	A comprehensive set of Windows API functions can help make your files 
tamper-resistant.
	
Create a Help System [Help, WinHelp, HTML Help, Article, Visual Basic] Visual Basic Programmer's Journal 01-Mar-2000, vol. 10, no. 3 by Stan Schultes
	Create a Help System
	 
	Build layered user help into your apps while avoiding the complexity of 
WinHelp or HTML Help.
	 
	Stan Schultes
	
Type Your Data Correctly [Datatype, Article, Visual Basic] Visual Basic Programmer's Journal 01-Mar-2000, vol. 10, no. 3 by Dan Petit
	Type Your Data Correctly
	 
	VB's numerous Datatypes can confuse even the most seasoned programmers. 
Take a practical look at each VB type and make your data work for you, not 
against you.
	 
	Dan Petit
	
Create Data Forms Easily [Data Access Page Designer, Intranet, Form, Access, Article, Visual Basic] Visual Basic Programmer's Journal 01-Mar-2000, vol. 10, no. 3 by Paul Litwin
	Create Data Forms Easily
	 
	Access 2000 introduces a Data Access Page Designer, which simplifies 
building Intranet data Forms. The biggest drawbacks: scalability and its 
dependence on IE5.
	 
	Paul Litwin
	
Simplify Changes [Design Pattern, Article, Visual Basic] Visual Basic Programmer's Journal 01-Mar-2000, vol. 10, no. 3 by Deborah Kurata
	Simplify Changes
	 
	The Strategy Design Pattern lets you define a family of algorithms, 
encapsulate each one, and make them all interchangeable.
	 
	Deborah Kurata
	
How to emulate an Alt+Tab keypress in code [Article, Visual Basic] Visual Basic Programmer's Journal 01-Mar-2000, vol. 10, no. 3 by Karl E Peterson
	How to emulate an Alt+Tab keypress in code
	 
	Learn how to emulate an Alt+Tab keypress in code.
	 
	Karl E Peterson
	
Retrieve Windows Font Specification [Font, System Metric, System Font, Article, Visual Basic] Visual Basic Programmer's Journal 01-Mar-2000, vol. 10, no. 3 by Karl E Peterson
	Retrieve Windows Font Specification
	 
	Use a simple API call to return information on several System Metrics, 
including System Fonts.
	 
	Karl E Peterson
	
Process Rows With Cursors [Cursor, Transact-SQL, SQL Server, Article, Visual Basic] Visual Basic Programmer's Journal 01-Mar-2000, vol. 10, no. 3 by Mary V Hooke
	Process Rows With Cursors
	 
	Learning to use Transact-SQL cursors effectively can help you take much 
better advantage of SQL Server's capabilities.
	 
	Mary V Hooke
	
Display Query Results From ASP [Query, ASP, Article, Visual Basic] Visual Basic Programmer's Journal 01-Mar-2000, vol. 10, no. 3 by Francesco Balena
	Display Query Results From ASP
	 
	The author shows you how to speed up and extend your ASP code by 
encapsulating it into a VB ASP component. This component enables you display 
query results from ASP.
	 
	Francesco Balena
	
Create Round-Trip XML Recordsets [XML, Recordset, Cursor, ADO, IIS, Article, Visual Basic] Visual Basic Programmer's Journal 01-Mar-2000, vol. 10, no. 3 by Andrew J Brust
	Create Round-Trip XML Recordsets
	 
	Send batch-updatable Cursors bidirectionally over the Web with ADO 2.5 
and IIS 5.
	 
	Andrew J Brust
	
Speed Up Large Calculations [Article, Visual Basic] Visual Basic Programmer's Journal 01-Mar-2000, vol. 10, no. 3 by Jason Bock
	Speed Up Large Calculations
	 
	Using native datatypes in VB is standard for most programming 
calculations, but you need nontrivial algorithms to handle the calculations for 
large numbers.
	 
	Jason Bock
	
Real-Time Kernel-Mode Tracing [Kernel Mode, Tracing, Debugging, Device Driver, Article, Visual C++] Windows Developer's Journal 01-Mar-2000, vol. 11, no. 3 by Mark S Covert
	Real-Time Kernel-Mode Tracing
	 
	Mark S Covert
	  
	When you’re Debugging a Device Driver problem that’s sensitive to 
timing and memory placement, you need a low-impact tool to gather information. 
This article discusses techniques for adding a very low overhead tracing 
mechanism, whose output you can view with a simple console-mode program (no 
separate debugging machine required).
	
Passing Plain C++ Objects via COM [C++, Object, COM, Article, Visual C++] Windows Developer's Journal 01-Mar-2000, vol. 11, no. 3 by Steve Samarov
	Passing Plain C++ Objects via COM
	 
	Steve Samarov
	  
	When both your client and server are written in C++, it would sometimes 
be convenient to be able to pass an ordinary C++ object to a remote COM object, 
without having to redesign it as a COM class. This article shows how an 
ordinary C++ class can be extended slightly so you can pass it across apartment 
and machine boundaries.
	
Using Structures in Active Scripting [Structure, Scripting, Article, Visual C++] Windows Developer's Journal 01-Mar-2000, vol. 11, no. 3 by Gilberto Araya
	Using Structures in Active Scripting
	 
	Gilberto Araya
	  
	Microsoft’s free scripting library provides object access, but not 
structures. This article demonstrates that it’s possible to add realistic 
structure access to Microsoft’s Active Scripting, allowing the script to access 
structure members with a natural syntax.
	
Understanding NT: Windows File Protection and how it actually works in the pre-release version of Windows 2000 [Windows File Protection, WFP, Windows NT, Article, Visual C++] Windows Developer's Journal 01-Mar-2000, vol. 11, no. 3 by Paula Tomlinson
	Understanding NT: Windows File Protection and how it actually works in 
the pre-release version of Windows 2000
	 
	Paula Tomlinson
	  
	Microsoft takes yet another whack at solving the 'DLL hell' problem in 
Windows 2000, providing a new feature called 'Windows File Protection' (WFP). 
This column describes WFP and examines how it actually works in the pre-release 
version of Windows 2000.
	
Invoking File Properties from Console Apps [Console App, File Properties Dialog, Article, Visual C++] Windows Developer's Journal 01-Mar-2000, vol. 11, no. 3 by Scott Singer
	Invoking File Properties from Console Apps
	 
	Scott Singer
	 
	If your program invokes a File Properties dialog, it can’t terminate or 
the dialog will disappear; here’s how to locate the dialog window so you can 
discover when it’s finished.
	
Starting Simulated-Runtime Access Instance from C++ [C++, Access, Article, Visual C++] Windows Developer's Journal 01-Mar-2000, vol. 11, no. 3 by Glenn Pearson
	Starting Simulated-Runtime Access Instance from C++
	 
	Glenn Pearson
	 
	Tips on starting and manipulating Microsoft Access from a C++ program.
	
Various forms of Subclassing and provides a small library that provides safe (as safe as possible, anyway) subclassing [Subclassing, Article, Visual C++] Windows Developer's Journal 01-Mar-2000, vol. 11, no. 3 by Petter Hesselberg
	Various forms of Subclassing and provides a small library that provides 
safe (as safe as possible, anyway) subclassing
	 
	Petter Hesselberg
	  
	To really reuse or build upon existing GUI code in Windows, you almost 
always need to use some form of window subclassing. This column looks at 
various forms of subclassing and provides a small library that provides safe 
(as safe as possible, anyway) subclassing.
	
Build a Hybrid Client [Client, Web, MFC, MFC, Article, Visual C++] Visual C++ Developers Journal 01-Mar-2000, vol. 3, no. 2 by Christian Gross
	Build a Hybrid Client
	 
	Christian Gross
	 
	Programming Web apps now? Don’t throw away your traditional clients 
just yet! Use MFC and Web technologies to build a hybrid client application 
that incorporates the best of both worlds.
	
Use COM Interfaces to Read Type Libraries [COM, Interface, ITypeLib Interface, ITypeInfo Interface, Type Library, Article, Visual C++] Visual C++ Developers Journal 01-Mar-2000, vol. 3, no. 2 by Jeff Ferguson
	Use COM Interfaces to Read Type Libraries
	 
	Jeff Ferguson
	 
	Type libraries give you the power to use objects, interfaces, and data 
structures with a COM server. Learn to use COM’s ITypeLib and ITypeInfo 
interfaces to read information directly from type libraries.
	
Locating, Analyzing, and Repairing Memory Problems [Memory, Memory Leak, Debugging, C++, Article, Visual C++] Visual C++ Developers Journal 01-Mar-2000, vol. 3, no. 2 by Chris H Pappas, William H Murray III
	Locating, Analyzing, and Repairing Memory Problems
	   
	Chris H Pappas
	 and 
	William H Murray III
	 
	Memory Leaks are difficult to detect - and finding the problem is only 
the tip of the iceberg. In this excerpt from the upcoming Debugging C++: 
Troubleshooting for Programmers, learn to find, analyze, and fix memory 
allocation and leak problems in your apps.
	
12 Tips for Effective Operator Overloading [Operator Overloading, Article, Visual C++] Visual C++ Developers Journal 01-Mar-2000, vol. 3, no. 2 by Bill Wagner
	12 Tips for Effective Operator Overloading
	 
	Bill Wagner
	 
	Some programmers shy away from operator overloading; some embrace it to 
a fault. Learn how to use it effectively for clearer code.
	
Tap Into Transient Subscriptions [COM+, Article, Visual C++] Visual C++ Developers Journal 01-Mar-2000, vol. 3, no. 2 by Jeff Prosise
	Tap Into Transient Subscriptions
	 
	Jeff Prosise
	 
	Transient subscriptions allow running clients to respond to events. 
Here’s how to put this important COM+ tool to use.
	
Transport Data With XML [Data, XML, Article, Visual C++] Visual C++ Developers Journal 01-Mar-2000, vol. 3, no. 2 by Jim Beveridge
	Transport Data With XML
	 
	Jim Beveridge
	 
	Everyone has a different opinion about what XML can do and how best to 
use it. Here you’ll learn why XML makes an excellent data transfer format
	
Bugs, Bytes, and Datatypes [Debugging, Macro, Inheritance, Memory Allocation, iostream, C++, Article, Visual C++] Visual C++ Developers Journal 01-Mar-2000, vol. 3, no. 2 by Danny Kalev
	Bugs, Bytes, and Datatypes
	 
	Danny Kalev
	 
	Our VC++ Pro tackles your questions on Debugging Macros, Inheritance 
and Memory Allocation, iostream objects’ memory use, using C++ for AIX Unix and 
Windows NT, and more.
	
Write Thread-Safe Code With ATL [Thread Safe, ATL, COM, Apartment, Article, Visual C++] Visual C++ Developers Journal 01-Mar-2000, vol. 3, no. 2 by Richard Grimes
	Write Thread-Safe Code With ATL
	 
	Richard Grimes
	 
	Learn how ATL wizards can help you write components for all COM 
Apartment types.
	
Save Time: Marshal by Value [Marshaling, COM, Interface, Article, Visual C++] Visual C++ Developers Journal 01-Mar-2000, vol. 3, no. 2 by George Shepherd
	Save Time: Marshal by Value
	 
	George Shepherd
	 
	Knowing how COM gets Interfaces from one execution to the next can cut 
your coding time.
	
TLBX.EXE .... Type Library Viewer uses COM Interfaces to Read Type Libraries [COM, Interface, ITypeLib Interface, ITypeInfo Interface, Type Library, Article, Visual C++, EXE] Visual C++ Developers Journal 01-Mar-2000, vol. 3, no. 2 by Jeff Ferguson
	Use COM Interfaces to Read Type Libraries
	 
	Jeff Ferguson
	 
	Type libraries give you the power to use objects, interfaces, and data 
structures with a COM server. Learn to use COM’s ITypeLib and ITypeInfo 
interfaces to read information directly from type libraries.
	
WhoIS Class for MFC [Internet, Network, MFC, Article, Visual C++] www.codeproject.com 01-Mar-2000 by Ed Dixon
	WhoIS Class for MFC
	 
	Ed Dixon
	 
	A simple MFC class for WhoIS processing for the Internet.
	
Zip and Unzip the MFC Way [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 01-Mar-2000 by Tadeusz Dracz
	Zip and Unzip the MFC Way
	 
	Tadeusz Dracz
	 
	
	
Timer Support for Non-Window Classes [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 01-Mar-2000 by Rudolf Ladyzhenksii
	Timer Support for Non-Window Classes
	 
	Rudolf Ladyzhenksii
	 
	
	
Using Common File Dialogs as Modeless Views [Dialog, Article, Visual C++] www.codeguru.com 01-Mar-2000 by Aliaksei Sanko
	Using Common File Dialogs as Modeless Views
	 
	Aliaksei Sanko
	 
	
	
A Powerful Function Parser [C++, MFC, Article, Visual C++] www.codeguru.com 01-Mar-2000 by Andreas Jäger
	A Powerful Function Parser
	 
	Andreas Jäger
	 
	
	
Who's Locking? v1.3 [DLL, Article, Visual C++] www.codeguru.com 01-Mar-2000 by Emmanuel Kartmann
	Who's Locking? v1.3
	 
	Emmanuel Kartmann
	 
	Several key enhancements to popular DLL utility !!
	
MFC Multithreaded Classes for Recording, Playing and Saving (WAV files) Sound [Multimedia, Article, Visual C++] www.codeguru.com 01-Mar-2000 by Paul Cheffers
	MFC Multithreaded Classes for Recording, Playing and Saving (WAV files) 
Sound
	 
	Paul Cheffers
	 
	Added ability to save WAV files
	
Non-Resizable, Non-Movable Window [Document/View, Article, Visual C++] www.codeguru.com 01-Mar-2000 by Siarhei Akulich
	Non-Resizable, Non-Movable Window
	 
	Siarhei Akulich
	 
	
	
R5 Security Options [Security, Article, Lotus Notes] Notes Advisor 01-Mar-2000
Security FUNDAMENTALS - Lotus Notes & Domino Advisor - March 2000 
	R5 Security Options
	 
	-N/A
	
Need Some Help with Your Web Site? [Web, Article, Lotus Notes] Notes Advisor 01-Mar-2000
Web Development - Lotus Notes & Domino Advisor - March 2000 
	Need Some Help with Your Web Site?
	 
	-N/A
	
Make Domino Your Ad Server [Domino, Server, Article, Lotus Notes] Notes Advisor 01-Mar-2000
Web Development - Lotus Notes & Domino Advisor - March 2000 
	Make Domino Your Ad Server
	 
	-N/A
	
Extended Searching [Searching, Article, Lotus Notes] Notes Advisor 01-Mar-2000 by Gerrick Denton
Knowledge Management - Lotus Notes & Domino Advisor - March 2000 
	Extended Searching
	 
	Gerrick Denton
	
Broadcast Updates [Article, Lotus Notes] Notes Advisor 01-Mar-2000 by Cole Shiflett
Knowledge Management - Lotus Notes & Domino Advisor - March 2000 
	Broadcast Updates
	 
	Cole Shiflett
	
Troubleshoot ActiveX Data Objects Errors [ActiveX Data Objects, Article, Lotus Notes] Notes Advisor 01-Mar-2000 by Terrance A Crow
Data Integration - Lotus Notes & Domino Advisor - March 2000 
	Troubleshoot ActiveX Data Objects Errors
	 
	Terrance A Crow
	
Real-World XML [XML, Article, Lotus Notes] Notes Advisor 01-Mar-2000 by Christopher Pepin
Data Integration - Lotus Notes & Domino Advisor - March 2000 
	Real-World XML
	 
	Christopher Pepin
	
IT Factory SDK and Business Suite [Article, Lotus Notes] Notes Advisor 01-Mar-2000 by Matt Holthe
DEVELOPMENT TOOLS - Lotus Notes & Domino Advisor - March 2000 
	IT Factory SDK and Business Suite
	 
	Matt Holthe
	
MFC Multithreaded Classes for Recording, Playing and Saving (WAV files) Sound [Article, Visual C++] www.earthweb.com 01-Mar-2000 by Paul Cheffers
	MFC Multithreaded Classes for Recording, Playing and Saving (WAV files) 
Sound
	 
	Paul Cheffers
	 
	1-Mar-2000
	 
	1-Mar-2000
	 
	C++ classes, CRecordSound and CPlaySound, that record sound and play 
PCM sound simultaneously
	
A Powerful Function Parser [Article, Visual C++] www.earthweb.com 01-Mar-2000 by Andreas Jäger
	A Powerful Function Parser
	 
	Andreas Jäger
	 
	1-Mar-2000
	 
	1-Mar-2000
	 
	Easy-to-use parser for functions given as string
	
Using Common File Dialogs as Modeless Views [Article, Visual C++] www.earthweb.com 01-Mar-2000 by Aliaksei Sanko
	Using Common File Dialogs as Modeless Views
	 
	Aliaksei Sanko
	 
	1-Mar-2000
	 
	1-Mar-2000
	 
	Great code that enables you to use the common dialogs such as File 
Open, Print, etc. as a modeless view in your MFC application.
	
Timer Support for Non-Window Classes [Article, Visual C++] www.earthweb.com 01-Mar-2000 by Rudolf Ladyzhenksii
	Timer Support for Non-Window Classes
	 
	Rudolf Ladyzhenksii
	 
	1-Mar-2000
	 
	1-Mar-2000
	 
	Illustrates how to implement a Windows timer without having to have a 
window (hidden or not)
	
Advanced Graphics - Periodic Table Sample [Graphic, Article, Visual Basic] www.earthweb.com 01-Mar-2000
	Advanced Graphics - Periodic Table Sample
	 
	-N/A
	 
	1-Mar-2000
	 
	1-Mar-2000
	 
	VB code to demonstrate painting methods
	
TreeView with Three-State Checkboxes [TreeView, Checkbox, Article, Visual Basic] www.earthweb.com 01-Mar-2000
	TreeView with Three-State Checkboxes
	 
	-N/A
	 
	1-Mar-2000
	 
	1-Mar-2000
	 
	VB code for a TreeView control that shows partial selections
	
ADO Connections over the Internet [ADO, Internet, Article, Visual Basic] www.earthweb.com 01-Mar-2000
	ADO Connections over the Internet
	 
	-N/A
	 
	1-Mar-2000
	 
	1-Mar-2000
	 
	VB sample code to make ADO connections
	
A method to reposition standard MsgBox windows from VB [MsgBox Function, Article, Visual Basic] www.earthweb.com 01-Mar-2000
	A method to reposition standard MsgBox windows from VB
	 
	-N/A
	 
	1-Mar-2000
	 
	1-Mar-2000
	 
	VB code to reposition a MsgBox
	
ANSI/ISO C++ Draft Standard Working Papers (using: Visual C++ 6.0) [C++, MFC, STL, Article, Visual C++] www.codeproject.com 29-Feb-2000
	ANSI/ISO C++ Draft Standard Working Papers
	 
	ANSI/ISO
	 
	The December 1996 draft of the C++ standard
	
Accessing Windows 2000 specific APIs [Windows 2000, Article, Visual C++] www.codeproject.com 29-Feb-2000 by Roger Onslow
	Accessing Windows 2000 specific APIs
	 
	Roger Onslow
	 
	Having trouble accessing the new Windows 2000 APIs? This article may 
help.
	
Replacing the Default MFC Application Icon [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 29-Feb-2000 by Shahzad Alam Khan
	Replacing the Default MFC Application Icon
	 
	Shahzad Alam Khan
	 
	
	
Simple Graph Control [Control, Article, Visual C++] www.codeguru.com 29-Feb-2000 by Larry Leonard
	Simple Graph Control
	 
	Larry Leonard
	 
	
	
CStatic-Derived Flat Button Class [Button Control, Article, Visual C++] www.codeguru.com 29-Feb-2000 by Kwon Jin-ho
	CStatic-Derived Flat Button Class
	 
	Kwon Jin-ho
	 
	
	
COM/DCOM Exception Class [ATL, COM, Article, Visual C++] www.codeguru.com 29-Feb-2000 by Reg Anderson
	COM/DCOM Exception Class
	 
	Reg Anderson
	 
	Complete update (article, demo and source code) !!
	
Adding a Customozied 'More Windows...' Dialog to an MDI Application [Document/View, Article, Visual C++] www.codeguru.com 29-Feb-2000 by Yogesh Jagota
	Adding a Customozied 'More Windows...' Dialog to an MDI Application
	 
	Yogesh Jagota
	 
	
	
Drag-and-Drop TreeCtrl (with multiple selection) [Treeview, Article, Visual C++] www.codeguru.com 29-Feb-2000 by Andrei Romanov
	Drag-and-Drop TreeCtrl (with multiple selection)
	 
	Andrei Romanov
	 
	
	
Treeview with Three-State Checkboxes [Treeview, Article, Visual C++] www.codeguru.com 29-Feb-2000 by Mike Korzeniowski
	Treeview with Three-State Checkboxes
	 
	Mike Korzeniowski
	 
	
	
Command-line 'Where' Tool [Tool, Update, Article, Visual C++] www.codeguru.com 29-Feb-2000 by Glenn Carr
	Command-line 'Where' Tool
	 
	Glenn Carr
	 
	Fixed minor bugs in source code
	
Dynamic Child Window Repositioning [UI, Article, Visual C++] www.codeguru.com 29-Feb-2000 by Hans Buhler
	Dynamic Child Window Repositioning
	 
	Hans Buhler
	 
	Read the article notes carefully! This framework has undergone a MAJOR 
update!
	
Adding a Customozied 'More Windows...' Dialog to an MDI Application [Article, Visual C++] www.earthweb.com 29-Feb-2000 by Yogesh Jagota
	Adding a Customozied 'More Windows...' Dialog to an MDI Application
	 
	Yogesh Jagota
	 
	29-Feb-2000
	 
	29-Feb-2000
	 
	Give you the ability, like Visual Studio, to include a menu in your MDI 
application that displays a dialog for faster user access to open windows
	
TreeView with Three-State Checkboxes [Article, Visual C++] www.earthweb.com 29-Feb-2000 by Mike Korzeniowski
	TreeView with Three-State Checkboxes
	 
	Mike Korzeniowski
	 
	29-Feb-2000
	 
	29-Feb-2000
	 
	Allows you to write applications that show a third-state of selection 
for your tree control items
	
CStatic-Derived Flat Button Class [Article, Visual C++] www.earthweb.com 29-Feb-2000 by Kwon Jin-ho
	CStatic-Derived Flat Button Class
	 
	Kwon Jin-ho
	 
	29-Feb-2000
	 
	29-Feb-2000
	 
	With this class your applications can have standard buttons or new and 
modern buttons with "flat" style!
	
Command-line 'Where' Tool [Article, Visual C++] www.earthweb.com 29-Feb-2000 by Glenn Carr
	Command-line 'Where' Tool
	 
	Glenn Carr
	 
	29-Feb-2000
	 
	29-Feb-2000
	 
	Command-line wrapper for the Win32 SearthPath API that mimics the Unix 
csh utility
	
Dynamic Child Window Repositioning [Article, Visual C++] www.earthweb.com 29-Feb-2000 by Hans Buehler
	Dynamic Child Window Repositioning
	 
	Hans Buehler
	 
	29-Feb-2000
	 
	29-Feb-2000
	 
	Code that will make your windows support automatic repositioning of 
their child controls
	
COM/DCOM Exception Class [Article, Visual C++] www.earthweb.com 29-Feb-2000 by Reg Anderson
	COM/DCOM Exception Class
	 
	Reg Anderson
	 
	29-Feb-2000
	 
	29-Feb-2000
	 
	This article includes an updated SYSEX exception class.
	
Drag-and-Drop TreeCtrl (with multiple selection) [Article, Visual C++] www.earthweb.com 29-Feb-2000 by Andrei Romanov
	Drag-and-Drop TreeCtrl (with multiple selection)
	 
	Andrei Romanov
	 
	29-Feb-2000
	 
	29-Feb-2000
	 
	Illustrates how to have a treeview that supports the dragging and 
dropping of multiply selected items
	
TPictureClip [Article, Delphi] delphi.about.com 29-Feb-2000
	29-Feb-2000
	 
	29-Feb-2000
	 
	TPictureClip
	 
	Use TPictureClip custom component to extract portions of a matrix of 
pictures and assign the "cell picture" to another picture control.
	
Templates and MFC [C++, MFC, STL, Template, Article, Visual C++] www.codeproject.com 28-Feb-2000 by Len Holgate
	Templates and MFC
	 
	Len Holgate
	 
	Templates are a great way of reusing code, unfortunately MFC
	
Implementing Modal Message Loops [Dialog, Windows Programming, Article, Visual C++] www.codeproject.com 28-Feb-2000 by Chris Becke
	Implementing Modal Message Loops
	 
	Chris Becke
	 
	An introduction to creating modal windows
	
Tabbed Dialog Box Class [Dialog, Windows Programming, Article, Visual C++] www.codeproject.com 28-Feb-2000 by Christophe Mestrallet
	Tabbed Dialog Box Class
	 
	Christophe Mestrallet
	 
	A docking dialog that auto-expands when the mouse passes over it
	
C++ Certification [Article, Visual C++] cplus.about.com 28-Feb-2000
	28-Feb-2000
	 
	28-Feb-2000
	  
	C++ Certification
	 
	Why and how?
	
Replacing the Default MFC Application Icon [Article, Visual C++] www.earthweb.com 28-Feb-2000 by Shahzad Alam
	Replacing the Default MFC Application Icon
	 
	Shahzad Alam
	 
	28-Feb-2000
	 
	28-Feb-2000
	 
	For the many new MFC programmers who wonder how to 'replace' the 
default icon rather than to change or edit in the resource editor
	
Writing extensible applications [COM, DCOM, Article, Visual C++] www.codeproject.com 26-Feb-2000 by Len Holgate
	Writing extensible applications
	 
	Len Holgate
	 
	Using simple in-process COM objects you can make an application easy to 
extend without the need for recompilation of the main app.
	
Include/Exclude List Boxes [C++, MFC, STL, CListBox Class, Article, Visual C++] www.codeproject.com 26-Feb-2000 by Len Holgate
	Include/Exclude List Boxes
	 
	Len Holgate
	 
	How to package lots of standard functionality into a CListBox derived 
class.
	
Get Dropdown's hWnd Without Subclassing (using: Visual Basic 6.0) [ClientToScreen(), ComboBox Control, DropDown Event, GetClassName(), Handle, PostMessage(), Subclassing, WindowFromPoint(), WM_KEYDOWN, Visual Basic, Tip] www.devx.com 25-Feb-2000 by Mike Hill
Get Dropdown's hWnd Without Subclassing 

  I’ve written code to get the hWnd for a combo's dropdown. When a combo's 
DropDown event is fired, the dropdown is not yet visible on the screen. Post a 
WM_KEYDOWN to the combo, which causes the combo's KeyDown event to fire after 
the dropdown is visible. Then use the Win32 API calls ClientToScreen, 
WindowFromPoint, and GetClassName to locate the dropdown window. Once you have 
the dropdown’s hWnd, you can move and resize the dropdown window using Win32 
API calls such as SetWindowPos. You’ll find this technique useful where the 
width of the combo is less then the width of the combo's longest item text. To 
shorten the code listing, I'm leaving to you the case where the dropdown is 
dropped above the combo: 

Option Explicit

Private Type POINTAPI
	x As Long
	y As Long
End Type

Private Declare Function PostMessage Lib "user32" Alias _
	"PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _
	ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function WindowFromPoint Lib "user32" _
	(ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function ClientToScreen Lib "user32" (ByVal _
	hWnd As Long, lpPoint As POINTAPI) As Long
Private Declare Function GetClassName Lib "user32" Alias _
	"GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As _
	String, ByVal nMaxCount As Long) As Long

Private Const WM_KEYDOWN = &H100
Private Const KEY_CODE_DROPDOWN = 256

Private Sub Combo1_DropDown()
	'This will cause Combo1_KeyDown to fire 
	'after the DropDown is shown
	Call PostMessage(Combo1.hWnd, WM_KEYDOWN, KEY_CODE_DROPDOWN, 0)
End Sub

Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As _ 
	Integer) Dim hwndDropdown As Long

	If KeyCode = KEY_CODE_DROPDOWN Then
		hwndDropdown = GetHwndDropdown(Combo1)
		Debug.Print hwndDropdown
	End If
End Sub

Private Function GetHwndDropdown(cbo As ComboBox) As Long
	Dim ptDropDown As POINTAPI
	Dim hwndDropdown As Long
	Dim sClassName As String
	Dim  ... (cont.)
cICMP .... How to ping a hostname or an IP address [Domain Name, Internet, IP Address, Network, Ping, Hostname, VB Class Module, Visual Basic] www.codeoftheweek.com 25-Feb-2000, no. 115
Requirements

Visual Basic 4.0 32-bit or higher.

cICMP
-----
This class module provides a simple way to ping another host.  If
you use this function on the Internet it will figure out the
response time of a domain name.  This can be useful for debugging
network problems and determining the response of various network
hosts around the network.  One way we use it is to check the
response time to particular web servers on the internet.  Not all
web servers support the responding to ICMP requests (ping).

Properties

Public Property Let PacketSize(lPacketSize As Long)
Public Property Get PacketSize() As Long

The size of the packet used when sent to the host during the Ping
process.


Public Property Let PacketCount(lPacketCount As Long)
Public Property Get PacketCount() As Long

The number of packets to send sequentially during the Ping
process.  To get the status of each ping step, look at the
PingStatus event described below.


Methods

Public Sub Initialize()

This method needs to be called before the any other routines in
this class module.  It is the one that initializes the winsock
library.


Public Sub Ping(sHostName As String)

The Ping method uses the ICMPSendEcho function to perform the
ping operation.  Microsoft describes the ICMPSendEcho command as
follows:  The ICMPSendEcho() function sends an ICMP echo request
to the specified destination IP address and returns any replies
received within the timeout specified. The API is synchronous,
requiring the process to spawn a thread before calling the API to
avoid blocking (which we did not implement for this version in
Visual Basic). An open IcmpHandle is required for the request to
complete. IcmpCreateFile() and IcmpCloseHandle() functions are
used to create and destroy the context handle.


Events

Public Event PingStatus(lStatus As Long, sResultString As String, 
sRespondingHost As String, iBytesSent As Integer, lRoundTripTime As Long, 
lTimeToLive As Byte)

This event will be fired for each ICMPS ... (cont.)
COM: IEnumXXXX to STL-style iterator Wrapper Class [ATL, COM, Wrapper Class, Article, Visual C++] www.codeproject.com 25-Feb-2000 by Len Holgate
	COM: IEnumXXXX to STL-style iterator Wrapper Class
	 
	Len Holgate
	 
	A simplified method to enumerate a collection of objects.
	
Component Category Manager Wrapper Classes [COM, DCOM, Component, Wrapper Class, Component Category Manager, Article, Visual C++] www.codeproject.com 25-Feb-2000 by Len Holgate
	Component Category Manager Wrapper Classes
	 
	Len Holgate
	 
	COM objects can be categorised using the Component Category Manager. 
The code here makes it easier to use these categories in your code.
	
A Flat ToolBar that does not require Internet Explorer [Toolbar, Docking Window, Explorer, Common Control, Article, Visual C++] www.codeproject.com 25-Feb-2000 by Joerg Koenig
	A Flat ToolBar that does not require Internet Explorer
	 
	Joerg Koenig
	 
	A flat toolbar implementation that does not require the updated Common 
Controls library from Internet Explorer.
	
Autosave and Crash Recovery [Document/View, Article, Visual C++] www.codeproject.com 25-Feb-2000 by Jesse Ezell
	Autosave and Crash Recovery
	 
	Jesse Ezell
	 
	How to implement autosave and autorecover features in your application
	
A Task Tray Applet Framework [Shell Programming, System Tray, Article, Visual C++] www.codeproject.com 25-Feb-2000 by Len Holgate
	A Task Tray Applet Framework
	 
	Len Holgate
	 
	A framework for System Tray applets
	
Registry API Wrapper [System, Article, Visual C++] www.codeproject.com 25-Feb-2000 by Len Holgate
	Registry API Wrapper
	 
	Len Holgate
	 
	The Win32 Registry API is far too complex for simple tasks, and all the 
error checking gets in the way of the real work...
	
Control Panel Applet Framework [Win32, SDK Programming, Article, Visual C++] www.codeproject.com 25-Feb-2000 by Len Holgate
	Control Panel Applet Framework
	 
	Len Holgate
	 
	A mini framework for writing Control Panel applets. Just fill in the 
blanks!.
	
Simple Graph Control [Article, Visual C++] www.earthweb.com 25-Feb-2000 by Larry Leonard
	Simple Graph Control
	 
	Larry Leonard
	 
	25-Feb-2000
	 
	25-Feb-2000
	 
	This is a very simple (but easily enhanced) CStatic-derived class to do 
bar, line, and pie graphs
	
Free size and extended styles in CPropertySheets [Property Sheet, CPropertySheet Class, Article, Visual C++] www.codeproject.com 24-Feb-2000 by Antonio Tejada Lacaci
	Free size and extended styles in CPropertySheets
	 
	Antonio Tejada Lacaci
	 
	How to use extended styles and make Property Sheet any size.
	
Sharing folders using tree control drag & drop [Tree Control, Drag and Drop, Article, Visual C++] www.codeproject.com 24-Feb-2000 by Sardaukar
	Sharing folders using tree control drag & drop
	 
	Sardaukar
	 
	A very simple manager for shared folders using tree control drag & drop
	
Animation Application [Article, Visual Basic] visualbasic.about.com 24-Feb-2000
	24-Feb-2000
	 
	24-Feb-2000
	  
	Animation Application
	 
	Add simple animation into your programs with help from this workshop 
from your Visual Basic guide.
	
Snap-In Interface Technology + Embedded MFC GUI into ATL Server DLL [ATL, COM, Article, Visual C++] www.codeguru.com 24-Feb-2000 by Steve Bryndin
	Snap-In Interface Technology + Embedded MFC GUI into ATL Server DLL
	 
	Steve Bryndin
	 
	
	
A Wrapper for MessageBoxIndirect [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 24-Feb-2000 by Peter Kenyon
	A Wrapper for MessageBoxIndirect
	 
	Peter Kenyon
	 
	Demonstrates how to set the icon of a MessageBox among other things
	
Framework for Creating Custom Window Captions [UI, Update, Article, Visual C++] www.codeguru.com 24-Feb-2000 by Dave Lorde
	Framework for Creating Custom Window Captions
	 
	Dave Lorde
	 
	Update to very popular AdvancedUI framework
	
Sizing Dialog Box [Dialog, Article, Visual C++] www.codeguru.com 24-Feb-2000 by Niki Estner
	Sizing Dialog Box
	 
	Niki Estner
	 
	
	
A Custom Block Allocator for Speeding Up VC++ STL [C++, MFC, Article, Visual C++] www.codeguru.com 24-Feb-2000 by Joaquín M López Muñoz
	A Custom Block Allocator for Speeding Up VC++ STL
	 
	Joaquín M López Muñoz
	 
	
	
A Custom Block Allocator for Speeding Up VC++ STL [Article, Visual C++] www.earthweb.com 24-Feb-2000 by Joaquín M López Muñoz
	A Custom Block Allocator for Speeding Up VC++ STL
	 
	Joaquín M López Muñoz
	 
	24-Feb-2000
	 
	24-Feb-2000
	 
	block_allocator is a custom STL allocator for use with STL as 
implemented in Microsoft VC++
	
Sizing Dialog Box [Article, Visual C++] www.earthweb.com 24-Feb-2000 by Niki Estner
	Sizing Dialog Box
	 
	Niki Estner
	 
	24-Feb-2000
	 
	24-Feb-2000
	 
	Have you ever made sizing dialog boxes? Well I've made some (with my 
bare hands and a bit MFC support). Well it was quite a hack
	
A Wrapper for MessageBoxIndirect [Article, Visual C++] www.earthweb.com 24-Feb-2000 by Peter Kenyon
	A Wrapper for MessageBoxIndirect
	 
	Peter Kenyon
	 
	24-Feb-2000
	 
	24-Feb-2000
	 
	Demonstrates how to set the icon of a MessageBox among other things
	
Snap-In Interface Technology + Embedded MFC GUI into ATL Server DLL [Article, Visual C++] www.earthweb.com 24-Feb-2000 by Steve Bryndin
	Snap-In Interface Technology + Embedded MFC GUI into ATL Server DLL
	 
	Steve Bryndin
	 
	24-Feb-2000
	 
	24-Feb-2000
	 
	Great article on how to use ATL for advanced UI functionality
	
A powerful function Parser (using: Visual C++ 6.0) [C++, MFC, STL, Parser, Article, Visual C++] www.codeproject.com 23-Feb-2000 by Andreas Jäger
	A powerful function Parser
	 
	Andreas J?ger
	 
	A simple yet powerful function parser that parses and evaluates 
standard mathematical functions
	
Addison-Velski and Landis (AVL) Binary Trees (using: Visual C++ 6.0) [C++, MFC, STL, Article, Visual C++] www.codeproject.com 23-Feb-2000 by Andreas Jäger
	Addison-Velski and Landis (AVL) Binary Trees
	 
	Andreas J?ger
	 
	Describes an implementation of AVL Trees.
	
A Wrapper for MessageBoxIndirect [Dialog, Windows Programming, Article, Visual C++] www.codeproject.com 23-Feb-2000 by Peter Kenyon
	A Wrapper for MessageBoxIndirect
	 
	Peter Kenyon
	 
	A class which encapsulates MessageBoxIndirect.
	
Dynamic child window positioning [Dialog, Windows Programming, Article, Visual C++] www.codeproject.com 23-Feb-2000 by Hans B?hler
	Dynamic child window positioning
	 
	Hans B?hler
	 
	Describes a method to implement resizable child windows.
	
SOCKS Proxy + SSL Tunnel [Java Programming, Article, Visual C++] www.codeproject.com 23-Feb-2000 by Svetoslav Tchekanov
	SOCKS Proxy + SSL Tunnel
	 
	Svetoslav Tchekanov
	 
	A full featured SOCKS 4 & 5 proxy server written in Java.
	
ChoiceListButton Control [Control, Menu, Article, Visual C++] www.codeproject.com 22-Feb-2000 by Christian Skovdal Andersen
	ChoiceListButton Control
	 
	Christian Skovdal Andersen
	 
	A dropdown menu button with checkbox Menu items
	
Enhancing the SHBrowseForFolder API Function [SHBrowseForFolder(), Article, Visual Basic] www.earthweb.com 22-Feb-2000
	Enhancing the SHBrowseForFolder API Function
	 
	-N/A
	 
	22-Feb-2000
	 
	22-Feb-2000
	 
	VB code to browse for folders
	
Advanced Screen Snap-Shots [Article, Visual Basic] www.earthweb.com 22-Feb-2000
	Advanced Screen Snap-Shots
	 
	-N/A
	 
	22-Feb-2000
	 
	22-Feb-2000
	 
	VB code to define a screen area for capture
	
An Introduction To Object Oriented Programming with VB4/5/6 [Object Oriented Programming, Article, Visual Basic] www.earthweb.com 22-Feb-2000
	An Introduction To Object Oriented Programming with VB4/5/6
	 
	-N/A
	 
	22-Feb-2000
	 
	22-Feb-2000
	 
	VB OOP tutorial
	
A Tetris Clone (VB5/6) [Game, Article, Visual Basic] www.earthweb.com 22-Feb-2000
	A Tetris Clone (VB5/6)
	 
	-N/A
	 
	22-Feb-2000
	 
	22-Feb-2000
	 
	VB code for a Tetris Game
	
"Real" Delphi [Article, Delphi] delphi.about.com 22-Feb-2000
	22-Feb-2000
	 
	22-Feb-2000
	 
	"Real" Delphi
	 
	Using Real Audio files (and more) in a Delphi application.
	
Making ATL OLE DB Provider Templates support updating of data, Part 1 [Database, ATL, Template, Article, Visual C++] www.codeproject.com 21-Feb-2000 by Len Holgate
	Making ATL OLE DB Provider Templates support updating of data, Part 1
	 
	Len Holgate
	 
	The ATL OLE DB Provider templates only seem to support read-only 
rowsets and making them support updating of data isn't as easy as you'd expect!
	
Making ATL OLE DB Provider Templates support updating of data, Part 2 [Database, ATL, Template, Article, Visual C++] www.codeproject.com 21-Feb-2000 by Len Holgate
	Making ATL OLE DB Provider Templates support updating of data, Part 2
	 
	Len Holgate
	 
	The ATL OLE DB Provider templates only seem to support read-only 
rowsets and making them support updating of data isn't as easy as you'd expect!
	
Leap Years [Date, Time, Article, Visual C++] www.codeproject.com 21-Feb-2000 by Chris Maunder, LeRoy Baxter
	Leap Years
	 
	Chris Maunder and LeRoy Baxter
	 
	A discussion on the thorny issue of leap years.
	
A custom-drawn TreeList Control [Tree Control, Article, Visual C++] www.codeproject.com 21-Feb-2000 by Gerolf Kuehnel
	A custom-drawn TreeList Control
	 
	Gerolf Kuehnel
	 
	A custom-drawn tree-list hybrid, with explanations on how the control 
was developed.
	
Const Class Methods [Article, Visual C++] cplus.about.com 21-Feb-2000
	21-Feb-2000
	 
	21-Feb-2000
	  
	Const Class Methods
	 
	Why use the const identifier ?
	
MBListEx ActiveX Control [ActiveX Control, Listbox, Article, Visual Basic] www.vb2themax.com 19-Feb-2000 by Marco Bellinaso
	MBListEx ActiveX Control
	  
	19-Feb-2000
	 
	19-Feb-2000
	 
	Marco Bellinaso
	 
	This extended Listbox control adds many features that are missing in 
the standard VB control, such as support for bitmaps, control on the height, 
forecolor, backcolor, and font of individual list items, a horizontal 
scrollbar, text indentation. The MBListEx control is great to display a list of 
custom or system colors. The Setup procedure also installs a complete demo 
project that illustrates all the features of this control.
	
Perl 5 How-To [CGI, Perl, Unix, Book] Purchased 12-Feb-2000, $70.95

MCSE Windows NT Workstation 4 for Dummies [Certification, MCSE, Windows NT, Book] Purchased 18-Feb-2000, $42.99

ITypeInfo Interface [COM]

ITypeLib Interface [COM]
The IDL for the ITypeLib Interface   

interface ITypeLib : IUnknown
{
	typedef [v1_enum] enum tagSYSKIND {
		SYS_WIN16 = 0,
		SYS_WIN32,
		SYS_MAC
	} SYSKIND;

	typedef [v1_enum] enum tagLIBFLAGS {
		LIBFLAG_FRESTRICTED = 0x01,
		LIBFLAG_FCONTROL = 0x02,
		LIBFLAG_FHIDDEN = 0x04,
		LIBFLAG_FHASDISKIMAGE = 0x08
	} LIBFLAGS;

	typedef [unique] ITypeLib * LPTYPELIB;

	typedef struct tagTLIBATTR {
		GUID guid;
		LCID lcid;
		SYSKIND syskind;
		WORD wMajorVerNum;
		WORD wMinorVerNum;
		WORD wLibFlags;
	} TLIBATTR, * LPTLIBATTR;

	[local]
	UINT GetTypeInfoCount(
				void
			);

	[call_as(GetTypeInfoCount)]
	HRESULT RemoteGetTypeInfoCount(
				[out]  UINT * pcTInfo
			);

	HRESULT GetTypeInfo(
				[in]  UINT index,
				[out] ITypeInfo ** ppTInfo
			);

	HRESULT GetTypeInfoType(
				[in]  UINT index,
				[out] TYPEKIND * pTKind
			);

	HRESULT GetTypeInfoOfGuid(
				[in]  REFGUID guid,
				[out] ITypeInfo ** ppTinfo
			);

	[local]
	HRESULT GetLibAttr(
				[out] TLIBATTR ** ppTLibAttr
			);

	[call_as(GetLibAttr)]
	HRESULT RemoteGetLibAttr(

				[out] LPTLIBATTR * ppTLibAttr,
				[out] CLEANLOCALSTORAGE *
						pDummy
			);

	HRESULT GetTypeComp(
				[out] ITypeComp ** ppTComp
			);

	[local]
	HRESULT GetDocumentation(
				[in]	INT index,
				[out] BSTR * pBstrName,
				[out] BSTR * pBstrDocString,
				[out] DWORD * pdwHelpContext,
				[out] BSTR * pBstrHelpFile
			);

	[call_as(GetDocumentation)]
	HRESULT RemoteGetDocumentation(
				[in]	INT index,
				[in]	DWORD refPtrFlags,
				[out]	BSTR * pBstrName,
				[out]	BSTR * pBstrDocString,
				[out]	DWORD * 
					pdwHelpContext,
				[out] BSTR * pBstrHelpFile
			);

	[local]
	HRESULT IsName(
				[in, out] LPOLESTR szNameBuf,
				[in] ULONG lHashVal,
				[out] BOOL * pfName
			);

	[call_as(IsName)]
	HRESULT RemoteIsName(
				[in] LPOLESTR szNameBuf,
				[in] ULONG lHashVal,
				[out] BOOL * pfName,
				[out] BSTR * pBstrLibName
			);

	[local]
	HRESULT FindName(
				[ ... (cont.)
Quickly Convert Recordset into an XML File (using: Visual Basic 6.0) [Data Access, MDAC, Microsoft Data Access Components, Recordset Object, XML, Visual Basic, Category] www.devx.com 18-Feb-2000 by Deepak Pant
Quickly Convert Recordset into an XML File

  With MDAC 2.1 (Microsoft Data Access Components), you can generate a XML file 
quickly from a Recordset object. 
The Save() method of Recordset object takes in an optional parameter, 
adPersistXML, of type "PersistFormatEnum". By specifying adPersistXML in the 
Save() method, you can save the Recordset object into a file in XML format. 
Similarly, you can reopen a Recordset by providing a previously saved XML file. 

Here is an example that saves a Recordset as an XML file: 

Public Sub GenerateXML()
   Dim oRecordset As ADODB.Recordset

   ‘ Create Recordset object
   Set oRecordset = CreateObject("ADODB.Recordset")

   ‘ Open Recordset
   oRecordset.Open "SELECT * FROM MyTable", _
      "DSN=Sample;Provider=MSDASQL; uid=sa;pwd=;", _
      adOpenDynamic, adLockOptimistic, adCmdText

   ‘ Save Recordset as an XML file
   oRecordset.Save "C:\MyFolder\MyTable.xml", adPersistXML

   ‘ Close Recordset
   oRecordset.Close

End Sub
 
  Deepak Pant 
 
GUIDGen Developer Studio AddIn [Macro, Add-in, Component, Article, Visual C++] www.codeproject.com 18-Feb-2000 by Eddie Velasquez
	GUIDGen Developer Studio AddIn
	 
	Eddie Velasquez
	 
	An Add-In that replaces and extends the GUID Generator Component 
included with Developer Studio
	
Determining the version number of the Windows system libraries [System, Article, Visual C++] www.codeproject.com 18-Feb-2000 by Chris Maunder
	Determining the version number of the Windows system libraries
	 
	Chris Maunder
	 
	A simple way to determine the version of the Comctl32.dll, Shell32.dll 
and Shlwapi.dll system libraries
	
Beware of global variables in Visual Basic COM objects [Visual Basic, VBScript, VBA, Visual Basic, COM, Thread, Article, Visual C++] www.codeproject.com 18-Feb-2000 by Jeremiah Talkar
	Beware of global variables in Visual Basic COM objects
	 
	Jeremiah Talkar
	 
	A note for C++ programmers about global varaibles in Apartment Threaded 
VB COM objects
	
CSplitPath [C++, MFC, STL, Component, Article, Visual C++] www.codeproject.com 17-Feb-2000 by Kevin Lussier
	CSplitPath
	 
	Kevin Lussier
	 
	A class that will split a complete path into its Components.
	
Two Simple Lines for Self-Repairing Apps [C++, MFC, STL, Article, Visual C++] www.codeproject.com 17-Feb-2000 by Jesse Ezell
	Two Simple Lines for Self-Repairing Apps
	 
	Jesse Ezell
	 
	Creating Self-Repairing Applications using Windows Installer
	
Structured Storage: The DocFile [File, Folder, Structured Storage, Wrapper Class, Article, Visual C++] www.codeproject.com 17-Feb-2000 by Andrew Peace
	Structured Storage: The DocFile
	 
	Andrew Peace
	 
	A Wrapper Class for easy use of OLE structured storage.
	
Replacing the Default MFC Icon [Font, GDI, GUI, Icon, MFC, Article, Visual C++] www.codeproject.com 17-Feb-2000 by Shahzad Alam Khan
	Replacing the Default MFC Icon
	 
	Shahzad Alam Khan
	 
	How to replace the default MFC icon in your application.
	
MPCStatusBar: An Enhanced CStatusBar [Status Bar, Article, Visual C++] www.codeproject.com 17-Feb-2000 by Pierre Mellinand
	MPCStatusBar: An Enhanced CStatusBar
	 
	Pierre Mellinand
	 
	An enhanced CStatusBar to easily and dynamically add/remove controls on 
a status bar
	
Static LED control [Control, Article, Visual C++] www.codeguru.com 17-Feb-2000 by Michel Wassink
	Static LED control
	 
	Michel Wassink
	 
	
	
Simple DNS Resolver v1.0 [Internet, Article, Visual C++] www.codeguru.com 17-Feb-2000 by Emmanuel Kartmann
	Simple DNS Resolver v1.0
	 
	Emmanuel Kartmann
	 
	Extremely in-depth, well written DNS tutorial and resolver utility
	
System Color Changer [Tool, Article, Visual C++] www.codeguru.com 17-Feb-2000 by Winter
	System Color Changer
	 
	Winter
	 
	Nifty little utility for quickly changing the system colors during 
testing
	
Simple DNS Resolver v1.0 [Article, Visual C++] www.earthweb.com 17-Feb-2000 by Emmanuel Kartmann
	Simple DNS Resolver v1.0
	 
	Emmanuel Kartmann
	 
	17-Feb-2000
	 
	17-Feb-2000
	 
	This ATL COM component provides very simple Internet name resolving 
functionality (Domain Name System or DNS).
	
Simple Email Client v1.0 [Internet, Update, Article, Visual C++] www.codeguru.com 16-Feb-2000 by Emmanuel Kartmann
	Simple Email Client v1.0
	 
	Emmanuel Kartmann
	 
	Updated Article
	
Drag and Drop Between Any CWnd-Derived Window [C++, MFC, Windows Programming, Update, Article, Visual C++] www.codeguru.com 16-Feb-2000 by David Orr
	Drag and Drop Between Any CWnd-Derived Window
	 
	David Orr
	 
	Updated Demo Project
	
Mounting Network Drives [System, Update, Article, Visual C++] www.codeguru.com 16-Feb-2000 by Rick Jones
	Mounting Network Drives
	 
	Rick Jones
	 
	Demo Project Updated
	
CMacButton, CMacCheckBox and CMacRadioButton [Control, Update, Article, Visual C++] www.codeguru.com 16-Feb-2000 by Paul Meidinger
	CMacButton, CMacCheckBox and CMacRadioButton
	 
	Paul Meidinger
	 
	Updated popular buttons controls and added a new "More" control
	
Command Line Parameters Context Menu Extension [Shell Programming, Article, Visual C++] www.codeguru.com 16-Feb-2000 by Nick Carruthers
	Command Line Parameters Context Menu Extension
	 
	Nick Carruthers
	 
	
	
Dynamic Dialog Class [Dialog, Article, Visual C++] www.codeguru.com 16-Feb-2000 by Marcel Scherpenisse
	Dynamic Dialog Class
	 
	Marcel Scherpenisse
	 
	
	
Creating Embedded Child Property Sheets [Property Sheet, Article, Visual C++] www.codeguru.com 16-Feb-2000 by Torben B Haagh
	Creating Embedded Child Property Sheets
	 
	Torben B Haagh
	 
	
	
SmartHelp 1.0 [Macro, Update, Article, Visual C++] www.codeguru.com 16-Feb-2000 by Goran Mitrovic
	SmartHelp 1.0
	 
	Goran Mitrovic
	 
	Added support for at least one more version of MSDN Library
	
Command Line Parameters Context Menu Extension [Article, Visual C++] www.earthweb.com 16-Feb-2000 by Nick Carruthers
	Command Line Parameters Context Menu Extension
	 
	Nick Carruthers
	 
	16-Feb-2000
	 
	16-Feb-2000
	 
	Great article on menu extensions
	
System Color Changer [Article, Visual C++] www.earthweb.com 16-Feb-2000 by Winter
	System Color Changer
	 
	Winter
	 
	16-Feb-2000
	 
	16-Feb-2000
	 
	This is the simplest of utilities intended to make UI testing easier by 
allowing you to change the system colors (as specified in the documentation for 
GetSysColor) with the click of a button
	
Mounting Network Drives [Article, Visual C++] www.earthweb.com 16-Feb-2000 by Rick Jones
	Mounting Network Drives
	 
	Rick Jones
	 
	16-Feb-2000
	 
	16-Feb-2000
	 
	C++ wrapper class for a password dialog (exactly the same as Windows 
NT) that enables you to mount a specific drive.
	
Drag and Drop Between Any CWnd-Derived Window [Article, Visual C++] www.earthweb.com 16-Feb-2000 by David Orr
	Drag and Drop Between Any CWnd-Derived Window
	 
	David Orr
	 
	16-Feb-2000
	 
	16-Feb-2000
	 
	Suppose you have a number or controls on various windows that you want 
to drag and drop data between. Now suppose that the data shown in your controls 
come from your own data objects, so that dragging and dropping is not only 
required for text by also your own objects. Then this article is for you!!!
	
Simple Email Client v1. [Article, Visual C++] www.earthweb.com 16-Feb-2000 by Emmanuel Kartmann
	Simple Email Client v1.
	 
	Emmanuel Kartmann
	 
	16-Feb-2000
	 
	16-Feb-2000
	 
	This ATL COM component provides very simple Internet email 
functionality (SMTP).
	
Child Property Sheet [Article, Visual C++] www.earthweb.com 16-Feb-2000 by Torbin Haagh
	Child Property Sheet
	 
	Torbin Haagh
	 
	16-Feb-2000
	 
	16-Feb-2000
	 
	Enables you to place a property sheet inside a property page
	
Displaying the servers current Date [Active Server Pages, Date, Article, Visual C++] www.codeproject.com 15-Feb-2000 by Chris Maunder
	Displaying the servers current Date
	 
	Chris Maunder
	 
	A simple routine to display the current date of the server in the 
clients browser
	
Dynamic Dialog Class [Dialog, Windows Programming, Article, Visual C++] www.codeproject.com 15-Feb-2000 by Marcel Scherpenisse
	Dynamic Dialog Class
	 
	Marcel Scherpenisse
	 
	Create dialogs dynamically, and easily, without the need for a dialog 
resource script.
	
Displaying the clients current Date [JavaScript, Date, Article, Visual C++] www.codeproject.com 15-Feb-2000 by Chris Maunder
	Displaying the clients current Date
	 
	Chris Maunder
	 
	A simple routine to display the current date in the clients browser
	
Determining the Active Window [Active Window, Article, Visual Basic] www.earthweb.com 15-Feb-2000
	Determining the Active Window
	 
	-N/A
	 
	15-Feb-2000
	 
	15-Feb-2000
	 
	VB code to find the active window
	
Advanced MIDI Programming / Utility [MIDI, Article, Visual Basic] www.earthweb.com 15-Feb-2000
	Advanced MIDI Programming / Utility
	 
	-N/A
	 
	15-Feb-2000
	 
	15-Feb-2000
	 
	VB code for MIDI programming beginners
	
A class for API Created Dynamic Popup Menus [Popup Menu, Context Menu, Article, Visual Basic] www.earthweb.com 15-Feb-2000
	A class for API Created Dynamic Popup Menus
	 
	-N/A
	 
	15-Feb-2000
	 
	15-Feb-2000
	 
	VB code for a Context Menu
	
Creating Shaped Windows [Article, Visual Basic] www.earthweb.com 15-Feb-2000
	Creating Shaped Windows
	 
	-N/A
	 
	15-Feb-2000
	 
	15-Feb-2000
	 
	VB code to create windows of various shapes
	
Let's talk about the Sender [Article, Delphi] delphi.about.com 15-Feb-2000
	15-Feb-2000
	 
	15-Feb-2000
	 
	Let's talk about the Sender
	 
	Delphi For Beginners: So, what is that Sender, Delphianers are talking 
about, anyway?
	
C++ Books in Review [Article, Visual C++] cplus.about.com 14-Feb-2000
	14-Feb-2000
	 
	14-Feb-2000
	  
	C++ Books in Review
	 
	3 books on C++ that you should read
	
Persist ActiveX Controls At Runtime [ATL, COM, Article, Visual C++] www.codeguru.com 14-Feb-2000 by Lee Marmara
	Persist ActiveX Controls At Runtime
	 
	Lee Marmara
	 
	
	
AutoPtr Class [C++, MFC, Article, Visual C++] www.codeguru.com 14-Feb-2000 by Dmitry Leonov
	AutoPtrClass
	 
	Dmitry Leonov
	 
	
	
A Drag and Drop List Control [Listview, Article, Visual C++] www.codeguru.com 14-Feb-2000 by Adrian Stanley
	A Drag and Drop List Control
	 
	Adrian Stanley
	 
	
	
SmartHelp 1.0 [Macro, Article, Visual C++] www.codeguru.com 14-Feb-2000 by Goran Mitrovic
	SmartHelp 1.0
	 
	Goran Mitrovic
	 
	
	
Persist ActiveX Controls At Runtime [Article, Visual C++] www.earthweb.com 14-Feb-2000 by Lee Marmara
	Persist ActiveX Controls At Runtime
	 
	Lee Marmara
	 
	14-Feb-2000
	 
	14-Feb-2000
	 
	Code to store and load user preferences and wanted to persist the 
properties of some ActiveX controls on my dialog
	
A Drag and Drop List Control [Article, Visual C++] www.earthweb.com 14-Feb-2000 by Adrian Stanley
	A Drag and Drop List Control
	 
	Adrian Stanley
	 
	14-Feb-2000
	 
	14-Feb-2000
	 
	Complete solution with working code, which is thus the purpose of this 
contribution.
	
SmartHelp 2.0 [Article, Visual C++] www.earthweb.com 14-Feb-2000 by Goran Mitrovic
	SmartHelp 2.0
	 
	Goran Mitrovic
	 
	14-Feb-2000
	 
	14-Feb-2000
	 
	SmartHelp helps you work with the MSDN Library.
	
Paint Shop Pro 5.0 [Graphic, Image, Product, Owned By IPL, Owned By BDP, Development, CD-ROM] Purchased 12-Jan-1999, $59
	SmartHelp 2.0
	 
	Goran Mitrovic
	 
	14-Feb-2000
	 
	14-Feb-2000
	 
	SmartHelp helps you work with the MSDN Library.
	
MBFormEx ActiveX Control [ActiveX Control, Article, Visual Basic] www.vb2themax.com 12-Feb-2000 by Marco Bellinaso
	MBFormEx ActiveX Control
	  
	12-Feb-2000
	 
	12-Feb-2000
	 
	Marco Bellinaso
	 
	Add this control to a VB form and onjoy a number of great new features, 
including: the control over the size and position of the form when maximized, 
automatic resizing for fonts and controls (including controls that are added 
dynamically), transparent background, new items to system menu, the capability 
to be Always-on-top and to flash the caption to draw user's attention, and the 
FullScreen mode. The MBFormEx control exposes also a number of events that 
should have added to VB forms, such as ActivateApp and DeactivateApp, 
CompactingMemory, DisplayChanged, DragDropFiles, ItemSelect, Move, and 
SysItemClick (that fires when a system menu item has been clicked). The program 
comes with a Setup routine.
	 
	Updated: 8/19/00
	
Using the Implements Statement (using: Visual Basic 6.0) [Abstract Class, Implements Statement, Interface, Tip, Visual Basic] www.devx.com 11-Feb-2000 by Michael Gellis
Using the Implements Statement
By Michael Gellis

Many people ask about how the Implements statement is used in Visual Basic. It 
is actually quite useful and allows you to build more flexible applications. 
Here's what it is all about: 

The Implements statement is used as part of a technique that separates the 
interface of an object from its implementation, so that multiple 
implementations of the interface can be developed. The interface is defined as 
an abstract interface, and concrete classes inherit the interface using the 
Implements statement. Clients can then bind to the interface and dynamically 
switch these concrete classes used to fulfill the role of the interface. To 
explain this, let's explore the following scenario: 

Suppose we are creating an object for a company-wide application that we'll 
call AccountTransfer. This component must have the ability to log all actions 
that it performs and the logging method will vary from client to client. We 
want to develop, compile, and distribute AccountTransfer without having to 
modify it for each client. To solve this problem we decide to encapsulate the 
logging functionality in a separate object. The logging object, called Log, has 
one method, called Execute, that takes a parameter, called Info. Clients will 
be responsible for creating this logging object. They will supply it to 
AccountTransfer by setting a property of AccountTransfer, called LogObject. 
Every time AccountTransfer performs a transaction it calls the Execute method 
of the Log object that was set by the client through the LogObject property. 

The challenge is how to ensure that the client that creates the Log object 
gives it the correct method and parameter so that our component doesn't crash. 
In other words, how do we do early binding to an object that hasn't been 
created yet, and will vary from client to client? Using Implements we can 
define a standard description of the LogObject called an abstract interface. An 
interface is made up of the ... (cont.)
Drag and Drop Between Any CWnd-Derived Window [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 11-Feb-2000 by David Orr
	Drag and Drop Between Any CWnd-Derived Window
	 
	David Orr
	 
	
	
Non-Resizable, Non-Movable Window [Document/View, Article, Visual C++] www.codeguru.com 11-Feb-2000 by Sergey Eai
	Non-Resizable, Non-Movable Window
	 
	Sergey Eai
	 
	
	
A Dual Listbox Selection Manager [Listbox, Article, Visual C++] www.codeguru.com 11-Feb-2000 by Steve Aube
	A Dual Listbox Selection Manager
	 
	Steve Aube
	 
	
	
Password Retrieval Application [Sample, Update, Article, Visual C++] www.codeguru.com 11-Feb-2000 by Tom Archer
	Password Retrieval Application
	 
	Tom Archer
	 
	Now allows the ability to enter a list of Windows classes on the dlg 
that are treated as password edit controls
	
CGraph: Graph Class for Plotting Groups of Data [Control, Article, Visual C++] www.codeguru.com 11-Feb-2000 by Brian Convery
	CGraph: Graph Class for Plotting Groups of Data
	 
	Brian Convery
	 
	
	
Non-Resizable, Non-Movable Window [Article, Visual C++] www.earthweb.com 11-Feb-2000 by Siarhei Akulich
	Non-Resizable, Non-Movable Window
	 
	Siarhei Akulich
	 
	11-Feb-2000
	 
	11-Feb-2000
	 
	Enables you to "fix" a window in terms of size and position on the 
screen
	
CGraph - Graph Class for Plotting Groups of Data [Article, Visual C++] www.earthweb.com 11-Feb-2000 by Brian Convery
	CGraph - Graph Class for Plotting Groups of Data
	 
	Brian Convery
	 
	11-Feb-2000
	 
	11-Feb-2000
	 
	A usable graph and chart class for plotting groups of data.
	
Multiple Top Level Windows [Document/View, Article, Visual C++] www.codeproject.com 10-Feb-2000 by Don Grasberger
	Multiple Top Level Windows
	 
	Don Grasberger
	 
	Allows an application to have multiple top-level windows.
	
OCX Snapshot [Control, Article, Visual C++] www.codeproject.com 10-Feb-2000 by Russell Morris
	OCX Snapshot
	 
	Russell Morris
	 
	How to take a snapshot of an OCX without using HWNDs.
	
Static LED control [Static Control, Article, Visual C++] www.codeproject.com 10-Feb-2000 by Michel Wassink
	Static LED control
	 
	Michel Wassink
	 
	A control to display text or numbers with a 14 or 7 segment display.
	
Animated Buttons [Button Control, Article, Visual C++] www.codeproject.com 09-Feb-2000 by Raghav Gupta
	Animated Buttons
	 
	Raghav Gupta
	 
	A class that show AVIs inside a button.
	
Elliptic Buttons [Button Control, Article, Visual C++] www.codeproject.com 09-Feb-2000 by Raghav Gupta
	Elliptic Buttons
	 
	Raghav Gupta
	 
	A class that turns rectangular buttons into elliptic buttons.
	
Display Loaded Modules v1.5 [DLL, Article, Visual C++] www.codeproject.com 09-Feb-2000 by Emmanuel Kartmann
	Display Loaded Modules v1.5
	 
	Emmanuel Kartmann
	 
	A Debugging Tool for Application using Multiple DLL
	
Increment Private Build Number [Macro, Add-in, Article, Visual C++] www.codeproject.com 09-Feb-2000 by Mihai Filimon
	Increment Private Build Number
	 
	Mihai Filimon
	 
	An add-in to automatically increment the PrivateBuild field in your 
applications resource file.
	
Very Simple Print Preview without the Document/View architecture [Printing, Print Preview, Document/View, Article, Visual C++] www.codeproject.com 09-Feb-2000 by Danang Suharno
	Very Simple Print Preview without the Document/View architecture
	 
	Danang Suharno
	 
	A very simple way of displaying a print preview in a simple window
	
CStatic That Knows Good From Bad [Static Control, Article, Visual C++] www.codeguru.com 09-Feb-2000 by Keith Vasilakes
	CStatic That Knows Good From Bad
	 
	Keith Vasilakes
	 
	
	
Process and Module Enumeration Class [System, Article, Visual C++] www.codeguru.com 09-Feb-2000 by JaeKi Lee
	Process and Module Enumeration Class
	 
	JaeKi Lee
	 
	
	
Editable Flex Grid (without an Edit control) [Control, Article, Visual C++] www.codeguru.com 09-Feb-2000 by Rafat Sarosh
	Editable Flex Grid (without an Edit control)
	 
	Rafat Sarosh
	 
	
	
Cool Owner Draw Engine [Control, Article, Visual C++] www.codeguru.com 09-Feb-2000 by Thales P Carvalho
	Cool Owner Draw Engine
	 
	Thales P Carvalho
	 
	Very cool and a lot of fun to boot !!
	
Extended Message Box (CTcxMsgBox) [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 09-Feb-2000 by Thales P Carvalho
	Extended Message Box (CTcxMsgBox)
	 
	Thales P Carvalho
	 
	Message Box class that lets you do things previously only doable with 
dialog boxes!!
	
Expandable, Data Type-Neutral Buffer Class [C++, MFC, Article, Visual C++] www.codeguru.com 09-Feb-2000 by Abrar Ahmad
	Expandable, Data Type-Neutral Buffer Class
	 
	Abrar Ahmad
	 
	
	
Scrolling Support for ATL Composite Controls [ATL, COM, Article, Visual C++] www.codeguru.com 09-Feb-2000 by Brad Barber
	Scrolling Support for ATL Composite Controls
	 
	Brad Barber
	 
	
	
Access Automation from Visual C++ [Database, Article, Visual C++] www.codeguru.com 09-Feb-2000 by Rafat Sarosh
	Access Automation from Visual C++
	 
	Rafat Sarosh
	 
	
	
CHTTPSocket (using: Visual C++ 6.0) [Internet, Article, Visual C++] www.codeguru.com 09-Feb-2000 by Tair Abdurman
	CHTTPSocket
	 
	Class to Explore Web
	 
	Tair Abdurman
	
Hiding the Flat Toolbar Separators [Toolbar, Article, Visual C++] www.codeguru.com 09-Feb-2000 by Andrey Abelyashev
	Hiding the Flat Toolbar Separators
	 
	Andrey Abelyashev
	 
	
	
Expandable, Data Type-Neutral Buffer Class [Article, Visual C++] www.earthweb.com 09-Feb-2000 by Abrar Ahmad
	Expandable, Data Type-Neutral Buffer Class
	 
	Abrar Ahmad
	 
	9-Feb-2000
	 
	9-Feb-2000
	 
	CBuffer is an expandable buffer class which can expand when needed and 
allows insertion of data and many operation on buffer
	
CHTTPSocket - Class to Explore Web [Article, Visual C++] www.earthweb.com 09-Feb-2000 by Tair Abdurman
	CHTTPSocket - Class to Explore Web
	 
	Tair Abdurman
	 
	9-Feb-2000
	 
	9-Feb-2000
	 
	Here is CHTTPSocket class with full source code, full qualified, one 
step, HTTP client
	
Cool Owner Draw Engine [Article, Visual C++] www.earthweb.com 09-Feb-2000 by Thales P Carvalho
	Cool Owner Draw Engine
	 
	Thales P Carvalho
	 
	9-Feb-2000
	 
	9-Feb-2000
	 
	Here I present a class that helps writing Owner Draw Controls with 
basic - although cute - text formatting
	
Hiding the Flat Toolbar Separators [Article, Visual C++] www.earthweb.com 09-Feb-2000 by Andrey Abelyashev
	Hiding the Flat Toolbar Separators
	 
	Andrey Abelyashev
	 
	9-Feb-2000
	 
	9-Feb-2000
	 
	Hiding the Flat Toolbar Separators
	
Extended Message Box (CTcxMsgBox) [Article, Visual C++] www.earthweb.com 09-Feb-2000 by Thales P Carvalho
	Extended Message Box (CTcxMsgBox)
	 
	Thales P Carvalho
	 
	9-Feb-2000
	 
	9-Feb-2000
	 
	Extended message box class for MFC applications (CTcxMsgBox).
	
Access Automation from Visual C++ [Article, Visual C++] www.earthweb.com 09-Feb-2000 by Rafat Sarosh
	Access Automation from Visual C++
	 
	Rafat Sarosh
	 
	9-Feb-2000
	 
	9-Feb-2000
	 
	Utilizing Access' reporting capabilities from Visual C++ via OLE 
Automation
	
Editable Flex Grid (without an Edit control) [Article, Visual C++] www.earthweb.com 09-Feb-2000 by Rafat Sarosh
	Editable Flex Grid (without an Edit control)
	 
	Rafat Sarosh
	 
	9-Feb-2000
	 
	9-Feb-2000
	 
	Article that shows (with Visual C++) how to add editing capability to 
the Flex Grid.
	
Detecting / Counting Duplicate Items in a ListBox [ListBox, Article, Visual Basic] www.earthweb.com 09-Feb-2000
	Detecting / Counting Duplicate Items in a ListBox
	 
	-N/A
	 
	9-Feb-2000
	 
	9-Feb-2000
	 
	VB code to detect and count duplicate list box entries
	
Listing Available DSN / Drivers Installed [DSN, Article, Visual Basic] www.earthweb.com 09-Feb-2000
	Listing Available DSN / Drivers Installed
	 
	-N/A
	 
	9-Feb-2000
	 
	9-Feb-2000
	 
	VB code to list installed DSN/drivers
	
cICMP .... Class module provides a simple way to get the IP address by name [IP Address, Network, Winsock, Domain Name, Visual Basic, VB Class Module] www.codeoftheweek.com 08-Feb-2000, no. 114
Requirements

Visual Basic 4.0 32-bit or higher.

In this issue we discuss how to get the IP address from a domain
name.  This can be useful for debugging network problems.  We have
several issues planned to enhance this class to include ping and
traceroute functions direct from Visual Basic.  If you are
interested in more details, contact ping@codeoftheweek.com

cICMP

This class module provides a simple way to get the IP address by
name.  If you use this function on the Internet it will figure out
the IP address of a domain name.  If you use it on your intranet
it might return the name of a machine found in your hosts file.
It uses the winsock libraries to gather this information.

Methods

Public Sub Initialize()

This method needs to be called before the any other routines in
this class module.  It is the one that initializes the winsock
library.


Functions

Public Function GetIPAddress(ByVal sLookupName As String) As String

Returns the IP address of a network name (such as a domain name).
For example codeoftheweek.com returns 216.149.93.134

Sample Usage

The below sample shows will determine the IP address of
codeoftheweek.com.

    Dim ICMP As New cICMP
    
    ICMP.Initialize
    MsgBox "codeoftheweek.com IP address is " & 
ICMP.GetIPAddress("codeoftheweek.com")
    Set ICMP = Nothing
A C++ Wrapper for TWAIN [Audio, Video, Article, Visual C++] www.codeproject.com 08-Feb-2000 by Rajiv Ramachandran
	A C++ Wrapper for TWAIN
	 
	Rajiv Ramachandran
	 
	A C++ wrapper for TWAIN. Allows you to implement a scanning interface.
	
Sizing TabControlBar [Toolbar, Docking Window, Article, Visual C++] www.codeproject.com 08-Feb-2000 by Dirk Clemens
	Sizing TabControlBar
	 
	Dirk Clemens
	 
	Creates a dockable and resizable control bar.
	
A Ruler Control [Control, Article, Visual C++] www.codeproject.com 08-Feb-2000 by Michael Ang
	A Ruler Control
	 
	Michael Ang
	 
	A simple ruler control to allow users to set margins or indents
	
The Windows Thumbnail Control [Control, Article, Visual C++] www.codeproject.com 08-Feb-2000 by Smile Seo
	The Windows Thumbnail Control
	 
	Smile Seo
	 
	An application demonstrating the windows Thumbnail control
	
Send-Messenger Service Pair [Network, Article, Visual C++] www.codeguru.com 08-Feb-2000 by Bruno Vais
	Send-Messenger Service Pair
	 
	Bruno Vais
	 
	
	
Storage Media Independent AVL Library [C++, MFC, Article, Visual C++] www.codeguru.com 08-Feb-2000 by Wu Yuh Song
	Storage Media Independent AVL Library
	 
	Wu Yuh Song
	 
	
	
Automatic Font Handling Class [GDI, Article, Visual C++] www.codeguru.com 08-Feb-2000 by Jamie Nordmeyer
	Automatic Font Handling Class
	 
	Jamie Nordmeyer
	 
	
	
Shape-Changing Progress Control [Control, Article, Visual C++] www.codeguru.com 08-Feb-2000 by Ryan Binns
	Shape-Changing Progress Control
	 
	Ryan Binns
	 
	Very cool new look for your progress bars!!
	
Owner Drawn Menu with Icons (3) (uses Toolbar res) [Menu, Update, Article, Visual C++] www.codeguru.com 08-Feb-2000 by Brent Corkum
	Owner Drawn Menu with Icons (3) (uses Toolbar res)
	 
	Brent Corkum
	 
	Major updates to very popular menu article!!
	
Storage Media Independent AVL Library [Article, Visual C++] www.earthweb.com 08-Feb-2000 by Wu Yuh Song
	Storage Media Independent AVL Library
	 
	Wu Yuh Song
	 
	8-Feb-2000
	 
	8-Feb-2000
	 
	AVL tree libraries to work in the random access memory(RAM
	
Shape-Changing Progress Control [Article, Visual C++] www.earthweb.com 08-Feb-2000 by Ryan Binns
	Shape-Changing Progress Control
	 
	Ryan Binns
	 
	8-Feb-2000
	 
	8-Feb-2000
	 
	Very cool progress control
	
Send - Messenger Service Pair [Article, Visual C++] www.earthweb.com 08-Feb-2000 by Bruno Vais
	Send - Messenger Service Pair
	 
	Bruno Vais
	 
	8-Feb-2000
	 
	8-Feb-2000
	 
	The "Send"-"Messenger" pair are ment to replace the old "Net 
send"-"Messenger".
	
Owner Drawn Menu with Icons [Article, Visual C++] www.earthweb.com 08-Feb-2000 by Brent Corkum
	Owner Drawn Menu with Icons
	 
	Brent Corkum
	 
	8-Feb-2000
	 
	8-Feb-2000
	 
	This class, BCMenu, implements owner drawn menus derived from the CMenu 
class.
	
Message in the Bottle [Article, Delphi] delphi.about.com 08-Feb-2000
	08-Feb-2000
	 
	08-Feb-2000
	 
	Message in the Bottle
	 
	Handling Windows Messages the Delphi way!
	
ATL Grid Control [ATL, Grid Control, Article, Visual C++] www.codeproject.com 07-Feb-2000 by Mario Zucca
	ATL Grid Control
	 
	Mario Zucca
	 
	A grid control for displaying tabular data, based on Chris Maunder's 
grid control
	
Creating alternate GUI using Vector Art [Font, GDI, GUI, Article, Visual C++] www.codeproject.com 07-Feb-2000 by Keith Rule
	Creating alternate GUI using Vector Art
	 
	Keith Rule
	 
	Create visually complex, yet programmatically simple, non-rectangular 
GUIs
	
Creating holes in a window [Font, GDI, GUI, Article, Visual C++] www.codeproject.com 07-Feb-2000 by Amir Salzberg
	Creating holes in a window
	 
	Amir Salzberg
	 
	How to create a window with holes in it
	
Enhanced CListCtrl that accepts and filters dropped files and folders [List Control, Drag and Drop, Article, Visual C++] www.codeproject.com 07-Feb-2000 by Stuart Carter
	Enhanced CListCtrl that accepts and filters dropped files and folders
	 
	Stuart Carter
	 
	This article explains how to support file Drag and Drop in your 
CWnd-derived object
	
Visual Studio Bookmark Saver Add-In [Macro, Add-in, Visual Studio, Article, Visual C++] www.codeproject.com 07-Feb-2000 by Jignesh Patel
	Visual Studio Bookmark Saver Add-In
	 
	Jignesh Patel
	 
	Visual Studio add-in which saves and restores bookmarks after closing 
and re-opening a file.
	
Using the Internet Explorer 5 built-in progress dialog [Control, Internet Explorer, Wrapper Class, Dialog, Article, Visual C++] www.codeproject.com 07-Feb-2000 by Michael Dunn
	Using the Internet Explorer 5 built-in progress dialog
	 
	Michael Dunn
	 
	A Wrapper Class for the progress Dialog provided by IE 5.
	
VRMLTest: Full VRML 1.x Parser and partial viewer [OpenGL, Parser, Article, Visual C++] www.codeproject.com 07-Feb-2000 by Antonio Tejada Lacaci
	VRMLTest: Full VRML 1.x Parser and partial viewer
	 
	Antonio Tejada Lacaci
	 
	VRML parser and Partial viewer
	
Printing support functions [Printing, Article, Visual C++] www.codeproject.com 07-Feb-2000 by Michael A Barnhart
	Printing support functions
	 
	Michael A Barnhart
	 
	Two methods for obtaining consistent output between printers
	
A C++ Wrapper for TWAIN [Multimedia, Article, Visual C++] www.codeguru.com 07-Feb-2000 by Rajiv Ramachandran
	A C++ Wrapper for TWAIN
	 
	Rajiv Ramachandran
	 
	
	
Corel PhotoHouse-like Color Chooser [Dialog, Update, Article, Visual C++] www.codeguru.com 07-Feb-2000 by Rajiv Ramachandran
	Corel PhotoHouse-like Color Chooser
	 
	Rajiv Ramachandran
	 
	Updated demo project
	
Cookies in an ISAPI Extension DLL [ISAPI, Update, Article, Visual C++] www.codeguru.com 07-Feb-2000 by Klynt Klimek
	Cookies in an ISAPI Extension DLL
	 
	Klynt Klimek
	 
	Updated demo project
	
Command-line 'Where' Tool [Tool, Article, Visual C++] www.codeguru.com 07-Feb-2000 by Glenn Carr
	Command-line 'Where' Tool
	 
	Glenn Carr
	 
	
	
TipMaker Tool [Tool, Update, Article, Visual C++] www.codeguru.com 07-Feb-2000 by Peter Boulton
	TipMaker Tool
	 
	Peter Boulton
	 
	Implemented several new features in tool
	
TipMaker Tool [Article, Visual C++] www.earthweb.com 07-Feb-2000 by Peter Boulton
	TipMaker Tool
	 
	Peter Boulton
	 
	7-Feb-2000
	 
	7-Feb-2000
	 
	Adding tooltip text to dialog box controls is a tedious process. 
TipMaker.exe is a tool that makes that process considerably faster and less 
error prone.
	
Cookies in an ISAPI Extension DLL [Article, Visual C++] www.earthweb.com 07-Feb-2000 by Klynt Klimek
	Cookies in an ISAPI Extension DLL
	 
	Klynt Klimek
	 
	7-Feb-2000
	 
	7-Feb-2000
	 
	I was designing an ISAPI .dll for use on our website, and quickly 
discovered what little information is available regarding the use of cookies on 
an MFC server side ISAPI extension. For login purposes, the cookies were 
absolutely essential. Hopefully this code will save somebody the R&D I had to 
go through
	
A C++ Wrapper for TWAIN [Article, Visual C++] www.earthweb.com 07-Feb-2000 by Rajiv Ramachandran
	A C++ Wrapper for TWAIN
	 
	Rajiv Ramachandran
	 
	7-Feb-2000
	 
	7-Feb-2000
	 
	Add scanner support to your applications
	
Arrays in C and C++ - Part II [Article, Visual C++] cplus.about.com 06-Feb-2000
	06-Feb-2000
	 
	06-Feb-2000
	  
	Arrays in C and C++ - Part II
	 
	How to use arrays of objects
	
LiteGrid Control [Control, Article, Visual C++] www.codeguru.com 06-Feb-2000 by Andrew Ivannikov
	LiteGrid Control
	 
	Andrew Ivannikov
	 
	
	
Screen Saver Tray Icon Sample [Shell Programming, Update, Article, Visual C++] www.codeguru.com 06-Feb-2000 by Thierry Maurel
	Screen Saver Tray Icon Sample
	 
	Thierry Maurel
	 
	Update to very popular article!!
	
Creating a Self Extracting Executable [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 06-Feb-2000 by James Spibey
	Creating a Self Extracting Executable
	 
	James Spibey
	 
	
	
A C++ Wrapper for TWAIN [Article, Visual C++] www.earthweb.com 06-Feb-2000 by Rajiv Ramachandran
	A C++ Wrapper for TWAIN
	 
	Rajiv Ramachandran
	 
	6-Feb-2000
	 
	6-Feb-2000
	 
	One of my applications needed some scanner support. I thought it might 
be a good idea to get into TWAIN and try it out. Well, here are the results.
	
Multiple CRectTracker Class [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 05-Feb-2000 by Thierry Maurel
	Multiple CRectTracker Class
	 
	Thierry Maurel
	 
	
	
Mutli Row Tab View [Property Sheet, Article, Visual C++] www.codeguru.com 05-Feb-2000 by H Praveen
	Mutli Row Tab View
	 
	H Praveen
	 
	Nesting Property Sheets
	
Creating statically linked, non-MFC DLLs [DLL, Article, Visual C++] www.codeguru.com 05-Feb-2000 by Tair Abdurman
	Creating statically linked, non-MFC DLLs
	 
	Tair Abdurman
	 
	
	
Digital Display Classes [Control, Article, Visual C++] www.codeguru.com 05-Feb-2000 by Michel Wassink
	Digital Display Classes
	 
	Michel Wassink
	 
	
	
Corel PhotoHouse-like Color Chooser [Dialog, Article, Visual C++] www.codeguru.com 04-Feb-2000 by Rajiv Ramachandran
	Corel PhotoHouse-like Color Chooser
	 
	Rajiv Ramachandran
	 
	
	
Tabbed Dialog Box Class [Dialog, Article, Visual C++] www.codeguru.com 04-Feb-2000 by Christophe Mestrallet
	Tabbed Dialog Box Class
	 
	Christophe Mestrallet
	 
	Dockable dialog that collapses/expands based on mouse over
	
Wrap-Around Draw Function for Printing Text [Printing, Article, Visual C++] www.codeguru.com 04-Feb-2000 by Santhosh Cheeran
	Wrap-Around Draw Function for Printing Text
	 
	Santhosh Cheeran
	 
	
	
Windows 2000 for the VB Developer [Windows 2000, Article, Visual Basic] www.earthweb.com 04-Feb-2000
	Windows 2000 for the VB Developer
	 
	Don Kiely -N/A
	 
	4-Feb-2000
	 
	4-Feb-2000
	 
	Each new release of an operating system, any operating system, brings 
with it new features that application developers can take advantage of.
	
A smart edit and linked slider control [Edit Control, Floating Point, Article, Visual C++] www.codeproject.com 03-Feb-2000 by Rick York
	A smart edit and linked slider control
	 
	Rick York
	 
	An edit control for entering text, numbers, hexadecimal or Floating 
Point values, and which can be linked to a slider control
	
CCeFileFind: File Finder class for Windows CE [CE Programming, Article, Visual C++] www.codeguru.com 03-Feb-2000 by Waseem Anis
	CCeFileFind: File Finder class for Windows CE
	 
	Waseem Anis
	 
	
	
Simple Point to Point Communication Using Named Pipes [Network, Update, Article, Visual C++] www.codeguru.com 03-Feb-2000 by Emil Gustafsson
	Simple Point to Point Communication Using Named Pipes
	 
	Emil Gustafsson
	 
	Updated demo project
	
Control Panel Applet using MFC [System, Article, Visual C++] www.codeguru.com 03-Feb-2000 by Ben Burnett
	Control Panel Applet using MFC
	 
	Ben Burnett
	 
	
	
Shared Memory Inter Process Communication (IPC) [System, Update, Article, Visual C++] www.codeguru.com 03-Feb-2000 by Peter Hendrix
	Shared Memory Inter Process Communication (IPC)
	 
	Peter Hendrix
	 
	
	
Using File Mappings to Access Windows NT Shared Memory [System, Article, Visual C++] www.codeguru.com 03-Feb-2000 by Hans Wijntjes
	Using File Mappings to Access Windows NT Shared Memory
	 
	Hans Wijntjes
	 
	
	
Mounting Network Drives [System, Article, Visual C++] www.codeguru.com 03-Feb-2000 by Rick Jones
	Mounting Network Drives
	 
	Rick Jones
	 
	
	
Multi-slider Control [Control, Article, Visual C++] www.codeguru.com 03-Feb-2000 by Terri Braxton
	Multi-slider Control
	 
	Terri Braxton
	 
	
	
Color Chooser Dialog [Dialog, Article, Visual C++] www.codeguru.com 03-Feb-2000 by Rajiv Ramachandran
	Color Chooser Dialog
	 
	Rajiv Ramachandran
	 
	Corel PhotoHouse-like Color Chooser Dialog
	
Paint Shop Pro 6.0 [Graphic, Image, Product, Owned By IPL, Owned By BDP, Development, CD-ROM] Purchased 25-Jan-2000, $79
	Color Chooser Dialog
	 
	Rajiv Ramachandran
	 
	Corel PhotoHouse-like Color Chooser Dialog
	
Perl Cookbook [Perl, Script, Book] Purchased 02-Feb-2000, $45.56

Microsoft SQL Server Black Book [Data Access, Database, SQL Server, Book] Purchased 02-Feb-2000, $55.99
50% off = 27.95
Working with cookies [Active Server Pages, ASP, Article, Visual C++] www.codeproject.com 02-Feb-2000 by Iulian Iuga
	Working with cookies
	 
	Iulian Iuga
	 
	An introduction to using cookies in your ASP scripts
	
Using Windows CE CommandBands in an MFC based Application [CE Programming, MFC, Article, Visual C++] www.codeproject.com 02-Feb-2000 by Bruce Hearder
	Using Windows CE CommandBands in an MFC based Application
	 
	Bruce Hearder
	 
	An introduction to using CommandBars in CE
	
Multimedia Streaming Synchronization Mechanisms Under DirectShow [DirectX, Article, Visual C++] www.codeproject.com 02-Feb-2000 by Stephane Rodriguez
	Multimedia Streaming Synchronization Mechanisms Under DirectShow
	 
	Stephane Rodriguez
	 
	An overview of three methods on how to perform multimedia streaming.
	
Using the AlphaBlend function [Font, GDI, GUI, Article, Visual C++] www.codeproject.com 02-Feb-2000 by Smile Seo
	Using the AlphaBlend function
	 
	Smile Seo
	 
	A sample application that uses the AlphaBlend function to produce a 
transparent splash screen
	
A Sizing/Moving widget [Control, Article, Visual C++] www.codeproject.com 02-Feb-2000 by Andrew JM Hall
	A Sizing/Moving widget
	 
	Andrew JM Hall
	 
	A class that provides the ability to move and size controls at run-time
	
Transparent group box [Control, Article, Visual C++] www.codeproject.com 02-Feb-2000 by Jens Schacherl
	Transparent group box
	 
	Jens Schacherl
	 
	A very simple group box replacement to enhance your user interface
	
A Single Page Printing Framework [Printing, Article, Visual C++] www.codeproject.com 02-Feb-2000 by Jacob Boo
	A Single Page Printing Framework
	 
	Jacob Boo
	 
	A Single Page Printing Framework
	
KeyCHW: A Compression Utility for MSDN (and other large help systems) [Tip, Compression, Article, Visual C++] www.codeproject.com 02-Feb-2000 by Ralph Walden
	KeyCHW: A Compression Utility for MSDN (and other large help systems)
	 
	Ralph Walden
	 
	A DOS utility for compressing CHW files.
	
Embedding an HTML Help window into a Dialog [WinHelp, HTML Help, Help, Dialog, Property Sheet, Article, Visual C++] www.codeproject.com 02-Feb-2000 by Ralph Walden
	Embedding an HTML Help window into a Dialog
	 
	Ralph Walden
	 
	Placing an embedded help window inside of a dialog, Property Sheet, or 
window.
	
Tech Workshop - Scripting Screen Savers [Article, Visual Basic] visualbasic.about.com 02-Feb-2000
	02-Feb-2000
	 
	02-Feb-2000
	  
	Tech Workshop - Scripting Screen Savers
	 
	Your Visual Basic Guide offers crafty code and practical procedures to 
help you script your own screen savers.
	
Drag and Drop CListCtrl-derived Class [Listview, Article, Visual C++] www.codeguru.com 02-Feb-2000 by Stuart Carter
	Drag and Drop CListCtrl-derived Class
	 
	Stuart Carter
	 
	Enhanced CListCtrl control that accepts drag and drop of files
	
JTDraw:An Example of Drawing [GDI, Article, Visual C++] www.codeguru.com 02-Feb-2000 by Jian Zhu, Tao Zhu
	JTDraw:An Example of Drawing
	 
	Jian Zhu and Tao Zhu
	 
	Great article for beginners on how to advanced drawing in Windows
	
Adding Context Help [Help, Update, Article, Visual C++] www.codeguru.com 02-Feb-2000 by Thomas Kokholm
	Adding Context Help
	 
	Thomas Kokholm
	 
	Updated article
	
Programmatically Invoking the OLEDB Data Link Config Dialog [Database, Article, Visual C++] www.codeguru.com 02-Feb-2000 by Tony Johnson, Chris Wilcock
	Programmatically Invoking the OLEDB Data Link Config Dialog
	 
	Tony Johnson and Chris Wilcock
	 
	
	
CFrameGrabber: Wrapper for AVICap Window [Multimedia, Article, Visual C++] www.codeguru.com 02-Feb-2000 by Vadim Gorbatenko
	CFrameGrabber: Wrapper for AVICap Window
	 
	Vadim Gorbatenko
	 
	
	
An Introduction to Interpolation [Interpolation, Visual C++, Article] C++ Users Journal 01-Feb-2000 by Kyle Loudon
	An Introduction to Interpolation
	 
	Kyle Loudon
	  
	There’s more to mathematical interpolation than just drawing lines 
between dots.
	
Tracking Memory Leaks under Windows CE [Memory Leak, Windows CE, Visual C++, Article] C++ Users Journal 01-Feb-2000 by Jean L Gareau
	Tracking Memory Leaks under Windows CE
	 
	Jean L Gareau
	  
	Visual C++ omits the darndest things in its support for Windows CE. Too 
bad memory tracking is one of those things.
	
How Non-Member Functions Improve Encapsulation [Non-Member Function, Encapsulation, Visual C++, Article] C++ Users Journal 01-Feb-2000 by Scott Meyers
	How Non-Member Functions Improve Encapsulation
	 
	Scott Meyers
	  
	When it comes to encapsulation, sometimes less is more.
	
Shim Classes [Class, Template, Visual C++, Article] C++ Users Journal 01-Feb-2000 by Douglas Reichard
	Shim Classes
	 
	Douglas Reichard
	  
	You don’t always have to rewrite ordinary classes as Templates to get 
the benefits of templatization.
	
Solving Combinatorial Problems with STL and Backtracking [STL, Visual C++, Article] C++ Users Journal 01-Feb-2000 by Roger Labbe
	Solving Combinatorial Problems with STL and Backtracking
	 
	Roger Labbe
	  
	The STL approach extends nicely to problems of all sorts, and helps 
make for more generic solutions.
	
Replacing Character Arrays with Strings, Part 2 [Character Array, String, Visual C++, Article] C++ Users Journal 01-Feb-2000 by Dan Saks
	Dan Saks
	 
	Replacing Character Arrays with Strings, Part 2
	 
	Higher-level constructs have their overheads, but they are generally 
worth the cost.
	
Common Design Mistakes, Part 2 [Design, Java, Article] C++ Users Journal 01-Feb-2000 by Pete Becker
	Pete Becker
	 
	Common Design Mistakes, Part 2
	 
	Pete offers more examples of how not to rush code to market, from the 
wonderful world of Java Standard Libraries.
	
Creating Tight, Database-Aware ISAPI DLLs [Database, ISAPI, DLL, Internet Server API, Internet Information Server, InterBase, Article, Delphi] Delphi Developer 01-Feb-2000, vol. 6, no. 2 by Jani Jarvinen
	Creating Tight, Database-Aware ISAPI DLLs
	 
	Jani Jarvinen
	 
	Internet Server API lets the developer extend Microsoft Internet 
Information Server and compatible Web servers with custom DLLs. These DLLs 
respond to the Web browser's request and return valid data. For example, this 
data can be created by querying databases. In this article, Jani Jarvinen shows 
you how to create an ISAPI DLL that accesses an InterBase database using its 
native API.
	
TThread: An Introduction to Multi-Threaded Development [TThread, Multi-Threaded, Threading, Article, Delphi] Delphi Developer 01-Feb-2000, vol. 6, no. 2 by David G Parsons
	TThread: An Introduction to Multi-Threaded Development
	 
	David G Parsons
	 
	David Parsons offers a primer on Threading that removes some of the 
mystery from a programming technique that's often viewed as cumbersome and 
difficult.
	
Delphi 5 IDE Wizardry: Creating Your Own Property Categories [IDE, Property, Property Categories, Object Inspector, Article, Delphi] Delphi Developer 01-Feb-2000, vol. 6, no. 2 by Bob Swart
	Delphi 5 IDE Wizardry: Creating Your Own Property Categories
	 
	Bob Swart
	 
	"Delphi IDE Wizardry" is a column that explores new features and 
enhancements found in and developed for the Delphi 5 IDE. Last month, Bob Swart 
began an exploration of Property Categories in Delphi 5. (See "Examining Object 
Inspector Property Categories" in the January 2000 issue.) This time, he 
continues focusing on the enhanced Object Inspector and Property Categories, 
showing how to add your own custom properties to your own custom property 
categories in Delphi 5's Object Inspector.
	
Exposing Events [Event, Breakpoint, Article, Delphi] Delphi Developer 01-Feb-2000, vol. 6, no. 2 by Keith Wood
	Exposing Events
	 
	Keith Wood
	 
	Tracing the flow of a program can be difficult at times. Delphi comes 
to the rescue with Breakpoints and stepping through code. But as Keith Wood 
explains, for even more information, the event log is the place to look.
	
Mediator Pattern [Mediator Pattern, Object, Process Control System, Article, Delphi] Delphi Informant 01-Feb-2000, vol. 6, no. 2 by Xavier Pacheco
	Mediator Pattern
	 
	Xavier Pacheco
	 
	The Mediator pattern simplifies complex communication between Objects, 
while maintaining loose coupling, making it ideal for use in a distributed 
Process Control System, as Mr Pacheco explains.
	
CORBA: Part I [CORBA, Article, Delphi] Delphi Informant 01-Feb-2000, vol. 6, no. 2 by Dennis P Butler
	CORBA: Part I
	 
	Dennis P Butler
	 
	Mr Butler begins a two-part exploration of CORBA and CORBA development 
with Delphi with an introduction to the techonolgy, and a step-by-step 
description of how to build a CORBA server.
	
Modifying VCL Behavior [VCL, Component, Message, Article, Delphi] Delphi Informant 01-Feb-2000, vol. 6, no. 2 by Jeremy Merrill
	Modifying VCL Behavior
	 
	Jeremy Merrill
	 
	Mr Merrill shows us how to dynamically change the behavior of a native 
Delphi visual component without creating a new class. The secret is to 
intercept Windows messages sent to the control.
	
Visual Form Inheritance: Part I [Visual Form Inheritance, UI, Inheritance, Article, Delphi] Delphi Informant 01-Feb-2000, vol. 6, no. 2 by Rick Spence
	Visual Form Inheritance: Part I
	 
	Rick Spence
	
	 Decreased development time, fewer errors, a more-consistent UI. The 
benefits of VFI sound terrific, but Delphi's implementation of the technology 
is woefully underdocumented. Enter Mr Spence.
	
Time Travels [Time-zone, Daylight Savings Time, Article, Delphi] Delphi Informant 01-Feb-2000, vol. 6, no. 2 by T Wesley Erickson
	Time Travels
	 
	T Wesley Erickson
	 
	Mr Erickson asks pesky questions, e.g. "What will happen when your app 
is deployed in a different Time Zone?" and "Have you considered Daylight 
Savings Time?" then - thankfully - answers them.
	
Generating XML [XML, Scripting, Database, Article, Delphi] Delphi Informant 01-Feb-2000, vol. 6, no. 2 by Keith Wood
	Generating XML
	 
	Keith Wood
	 
	He's already introduced us to XML Scripting. Now Mr Wood demonstrates 
how to generate XML documents from a Database, then send the documents over the 
internet.
	
Scriptable Plug-Ins [Plug-In, Automation, Microsoft Script Control, Scripting, Article, Delphi] Delphi Informant 01-Feb-2000, vol. 6, no. 2 by Andre van der Merwe
	Scriptable Plug-Ins
	 
	Andre van der Merwe
	 
	Implementing plug-ins with OLE Automation and the Microsoft Script 
Control, Mr van der Merwe offers a novel way of providing Scripting 
capabilities to users of your applications.
	
Dynamic Arrays [Array, Dynamic Array, Article, Delphi] Delphi Informant 01-Feb-2000, vol. 6, no. 2 by Aleksandr Gofen
	Dynamic Arrays
	 
	Aleksandr Gofen
	 
	From ALGOL-60 to Object Pascal, from open arrays to Variant arrays, Mr 
Gofen relates the convoluted history of the dynamic array, while demonstrating 
powerful, useful techniques for today.
	
Handle Logons in Windows NT And Windows 2000 with Your Own Logon Session Broker [Logon, Windows NT, Windows 2000, Session, Windows NT, Article] Microsoft Systems Journal 01-Feb-2000, vol. 15, no. 2 by Keith Brown
	Handle Logons in Windows NT And Windows 2000 with Your Own Logon 
Session Broker
	 
	You can create a "logon session broker" to launch processes into 
arbitrary window stations and desktops with any user’s logon credentials. We 
bring together our cmdasuser utility and the concepts you need to build your 
own logon session broker.
	 
	Keith Brown
	
Construct Your E-commerce Business Tier the Easy Way With XML, ASP, and Scripting [XML, ASP, Scripting, COM, N-tier, E-commerce, Multitier, Visual C++, Article] Microsoft Systems Journal 01-Feb-2000, vol. 15, no. 2 by Dave Cohen
	Construct Your E-commerce Business Tier the Easy Way With XML, ASP, and 
Scripting
	 
	Forget COM for the middle layer of your N-tier E-commerce app. Instead, 
build your business layer with ASP, XML, and scripting. We’ll show you how to 
use these technologies to develop a powerful, Multitier site that interacts 
with third-party vendors.
	 
	Dave Cohen
	
It’s Simple to Build PerfMon Support into Your Apps With A Little Help from COM [PerfMon, COM, Windows NT, Visual C++, Article] Microsoft Systems Journal 01-Feb-2000, vol. 15, no. 2 by Ken Knudsen
	It’s Simple to Build PerfMon Support into Your Apps With A Little Help 
from COM
	 
	PerfMon in Windows NT is not just for monitoring system resources. 
Using a COM server and a single DLL, you can painlessly hook up multiple apps 
to PerfMon and access a whole new level of resource management and debugging.
	 
	Ken Knudsen
	
New GetLastInputInfo() Function in Windows 2000 [GetLastInputInfo(), Windows 2000, Event, Visual C++, Article] Microsoft Systems Journal 01-Feb-2000, vol. 15, no. 2 by Paul DiLascia
	New GetLastInputInfo() Function in Windows 2000
	 
	Paul DiLascia discusses a new function in Windows 2000, 
GetLastInputInfo, which holds information about that last events the system 
handled. With it you can determine how long the system has been idle, and what 
the last events were.
	 
	Paul DiLascia
	
COM Components with Scripting Languages [COM Component, Scripting, Windows Script Component, WSC, COM, Visual C++, Article] Microsoft Systems Journal 01-Feb-2000, vol. 15, no. 2 by Jeffrey Richter
	COM Components with Scripting Languages
	 
	It turns out you can write COM components with scripting languages. 
This month George Shephers shows you how the Windows Script Components (WSC) 
let you package scripts for use as COM components.
	 
	Jeffrey Richter
	
Driver Verifier, a kernel-mode addition introduced in Windows 2000 [Driver Verifier, Windows 2000, Testing, Debugging, Stressing, Kernel Mode Driver, Windows NT, Article] Microsoft Systems Journal 01-Feb-2000, vol. 15, no. 2 by John Robbins
	Driver Verifier, a kernel-mode addition introduced in Windows 2000
	 
	This month Jim Finnegan looks at the Driver Verifier, a kernel-mode 
addition introduced in Windows 2000 that's aimed directly at developers, 
providing operating-system-level support for Testing, Debugging, and Stressing 
Kernel-Mode Drivers.
	 
	John Robbins
	
Determine which DLLs are good candidates for DelayLoad [DLL, Delay-load DLL, Visual C++, Article] Microsoft Systems Journal 01-Feb-2000, vol. 15, no. 2 by Don Box
	Determine which DLLs are good candidates for DelayLoad
	 
	Matt Pietrek introduces DelayLoadProfile, which helps you determine 
which DLLs are good candidates for DelayLoad by reporting how often a DLL is 
called, by which applications, and other pertinent data.
	 
	Don Box
	
Leverage COM Through the Registry [COM, Registry, Article, Visual Basic] Visual Basic Programmer's Journal 01-Feb-2000, vol. 10, no. 2 by Francesco Balena
	Leverage COM Through the Registry
	 
	Francesco Balena
	 
	Find out how COM uses the Registry, and learn code routines to diagnose 
application malfunctions.
	
Implement Custom Code in DTS [DTS, Data Transformation Services, Article, Visual Basic] Visual Basic Programmer's Journal 01-Feb-2000, vol. 10, no. 2 by Mary V Hooke
	Implement Custom Code in DTS
	 
	Mary V Hooke
	 
	Data transformations are only the beginning of what Data Transformation 
Services (DTS) has to offer. Learn how to integrate custom code in DTS to 
satisfy your business needs.
	
Call Function Pointers [Function Pointer, vtable, COM, Interface, Article, Visual Basic] Visual Basic Programmer's Journal 01-Feb-2000, vol. 10, no. 2 by Matthew Curland
	Call Function Pointers
	 
	Matthew Curland
	 
	Function pointers open the door to powerful programming possibilities. 
Learn how to turn a vtable-bound call to a COM Interface into a call to a 
function pointer.
	
Spice Up Your Menus [Menu, API Programming, Article, Visual Basic] Visual Basic Programmer's Journal 01-Feb-2000, vol. 10, no. 2 by Kathleen Joeris
	Spice Up Your Menus
	 
	Kathleen Joeris
	 
	Few applications function without menus; this article explores some 
tricks for working with menus, along with how to use the Windows API with menus.
	
Create a VBA Template Suite [VBA, Article, Visual Basic] Visual Basic Programmer's Journal 01-Feb-2000, vol. 10, no. 2 by Chris Kunicki, Charles Maxson
	Create a VBA Template Suite
	 
	Chris Kunicki
	 and 
	Charles Maxson
	 
	You can use VBA to automate your users' tasks. Here's how to create an 
automated template suite with VBA.
	
Keep Your Processes in Line [Process, Win32 API, Article, Visual Basic] Visual Basic Programmer's Journal 01-Feb-2000, vol. 10, no. 2 by John Carnell
	Keep Your Processes in Line
	 
	John Carnell
	 
	This article shows you how to use VB and the Win32 API to integrate 
applications, how to control apps and processes, and how to terminate apps in 
tricky situations.
	
Application Menus Made Easy [Menu, Article, Visual Basic] Visual Basic Programmer's Journal 01-Feb-2000, vol. 10, no. 2 by Stan Schultes
	Application Menus Made Easy
	 
	Well-thought-out menus can make your app stand out from the crowd. The 
author shows you how to implement them.
	 
	Stan Schultes
	
Make Your Boolean Logic Error-Free [Article, Visual Basic] Visual Basic Programmer's Journal 01-Feb-2000, vol. 10, no. 2 by Stephen Teilhet
	Make Your Boolean Logic Error-Free
	 
	Follow this step-by-step process to simplify your complex Boolean logic 
while producing error-free code.
	 
	Stephen Teilhet
	
Solve the Dependent List Problem [XML, Article, Visual Basic] Visual Basic Programmer's Journal 01-Feb-2000, vol. 10, no. 2 by A Russell Jones
	Solve the Dependent List Problem
	 
	Get around the dependent list problem by using XML data islands on the 
client side.
	 
	A Russell Jones
	
Resize Rules [Article, Visual Basic] Visual Basic Programmer's Journal 01-Feb-2000, vol. 10, no. 2 by Alain Lavoie
	Resize Rules
	 
	Cut your resize code in half and standardize implementation with a 
Resizer class.
	 
	Alain Lavoie
	
Passwords users put into your apps aren't as secure as you might think [Password, Security, Article, Visual Basic] Visual Basic Programmer's Journal 01-Feb-2000, vol. 10, no. 2 by Karl E Peterson
	Passwords users put into your apps aren't as secure as you might think
	 
	The passwords users put into your apps aren't as secure as you might 
think.
	 
	Karl E Peterson
	
Extend Scrollbar Range With Class [Scrollbar, Article, Visual Basic] Visual Basic Programmer's Journal 01-Feb-2000, vol. 10, no. 2 by Karl E Peterson
	Extend Scrollbar Range With Class
	 
	How to extend the scrollbar range
	 
	Karl E Peterson
	
NT System Resources Limits [System Resource, Windows NT, Article, Visual Basic] Visual Basic Programmer's Journal 01-Feb-2000, vol. 10, no. 2 by Karl E Peterson
	NT System Resources Limits
	 
	NT system resources limits.
	 
	Karl E Peterson
	
Secure Your Data [SQL Server, Security, Article, Visual Basic] Visual Basic Programmer's Journal 01-Feb-2000, vol. 10, no. 2 by Joseph Lax
	Secure Your Data
	 
	Take advantage of some of SQL Server 7's new features to secure data 
transmitted over the Web.
	 
	Joseph Lax
	
Add Controls Dynamically [Control, ActiveX Control, Class, Article, Visual Basic] Visual Basic Programmer's Journal 01-Feb-2000, vol. 10, no. 2 by Francesco Balena
	Add Controls Dynamically
	 
	Add new controls to a form at run time dynamically, and intercept 
events from such controls in the class itself. Learn how to create useful and 
highly reusable class modules that compete with full-blown ActiveX Controls.
	 
	Francesco Balena
	
Avoid Delimiter Traps [Delimiter, ADO, XML, Article, Visual Basic] Visual Basic Programmer's Journal 01-Feb-2000, vol. 10, no. 2 by Jeffrey P McManus
	Avoid Delimiter Traps
	 
	Learn how to use ADO and XML to avoid the delimiter problems caused 
when you include names with apostrophes in your database code.
	 
	Jeffrey P McManus
	
Pool Database Connections [Database Connection, MTS, Article, Visual Basic] Visual Basic Programmer's Journal 01-Feb-2000, vol. 10, no. 2 by George Copeland
	Pool Database Connections
	 
	MTS lets you implement database connection pooling for your Windows 
app, helping you conserve middle-tier memory and processing power.
	 
	George Copeland
	
Monitoring NT Debug Services [Monitoring, Service, Debugging, Kernel Mode Driver, Article, Visual C++] Windows Developer's Journal 01-Feb-2000, vol. 11, no. 2 by Jose Flores
	Monitoring NT Debug Services
	 
	Jose Flores
	  
	The normal Win32 Debugging API lets your program detect debugging 
notifications for a given process. However, at the kernel level, there's a lot 
more notification information available if you could just get to it, including 
the debugging notifications for all processes in the system. This article uses 
interrupt hooking and a Kernel-Mode Driver to provide user-mode access to 
kernel-level debugging information.
	
Sending TCP/IP Control Messages with ICMP.DLL [TCP/IP, ICMP.DLL, Protocol, Article, Visual C++] Windows Developer's Journal 01-Feb-2000, vol. 11, no. 2 by Arnab Bhaduri
	Sending TCP/IP Control Messages with ICMP.DLL
	 
	Arnab Bhaduri
	  
	ICMP is one of the lower-level Protocols in the TCP/IP protocol suite 
that you just can't get to from WinSock. This article explains how to use 
icmp.dll to access ICMP, and demonstrates with code that implements a complete 
traceroute utility.
	
A C++ Class for Logging [C++, Class, Logging, Article, Visual C++] Windows Developer's Journal 01-Feb-2000, vol. 11, no. 2 by Joey Rogers
	A C++ Class for Logging
	 
	Joey Rogers
	  
	Everybody does some kind of logging, even if it's just the lowly 
printf() call. Here's a reusable class that tries to capture all the most 
common logging features you'll ever need, including control over the output 
destination (file or debug window), logging levels, automatic indentation, 
timestamps, and more.
	
Understanding NT: User interface code needed to handle various aspects such as logging on, name/password collection, shutdown, etc. [GINA, Windows NT, Article, Visual C++] Windows Developer's Journal 01-Feb-2000, vol. 11, no. 2 by Paula Tomlinson
	Understanding NT: User interface code needed to handle various aspects 
such as logging on, name/password collection, shutdown, etc.
	 
	Paula Tomlinson
	  
	A GINA DLL lets you take over the NT logon process, participating in 
authenticating users who log on. This column completes the GINA started last 
month, discussing the user interface code needed to handle various aspects such 
as logging on, name/password collection, shutdown, etc.
	
Resource Leaks with Enhanced Metafiles [Resource Leak, Metafile, PlayEnhMetaFile(), Article, Visual C++] Windows Developer's Journal 01-Feb-2000, vol. 11, no. 2 by Chris Branch
	Resource Leaks with Enhanced Metafiles
	 
	Chris Branch
	 
	There's a resource leak in PlayEnhMetaFile(); this tip describes the 
problem and your options for dealing with it.
	
The PathCompactPath() Bug [PathCompactPath(), Shell, Path, Article, Visual C++] Windows Developer's Journal 01-Feb-2000, vol. 11, no. 2 by Petter Hesselberg
	The PathCompactPath() Bug
	 
	Petter Hesselberg
	 
	PathCompactPath() is a Shell function you can use to replace part of a 
string containing a filename with "...", so it will fit in a menu better, for 
example. Incredibly, this function will actually scribble outside the buffer 
you give it under certain conditions!
	
Follow-up to VB Design Mode Detection [Design Mode, Visual Basic, Article, Visual C++] Windows Developer's Journal 01-Feb-2000, vol. 11, no. 2 by Juan Garcia
	Follow-up to VB Design Mode Detection
	 
	Juan Garcia
	 
	More discussion of the problem of detecting whether you're currently in 
design mode or not.
	
Loading String Resources with CString [String Resource, CString Class, Resource, Article, Visual C++] Windows Developer's Journal 01-Feb-2000, vol. 11, no. 2 by Eric Haddan
	Loading String Resources with CString
	 
	Eric Haddan
	 
	A little trick for creating a CString that contains a String Resource 
in just one line of code.
	
Enhancing Support for Multiple Toolbars [Toolbar, Article, Visual C++] Windows Developer's Journal 01-Feb-2000, vol. 11, no. 2 by Sami Vaaraniemi
	Enhancing Support for Multiple Toolbars
	 
	Sami Vaaraniemi
	 
	A refinement of Michael Moser's tip for letting users manipulate 
multiple toolbars.
	
A Reusable Class for Setting the Default Printer [Class, Printer, Registry, Article, Visual C++] Windows Developer's Journal 01-Feb-2000, vol. 11, no. 2 by Zuoliu Ding
	A Reusable Class for Setting the Default Printer
	 
	Zuoliu Ding
	 
	A class that handles all the Registry fiddling required to set the 
default printer under both Win16 and Win32.
	
Tiny subset of HTML support can make laying out static Dialog text a lot more convenient [HTML, Dialog, Article, Visual C++] Windows Developer's Journal 01-Feb-2000, vol. 11, no. 2 by Petter Hesselberg
	Tiny subset of HTML support can make laying out static Dialog text a 
lot more convenient
	 
	Petter Hesselberg
	  
	User Interface Programming is a new column devoted to user interface 
issues that Windows programmers face. This first installment shows that a tiny 
subset of HTML support can make laying out static dialog text a lot more 
convenient.
	
Publish COM Interfaces Gracefully (using: Visual C++ 6.0) [COM, Interface, Article, Visual C++] Visual C++ Developers Journal 01-Feb-2000, vol. 3, no. 1 by Michèle Leroux Bustamante
	Publish COM Interfaces Gracefully
	 
	Michèle Leroux Bustamante
	 
	Ever regretted publishing a COM interface? Use these eight tips to 
develop COM interfaces that perform well and look good.
	
Use Direct3D to Manipulate Objects [Direct3D, Object, Article, Visual C++] Visual C++ Developers Journal 01-Feb-2000, vol. 3, no. 1 by Bill Wagner
	Use Direct3D to Manipulate Objects
	 
	Bill Wagner
	 
	You know how to use Direct3D to create simple shapes. Now it's time to 
learn to move and orient them, using static and dynamic transformations.
	
Effective Memory Management [Memory Management, C++, Article, Visual C++] Visual C++ Developers Journal 01-Feb-2000, vol. 3, no. 1 by Herb Sutter
	Effective Memory Management
	 
	Herb Sutter
	 
	How well do you know your memory? Where does it go? How can you use it 
more safely? Let an authority on C++ memory management show you how.
	
5 Bugs to Avoid in Release Builds [Bug, Debugging, Article, Visual C++] Visual C++ Developers Journal 01-Feb-2000, vol. 3, no. 1 by John W Stout
	5 Bugs to Avoid in Release Builds
	 
	John W Stout
	 
	Your Debug build looked fine, but the app's release build is riddled 
with bugs. Here's how to find - and fix - these frustrating problems.
	
A Hands-On Look at COM+ Events [COM+, Event, Event, Subscriber, Publisher, Windows NT, Article, Visual C++] Visual C++ Developers Journal 01-Feb-2000, vol. 3, no. 1 by Jeff Prosise
	A Hands-On Look at COM+ Events
	 
	Jeff Prosise
	 
	Dive into Windows 2000's flexible publish-subscribe model of 
disseminating information. You'll learn how to build a COM+ Event Class, 
Subscriber, And Publisher.
	
Optimize COM Object Performance [COM, Object, Performance, Article, Visual C++] Visual C++ Developers Journal 01-Feb-2000, vol. 3, no. 1 by Jim Beveridge
	Optimize COM Object Performance
	 
	Jim Beveridge
	 
	Learn how to optimize your COM objects' network performance - without 
sacrificing understandability or ease of use.
	
Create and Customize Transactions [Transaction, Article, Visual C++] Visual C++ Developers Journal 01-Feb-2000, vol. 3, no. 1 by Davide Marcato
	Create and Customize Transactions
	 
	Davide Marcato
	 
	Our VC++ Pro answers questions ranging from timeouts and transactions 
to pointers and public methods.
	
Make Your Server Use a Thread Pool [Server, Thread, STA, Thread Affinity, Article, Visual C++] Visual C++ Developers Journal 01-Feb-2000, vol. 3, no. 1 by Richard Grimes
	Make Your Server Use a Thread Pool
	 
	Richard Grimes
	 
	With STA thread pooling, you can write an EXE server that has 
components with Thread Affinity, but isn't a single-threaded server.
	
Report Easily With COM Exceptions [COM, Exception, HRESULT, Error, Article, Visual C++] Visual C++ Developers Journal 01-Feb-2000, vol. 3, no. 1 by George Shepherd
	Report Easily With COM Exceptions
	 
	George Shepherd
	 
	HRESULTs aren't the only way to provide the client program with 
information. Throw and catch COM exceptions to retrieve greater Error details.
	
Automatic Tab Bar for MDI Frameworks [Document/View, MDI, Article, Visual C++] www.codeproject.com 01-Feb-2000 by Paul Selormey
	Automatic Tab Bar for MDI Frameworks
	 
	Paul Selormey
	 
	A dockable bar containing a tabbed list of open windows
	
Fully owner drawn tab control [Tab Control, Article, Visual C++] www.codeproject.com 01-Feb-2000 by Oleg Lobach
	Fully owner drawn tab control
	 
	Oleg Lobach
	 
	A better looking tab control
	
Copy Path Shell Extension [Shell Programming, Article, Visual C++] www.codeguru.com 01-Feb-2000 by Nick Carruthers
	Copy Path Shell Extension
	 
	Nick Carruthers
	 
	
	
WM_COMMAND user message macro [Macro, Update, Article, Visual C++] www.codeguru.com 01-Feb-2000 by John Christian Lonningdal
	WM_COMMAND user message macro
	 
	John Christian Lonningdal
	 
	
	
Strip'em Add-in for Visual Studio 6.0 [Macro, Article, Visual C++] www.codeguru.com 01-Feb-2000 by Itay Szekely
	Strip'em Add-in for Visual Studio 6.0
	 
	Itay Szekely
	 
	Useful utility for working in mixed Unix/Windows environment
	
Fully Owner Drawn Tab Control [Control, Article, Visual C++] www.codeguru.com 01-Feb-2000 by Oleg Lobach
	Fully Owner Drawn Tab Control
	 
	Oleg Lobach
	 
	Great article on creating advanced tabs for your application
	
Compass Control [Control, Article, Visual C++] www.codeguru.com 01-Feb-2000 by Monte Variakojis
	Compass Control
	 
	Monte Variakojis
	 
	Great new control for writing GPS and Navigation systems!
	
Log Book Control [Control, Article, Visual C++] www.codeguru.com 01-Feb-2000 by Mike Marquet
	Log Book Control
	 
	Mike Marquet
	 
	Very cool control for creating a visual logbook application
	
Transparent Group Box Control [Control, Article, Visual C++] www.codeguru.com 01-Feb-2000 by Jens Schacherl
	Transparent Group Box Control
	 
	Jens Schacherl
	 
	
	
Cookies in an ISAPI Extension DLL [ISAPI, Article, Visual C++] www.codeguru.com 01-Feb-2000 by Klynt Klimek
	Cookies in an ISAPI Extension DLL
	 
	Klynt Klimek
	 
	
	
TipMaker Tool [Tool, Article, Visual C++] www.codeguru.com 01-Feb-2000 by Peter Boulton
	TipMaker Tool
	 
	Peter Boulton
	 
	Tool that enables you to automatically create *all* your application's 
tooltips at once!
	
Insert your Logo between TitleBar and MenuBar (ala Real-Player) [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 01-Feb-2000 by Smile Seo
	Insert your Logo between TitleBar and MenuBar (ala Real-Player)
	 
	Smile Seo
	 
	
	
A Visual Studio-like Listbox class [Listbox, Visual Studio, Article, Visual C++] www.codeguru.com 01-Feb-2000 by Stefano Passiglia
	A Visual Studio-like Listbox class
	 
	Stefano Passiglia
	 
	Includes built-in buttons for Add, Remove, Move Up and Move Down
	
Componentize Notes Functionality [Component, Article, Lotus Notes] Notes Advisor 01-Feb-2000 by Terrance A Crow
Enterprise Integration - Lotus Notes & Domino Advisor - February 2000 
	Componentize Notes Functionality
	 
	Terrance A Crow
	
Integrate Visual Basic into Notes Applications [Visual Basic, Article, Lotus Notes] Notes Advisor 01-Feb-2000 by Michael Mohen
Enterprise Integration - Lotus Notes & Domino Advisor - February 2000 
	Integrate Visual Basic into Notes Applications
	 
	Michael Mohen
	
Custom Visual Basic and OLE Integration with Notes [Visual Basic, OLE, Integration, Article, Lotus Notes] Notes Advisor 01-Feb-2000 by Gerard Ulto
MESSAGING - Lotus Notes & Domino Advisor - February 2000 
	Custom Visual Basic and OLE Integration with Notes
	 
	Gerard Ulto
	
Easier Application Deployment [Article, Lotus Notes] Notes Advisor 01-Feb-2000 by Shahir A Daya, Marek Nowicki
APPLICATION DEPLOYMENT - Lotus Notes & Domino Advisor - February 2000 
	Easier Application Deployment
	 
	Shahir A Daya and Marek Nowicki
	
Create Name Picklists for Web Applications [Picklist, Web, Article, Lotus Notes] Notes Advisor 01-Feb-2000 by Steve Parker
Web Development - Lotus Notes & Domino Advisor - February 2000 
	Create Name Picklists for Web Applications
	 
	Steve Parker
	
Customize the Database View Search [Search, Article, Lotus Notes] Notes Advisor 01-Feb-2000 by Scot Haberman
Knowledge Management - Lotus Notes & Domino Advisor - February 2000 
	Customize the Database View Search
	 
	Scot Haberman
	
Tap the Power of Notes' Import and Export Capabilities [Import, Export, Article, Lotus Notes] Notes Advisor 01-Feb-2000 by Laurie Kimmel
Data Integration - Lotus Notes & Domino Advisor - February 2000 
	Tap the Power of Notes' Import and Export Capabilities
	 
	Laurie Kimmel
	
Drawing Fast Polygons / Graphics with VB5/6 [Graphic, Article, Visual Basic] www.earthweb.com 01-Feb-2000
	Drawing Fast Polygons / Graphics with VB5/6
	 
	-N/A
	 
	1-Feb-2000
	 
	1-Feb-2000
	 
	VB code to display fast Graphics drawings
	
Detecting Mouse-Clicks Globally [Mouse, Article, Visual Basic] www.earthweb.com 01-Feb-2000
	Detecting Mouse-Clicks Globally
	 
	-N/A
	 
	1-Feb-2000
	 
	1-Feb-2000
	 
	VB code to detect mouse clicks anywhere on the desktop or window
	
Auto completing Dates [Article, Delphi] delphi.about.com 01-Feb-2000
	01-Feb-2000
	 
	01-Feb-2000
	 
	Auto completing Dates
	 
	Date manipulation: improve your code, let them type faster.
	
Simple and Easy Undo/Redo [Document/View, Article, Visual C++] www.codeproject.com 31-Jan-2000 by Keith Rule
	Simple and Easy Undo/Redo
	 
	Keith Rule
	 
	Easily add Undo/Redo to your CDocument/CView Based Applciation
	
Crystal Edit: syntax Coloring text editor [Edit Control, Color, Article, Visual C++] www.codeproject.com 31-Jan-2000 by Andrei Stcherbatchenko
	Crystal Edit: syntax Coloring text editor
	 
	Andrei Stcherbatchenko
	 
	A set of classes that provide an expandable framework for the syntax 
coloring text editor.
	
Masked Edit Control [Edit Control, Validation, Article, Visual C++] www.codeproject.com 31-Jan-2000 by Dundas Software
	Masked Edit Control
	 
	Dundas Software
	 
	A masked edit control that provides restricted, formatted and cued data 
input and Validation
	
Simple Point to Point Communication Using Named Pipes [Network, Update, Article, Visual C++] www.codeguru.com 31-Jan-2000 by Emil Gustafsson
	Simple Point to Point Communication Using Named Pipes
	 
	Emil Gustafsson
	 
	Updated article
	
Calling scripts within scripts [Active Server Pages, Component, ASP, Article, Visual C++] www.codeproject.com 30-Jan-2000 by Uwe Keim
	Calling scripts within scripts
	 
	Uwe Keim
	 
	A Component for calling a URL from an ASP script and reading back the 
output
	
A multi document tabbed interface [Document/View, MDI, Article, Visual C++] www.codeproject.com 30-Jan-2000 by Dundas Software
	A multi document tabbed interface
	 
	Dundas Software
	 
	A variation on the MDI that indicates the open child windows in a tab 
control.
	
Loops [Article, Visual C++] cplus.about.com 30-Jan-2000
	30-Jan-2000
	 
	30-Jan-2000
	  
	Loops
	 
	Explore While and For loops in C and C++
	
Functions for Setting and Retrieving Values from Variant Safe Arrays [C++, MFC, Update, Article, Visual C++] www.codeguru.com 30-Jan-2000 by Nanda Kishore
	Functions for Setting and Retrieving Values from Variant Safe Arrays
	 
	Nanda Kishore
	 
	
	
Serializable Base Object [C++, MFC, Article, Visual C++] www.codeguru.com 30-Jan-2000 by Betao
	Serializable Base Object
	 
	Betao
	 
	Generic base class for handling the serialization duties of all derived 
classes
	
How to Create a Custom View to Wrap Your Own Control [Document/View, Article, Visual C++] www.codeguru.com 30-Jan-2000 by Charles Calvert
	How to Create a Custom View to Wrap Your Own Control
	 
	Charles Calvert
	 
	
	
Print Preview Without MFC [Printing, Article, Visual C++] www.codeguru.com 30-Jan-2000 by Danang Suharno
	Print Preview Without MFC
	 
	Danang Suharno
	 
	
	
MFC Solution to Explanding the CFileDialog Common Dialog [Dialog, Update, Article, Visual C++] www.codeguru.com 30-Jan-2000 by Milan Markovic
	MFC Solution to Explanding the CFileDialog Common Dialog
	 
	Milan Markovic
	 
	Updated demo project
	
A Pinnable Dialog Base Class [Dialog, Article, Visual C++] www.codeguru.com 30-Jan-2000 by David Hill
	A Pinnable Dialog Base Class
	 
	David Hill
	 
	
	
Framework for Creating Custom Window Captions [UI, Article, Visual C++] www.codeguru.com 30-Jan-2000 by Dave Lorde
	Framework for Creating Custom Window Captions
	 
	Dave Lorde
	 
	Extremely cool framework for use with complex apps with lots of views
	
Simple Point to Point Communication Using Named Pipes [Network, Article, Visual C++] www.codeguru.com 30-Jan-2000 by Emil Gustafsson
	Simple Point to Point Communication Using Named Pipes
	 
	Emil Gustafsson
	 
	
	
Open Source Chat Program [Network, Article, Visual C++] www.codeguru.com 30-Jan-2000 by Christian Carrillo
	Open Source Chat Program
	 
	Christian Carrillo
	 
	Complete, realtime chat application (source code included!)
	
Open Source Instant Messenger [Network, Article, Visual C++] www.codeguru.com 30-Jan-2000 by Christian Carrillo
	Open Source Instant Messenger
	 
	Christian Carrillo
	 
	Very nice instant messaging application (source code included!)
	
Open Source File Sharing Environment [Network, Article, Visual C++] www.codeguru.com 30-Jan-2000 by Christian Carrillo
	Open Source File Sharing Environment
	 
	Christian Carrillo
	 
	Very large, sophisticated app for sharing files across the Internet
	
EnTeHandle [System, Update, Article, Visual C++] www.codeguru.com 30-Jan-2000 by Fred Forester
	EnTeHandle
	 
	Fred Forester
	 
	Added link to Microsoft's ntexapi.h file
	
Transparent Splash Window [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 30-Jan-2000 by Smile Seo
	Transparent Splash Window
	 
	Smile Seo
	 
	
	
Owner Drawn Spin Control [Control, Article, Visual C++] www.codeguru.com 30-Jan-2000 by Oleg Lobach
	Owner Drawn Spin Control
	 
	Oleg Lobach
	 
	Owner drawn spin button control with autodisabling arrow buttons
	
Programmatically Create Dialup Connection Objects [Internet, Article, Visual C++] www.codeguru.com 30-Jan-2000 by Jordi Mas
	Programmatically Create Dialup Connection Objects
	 
	Jordi Mas
	 
	Enables you to create Dialup connections in your Dialup Connections 
folder
	
CPrintListCtrl Class [Listview, Update, Article, Visual C++] www.codeguru.com 30-Jan-2000 by Mike Marquet
	CPrintListCtrl Class
	 
	Mike Marquet
	 
	Updated source and demo files
	
LibDump Tool [Debugging, Update, Article, Visual C++] www.codeguru.com 30-Jan-2000 by George Poulose
	LibDump Tool
	 
	George Poulose
	 
	Very nice Utility for examining the contents of library (.LIB) files
	
Stored Procedure Class Wizard [Tool, Article, Visual C++] www.codeguru.com 30-Jan-2000 by George Poulose
	Stored Procedure Class Wizard
	 
	George Poulose
	 
	
	
Interactive SQL Tool (using MFC) [Database, Article, Visual C++] www.codeguru.com 30-Jan-2000 by George Poulose
	Interactive SQL Tool (using MFC)
	 
	George Poulose
	 
	Updated source and demo files
	
Interactive SQL Tool (using ADO) [Database, Article, Visual C++] www.codeguru.com 30-Jan-2000 by George Poulose
	Interactive SQL Tool (using ADO)
	 
	George Poulose
	 
	Updated source and demo files
	
Framework for Creating Custom Window Captions [Article, Visual C++] www.earthweb.com 30-Jan-2000 by Lorde Dave
	Framework for Creating Custom Window Captions
	 
	Lorde Dave
	 
	30-Jan-2000
	 
	30-Jan-2000
	 
	This article presents some classes that make customising window 
captions really quick and easy.
	
Finger Utility [Network, Article, Visual C++] www.codeguru.com 29-Jan-2000 by Alexei Veremenko
	Finger Utility
	 
	Alexei Veremenko
	 
	
	
Ping Component and Client [Network, Article, Visual C++] www.codeguru.com 29-Jan-2000 by Alexei Veremenko
	Ping Component and Client
	 
	Alexei Veremenko
	 
	
	
Accessing Hidden VB Interfaces [ATL, COM, Article, Visual C++] www.codeguru.com 29-Jan-2000 by Adiel Ben Shalom
	Accessing Hidden VB Interfaces
	 
	Adiel Ben Shalom
	 
	
	
AwareNet SDK (using: Visual C++ 6.0) [Internet, Network, Article, Visual C++] www.codeproject.com 28-Jan-2000
	AwareNet SDK
	 
	Tenebril Incorporated
	 
	A third party library that adds person-to-person connectivity to your 
applications
	
FileFury file sharing program [Internet, Network, Article, Visual C++] www.codeproject.com 28-Jan-2000 by Tenebril Incorporated
	FileFury file sharing program
	 
	Tenebril Incorporated
	 
	A file sharing environment using the AwareNet library
	
FriendlyTalk chat program [Internet, Network, Article, Visual C++] www.codeproject.com 28-Jan-2000 by Tenebril Incorporated
	FriendlyTalk chat program
	 
	Tenebril Incorporated
	 
	A chat program using the AwareNet library
	
PeopleWatcher instant messanger [Internet, Network, Article, Visual C++] www.codeproject.com 28-Jan-2000 by Tenebril Incorporated
	PeopleWatcher instant messanger
	 
	Tenebril Incorporated
	 
	An instant messenger program using the AwareNet library
	
Aggressive Optimizations for Visual C++ [Tip, Article, Visual C++] www.codeproject.com 28-Jan-2000 by Todd C Wilson
	Aggressive Optimizations for Visual C++
	 
	Todd C Wilson
	 
	Save time and space in your release builds
	
How to test your programs with Unicode characters in multiple languages on Windows 2000 [Windows 2000, Article, Visual C++] www.codeproject.com 28-Jan-2000 by Michael Dunn
	How to test your programs with Unicode characters in multiple languages 
on Windows 2000
	 
	Michael Dunn
	 
	How to test your Unicode program with foreign-language characters on 
Windows 2000
	
Using qsort on arrays of sequential data [C++, MFC, STL, Article, Visual C++] www.codeproject.com 27-Jan-2000 by Phil McGahan, Chris Maunder
	Using qsort on arrays of sequential data
	 
	Phil McGahan and Chris Maunder
	 
	An introduction to a useful function
	
BCGDateTime controls version 1.0 [Date, Time, Article, Visual C++] www.codeproject.com 27-Jan-2000 by Stas Levin
	BCGDateTime controls version 1.0
	 
	Stas Levin
	 
	A set of four date/time ActiveX controls (Date/Time Picker, Month 
Calendar, Duration Control, Time Intervals Control)
	
Perforated Tape Toolbar [Toolbar, Docking Window, Article, Visual C++] www.codeproject.com 27-Jan-2000 by Oleg A Mostovlyansky
	Perforated Tape Toolbar
	 
	Oleg A Mostovlyansky
	 
	A spectacular variation on toolbars
	
Tear-off Rebars [Toolbar, Docking Window, Office, Article, Visual C++] www.codeproject.com 27-Jan-2000 by Nick Hodapp
	Tear-off Rebars
	 
	Nick Hodapp
	 
	This article Implements the functionality similar to the Office 2000 
toolbars
	
Using the DrawAnimatedRects() function (using: Visual C++ 6.0) [Font, GDI, GUI, Article, Visual C++] www.codeproject.com 27-Jan-2000 by Chris Maunder, Norm Almond, Santosh Rao
	Using the DrawAnimatedRects() function
	 
	Norm Almond, Chris Maunder and Santosh Rao
	 
	Shows how to use the DrawAnimatedRects function to improve the look of 
your apps
	
True Colour Developer Studio Addin [Macro, Add-in, Article, Visual C++] www.codeproject.com 27-Jan-2000 by Simon Capewell
	True Colour Developer Studio Addin
	 
	Simon Capewell
	 
	Use any colour in the Developer Studio IDE
	
String Tokenizer Class (CTokenEx) [String, Article, Visual C++] www.codeproject.com 27-Jan-2000 by Daniel Madden
	String Tokenizer Class (CTokenEx)
	 
	Daniel Madden
	 
	A very simple string tokenizer class
	
Use VB's RegExp object to validate email address syntax (using: Visual Basic 6.0) [RegExp Object, Regular Expression, VBScript, Visual Basic, Tip] www.zdtips.com 26-Jan-2000
Use VB's RegExp object to validate email address syntax

Nowadays, if your application requires a user to enter specific
company information, you probably have a field for an email
address. No doubt, you'll want to ensure that the address not
only contains the @ and dot, but that the remaining characters
contain only letters, numerals, or underscores (and perhaps a
dash or period). At first, this may seem like a daunting task.
And if you use standard Visual Basic string functions alone, it
will be. Fortunately, the VB RegExp object provides an easier way.

If you didn't read our previous tip on using a RegExp object for
global find and replace operations, then to use regular expressions
in Visual Basic you'll need to download the VBScript 5.0 DLL from

www.microsoft.com/msdownload/vbscript/scripting.asp 

Once you install VBScript's DLL, the Microsoft VBScript Regular
Expressions option appears in Visual Basic's References dialog
box. Add this reference to your project, and you'll be free to
use the RegExp object. The following code validates an email
address in a textbox named Text1:

Dim myReg As RegExp

Private Sub Form_Load()
Set myReg = New RegExp
myReg.IgnoreCase = True
myReg.Pattern = "^[\w-\.]+@\w+\.\w+$"
End Sub

Private Sub Text1_Validate(Cancel As Boolean)
Cancel = Not myReg.Test(Text1)
End Sub

Here, the pattern accepts any number of numeric, underscore,
letters, periods, or dash characters before the @ character
and only numerals, underscores, or letters before and after the dot.
CMapiAdmin: MAPI wrapper [Internet, Network, Article, Visual C++] www.codeproject.com 26-Jan-2000 by Jason Hattingh
	CMapiAdmin: MAPI wrapper
	 
	Jason Hattingh
	 
	A class to encapsulate extended MAPI functions.
	
ATL Rotary Control [Control, ATL, Article, Visual C++] www.codeproject.com 26-Jan-2000 by Norm Almond
	ATL Rotary Control
	 
	Norm Almond
	 
	A rotary knob similar to that used in the Windows 2000 CD Player
	
Case-Insensitive String Replace [String, Article, Visual C++] www.codeproject.com 26-Jan-2000 by Uwe Keim
	Case-Insensitive String Replace
	 
	Uwe Keim
	 
	function to replace all occurences of a string within another, ignoring 
the case.
	
Utility to Product Source Code Statistics [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 26-Jan-2000 by Valery R Kim
	Utility to Product Source Code Statistics
	 
	Valery R Kim
	 
	
	
Adding Buttons to Dialog Caption [Dialog, Article, Visual C++] www.codeguru.com 26-Jan-2000 by Fabi Pantera
	Adding Buttons to Dialog Caption
	 
	Fabi Pantera
	 
	
	
"Happy Year2000" For All Software Developers [OpenGL, Article, Visual C++] www.codeguru.com 26-Jan-2000 by Zhaohui Xing
	"Happy Year2000" For All Software Developers
	 
	Zhaohui Xing
	 
	
	
Defining a Function Object (using: Visual C++ 6.0) [Callback, Function Object, Template, Visual C++, Tip] www.devx.com 25-Jan-2000 by Danny Kalev
Defining a Function Object
By Danny Kalev


Although pointers to functions are widely used for implementing function 
callbacks, C++ offers a significantly superior alternative to them, namely 
function objects. Function objects (also called "functors") are ordinary class 
objects that overload the () operator. Thus, syntactically, they behave like 
ordinary functions. 

There are several advantages in using a function object instead of a pointer to 
function. First, they are more resilient to design changes because the object 
can be modified internally without changing its external interface. A function 
object can also have data members that store the result of a previous call. 
When using ordinary functions, you need to store the result of a previous call 
in a global or a local static variable. However, global and local static 
variables have some undesirable characteristics. Finally, compilers can inline 
a call made through a function object, thereby enhancing performance even 
further. In contrast, it is nearly impossible to inline a function call made 
through a pointer. 

This solution will show how to define and use a function object that implements 
a negation operation. The first step consists of declaring an ordinary class 
and overloading the () operator: 

  class Negate 
  {
  public: 
    int operator() (int n) { return -n;} 
  };

The overloaded () might look a bit confusing because it has two pairs of 
parentheses. Remember that the first pair is always empty because it serves as 
the operator's name; the parameter list appears in the second pair of 
parentheses. Unlike other overloaded operators, whose number of parameters is 
fixed, the overloaded () operator may take any number of parameters. 

Because the built-in negation operator is unary (it takes only a single 
operand), our overloaded () operator also takes a single parameter. The return 
type is identical to the parameter's type -- int in our example. The function 
body is trivial; it simply re ... (cont.)
Building a Network Service Object (using: Visual Basic 6.0) [NETRESOURCE, Network, WNetAddConnection2(), WNetCancelConnection2(), WNetGetUser(), Visual Basic, Tip, Connection] www.devx.com 25-Jan-2000 by Eric Smith
Building a Network Service Object
By Eric Smith

Objects you build don't always have to be related to a database entity. In 
fact, some of the best objects are pure service objects that know how to talk 
to the registry, or other Windows service. This article will show you the code 
to build a network service object that knows how to: 
1. Get network user name.
2. Connect a network drive.
3. Disconnect a network drive. 

Each one of these features will be a public subroutine or function. The object 
will take care of error handling from the API calls by raising errors to the 
calling routine. While the sample code will have a basic error handler, you can 
expand it to check each of the error codes that the API calls might return. 
These error codes are documented in the MSDN library (both online and on 
CD-ROM), and the error code constants are defined in the API viewer. Just add 
them to your application and you'll be ready to go. 

The first routine will be called AddConnection. The code for this routine is 
shown here: 

Public Sub AddConnection(strLocalPath As String, 
        _strNetworkPath As String, _
   Optional strUserName As String = "", 
        _Optional strPassword As String = "")
   
   Dim typNet As NETRESOURCE
   Dim lngReturn As Long

   With typNet
      .dwType = RESOURCETYPE_DISK
      .lpLocalName = strLocalPath
      .lpRemoteName = strNetworkPath
      .lpProvider = ""
   End With
   
   lngReturn = WNetAddConnection2(typNet, 
        _strPassword, strUserName, 0)
   
   If lngReturn <> 0 Then
      Err.Raise vbObjectError, 
	       _"NetworkServices.AddConnection", 
		        _"Error #" & lngReturn & " occurred
		      _during connection."
   End If
   
End Sub

The routine is designed to accept a local path and a network path, and 
optionally, a user name and/or password to make the connection. As is required 
by the API call, we fill the NETRESOURCE structure with the information needed 
to make the connection. The constant used here i ... (cont.)
FileSystemObject: Overhauled Feature Improves File Operations (using: Visual Basic 6.0) [FielSystemObject Object, File, Folder, SCRRUN.DLL, Drive, Visual Basic, Tip] www.devx.com 25-Jan-2000 by Eric Smith
FileSystemObject: Overhauled Feature Improves File Operations
By Eric Smith

Ever since Visual Basic was first released, most of its major features have 
been overhauled at least once. The exception to this rule is in file 
operations. Just as in the original basic language, files are still opened 
using numbers. You can pass the numbers around through your code, but you 
always have to use somewhat obscure statements to write data to files.
With the release of Visual Basic Scripting Edition, version 2.0, Microsoft 
introduced the FileSystemObject. This is the overhaul that developers who work 
with disk files have been waiting for. This object, and other objects in this 
group, encapsulate all the file operations that previously have been difficult 
or impossible to implement.

To use these objects, you must reference the Microsoft Scripting Runtime 
(C:\Windows\System\SCRRUN.DLL) in your Visual Basic application. If you're 
using VBScript with Internet Explorer, the objects are available already. The 
objects of interest are these:

Drive. Represents a single storage device, including floppy disk, hard drive, 
CD-ROM, and more.
Drives. A collection of all the drives in the system.
File. Represents a single disk file somewhere on the system.
Files. A collection of disk files, typically located in a particular directory.
FileSystemObject. An object to represent the entire file system on your 
computer, including all drives, directories, and files.
Folder. Represents a single directory, whether local or network.
Folders. A collection of directories, which can be located at either the root 
level or in another directory.
TextStream. Represents a file that has been opened for reading or writing of 
data.

To get information on all the drives on your system, you could use the 
following code:

Sub Main()
   Dim objFSO As New Scripting.FileSystemObject
   Dim drvLoop As Scripting.Drive
   
   For Each drvLoop In objFSO.Drives
         Debug.Print drvLoop.DriveLetter & ":\"
     ... (cont.)
CArray: A simple but highly efficient improvement [C++, MFC, STL, CArray Class, Template, Article, Visual C++] www.codeproject.com 25-Jan-2000 by Russell Robinson
	CArray: A simple but highly efficient improvement
	 
	Russell Robinson
	 
	A simple derived Template class that can boost the efficiency of your 
programs.
	
High resolution date and time class [Date, Time, Article, Visual C++] www.codeproject.com 25-Jan-2000 by H?kan Trygg
	High resolution date and time class
	 
	H?kan Trygg
	 
	A high resolution time class that is a replacement for COleDateTime 
that does not use MFC.
	
Writing AutoCad DXF files [File, Folder, Article, Visual C++] www.codeproject.com 25-Jan-2000 by Claude Gagnon
	Writing AutoCad DXF files
	 
	Claude Gagnon
	 
	A simple class for writing AutoCad DXF files
	
Owner drawn spin button control with autodisabling arrow buttons. [Control, Article, Visual C++] www.codeproject.com 25-Jan-2000 by Oleg Lobach
	Owner drawn spin button control with autodisabling arrow buttons.
	 
	Oleg Lobach
	 
	A spin button whose arrows automatically disable themselves when they 
are at their maximum or minimum value.
	
CUsefulSplitterWnd (an extension to CSplitterWnd) [Splitter Window, MFC, Article, Visual C++] www.codeproject.com 25-Jan-2000 by Shaun Wilde
	CUsefulSplitterWnd (an extension to CSplitterWnd)
	 
	Shaun Wilde
	 
	An extension to MFCs CSplitterWnd that provides splitter locking and 
dynamic view replacement
	
Connection Points and Asynchronous Calls, Part II [ATL, COM, Update, Article, Visual C++] www.codeguru.com 25-Jan-2000 by Ashish Dha
	Connection Points and Asynchronous Calls, Part II
	 
	Ashish Dha
	 
	Updated source code
	
A static control to display DIBs [Static Control, Update, Article, Visual C++] www.codeguru.com 25-Jan-2000 by Jorge Lodos
	A static control to display DIBs
	 
	Jorge Lodos
	 
	Demo added to article
	
CPrintListCtrl Class [Listview, Article, Visual C++] www.codeguru.com 25-Jan-2000 by Mike Marquet
	CPrintListCtrl Class
	 
	Mike Marquet
	 
	CListCtrl-derived class that prints (without MFC support)
	
Chart Drawing Solution [Control, Article, Visual C++] www.codeguru.com 25-Jan-2000 by Massimo Colurcio
	Chart Drawing Solution
	 
	Massimo Colurcio
	 
	Tooltip Control (without MFC) Dhandapani Ammasai
	
Functions for Setting and Retrieving Values from Variant Safe Arrays [C++, MFC, Article, Visual C++] www.codeguru.com 25-Jan-2000 by Nanda Kishore
	Functions for Setting and Retrieving Values from Variant Safe Arrays
	 
	Nanda Kishore
	 
	
	
Smart Pointer (with Object Level Thread Synchronization and Reference Counting Garbage Collection) [C++, MFC, Article, Visual C++] www.codeguru.com 25-Jan-2000 by Stefan Tchekanov
	Smart Pointer (with Object Level Thread Synchronization and Reference 
Counting Garbage Collection)
	 
	Stefan Tchekanov
	 
	Updated source and demo files
	
Creating Internet Shortcuts [Internet, Update, Article, Visual C++] www.codeguru.com 25-Jan-2000 by Venu Vemula
	Creating Internet Shortcuts
	 
	Venu Vemula
	 
	
	
Auto-Fill Edit Control [Edit Control, Article, Visual C++] www.codeguru.com 25-Jan-2000 by Massimo Colurcio
	Auto-Fill Edit Control
	 
	Massimo Colurcio
	 
	
	
Ordinal and Enumerated Data Types [Article, Delphi] delphi.about.com 25-Jan-2000
	25-Jan-2000
	 
	25-Jan-2000
	 
	Ordinal and Enumerated Data Types
	 
	Delphi For Beginners: Extend Delphi's built-in types by constructing 
your own types.
	
Win32 Perl Programming: The Standard Extensions [Administrator, Network, Perl, Win32, Windows NT, Book] Purchased 24-Jan-2000, $57.95
20% off
Simple Messaging Service [Network, Article, Visual C++] www.codeguru.com 24-Jan-2000 by Alex G Nazarov
	Simple Messaging Service
	 
	Alex G Nazarov
	 
	
	
Checking IPX Communication and Obtaining Node Addresses [Network, Article, Visual C++] www.codeguru.com 24-Jan-2000 by Zoran MTodorovic
	Checking IPX Communication and Obtaining Node Addresses
	 
	Zoran MTodorovic
	 
	
	
Visual Framework (Views, Tabs and Splitters) [UI, Article, Visual C++] www.codeguru.com 24-Jan-2000 by Zoran MTodorovic
	Visual Framework (Views, Tabs and Splitters)
	 
	Zoran MTodorovic
	 
	Fantastic framework for creating advanced user interfaces
	
MFC Solution to Explanding the CFileDialog Common Dialog [Dialog, Article, Visual C++] www.codeguru.com 24-Jan-2000 by Milan Markovic
	MFC Solution to Explanding the CFileDialog Common Dialog
	 
	Milan Markovic
	 
	Alternative to WIndows hook methods
	
Stacked Dialog [Dialog, Article, Visual C++] www.codeguru.com 24-Jan-2000 by Zoran MTodorovic
	Stacked Dialog
	 
	Zoran MTodorovic
	 
	Presents an alternative to Property Sheets
	
cOutlookIntegration .... How to send attachments using the Outlook Object Model [Object Model, Outlook, Visual Basic, VB Class Module] www.codeoftheweek.com 23-Jan-2000, no. 113
Requirements

Visual Basic 4.0 32-bit or higher.

You will need to create a Reference to Microsoft Outlook 98
Object Model.  To create this reference for Visual Basic 4 goto
Tools / References.  To create this reference for Visual Basic 5
or 6 goto Project / References. Then select Microsoft Outlook 98
Model.  Outlook 2000 should work the same way.

Outlook 98 or higher installed on your machine.

In this Issue

In this issue we discuss how to send attachments using the
Outlook Object Model.  We also cover how to use the CC and BCC
options when sending messages.

cOutlookIntegration.

This week we took what we had from last week and converted it to
a class module.  This allowed us to add some other features that
would have been difficult to implement in a single function call.
The cOutlookIntegration module contains several properties and
methods that use the Outlook object model.   This class assumes
the user of this software has Outlook installed on their computer.

In a future issue we might show how to use other useful Outlook
messaging features.  Send a message to outlook@codeoftheweek.com
if you are interested in seeing more about this.


Properties

Public Property Let ImportanceFlag(eImportance As OlImportance)

eImportance marks the message with one of the following:
olImportanceHigh, olImportanceLow or olImportanceNormal.  This
option is not supported on all mail systems.  The default is
depends on how Outlook is configured.

Public Property Let MessageBody(sBody As String)

sBody is the content of the message.  sBody can contain new line
characters and can be pretty much unlimited in length; although
you probably do not want to send a message that is too long.


Methods

Public Sub ComposeMessage(Optional olItem As OlItemType = olMailItem)

This is where you should start.  For any message you send, you
should call ComposeMessage first.  The parameter olItem allows you
to control what kind of message will be composed.  For now all
that is supported  ... (cont.)
C/C++ Tips from Users [Article, Visual C++] cplus.about.com 23-Jan-2000
	23-Jan-2000
	 
	23-Jan-2000
	  
	C/C++ Tips from Users
	 
	C++ tips sent in by you.
	
The RGN Generator [Font, GDI, GUI, Dialog, Article, Visual C++] www.codeproject.com 22-Jan-2000 by Richard de Oude
	The RGN Generator
	 
	Richard de Oude
	 
	Creating non-rectangular Dialog boxes
	
General Purpose Log System [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 22-Jan-2000 by Rehzon
	General Purpose Log System
	 
	Rehzon
	 
	
	
CWinApp-derived Class for Retrieving Version Information [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 22-Jan-2000 by Bernd Wißler
	CWinApp-derived Class for Retrieving Version Information
	 
	Bernd Wißler
	 
	
	
Displaying Animated Cursors from a Resource File [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 22-Jan-2000 by Bernd Wißler
	Displaying Animated Cursors from a Resource File
	 
	Bernd Wißler
	 
	
	
Win32 SDK Screen Saver that cycles through a series of bitmaps every n seconds (using: Visual C++ 6.0) [Win32 Bitmaps Screen Saver, Article, Visual C++] www.codeguru.com 22-Jan-2000 by S Vinoj Kumar
	S. Vinoj Kumar
	 
	Win32 SDK Screen Saver that cycles through a series of bitmaps every n 
seconds
	 
	
	
SpeedySCM: Terminating Services, Quickly Starting Multiple Services [System, Article, Visual C++] www.codeguru.com 22-Jan-2000 by Wessel Troost
	SpeedySCM: Terminating Services, Quickly Starting Multiple Services
	 
	Wessel Troost
	 
	
	
Adding Context Help [Help, Article, Visual C++] www.codeguru.com 22-Jan-2000 by Thomas Kokholm
	Adding Context Help
	 
	Thomas Kokholm
	 
	
	
Adding a Toolbar to a Dialog-Based Application [Dialog, Article, Visual C++] www.codeguru.com 22-Jan-2000 by Brad Guttilla
	Adding a Toolbar to a Dialog-Based Application
	 
	Brad Guttilla
	 
	Demo source included to already popular article!!
	
Circular Buffer [C++, MFC, Article, Visual C++] www.codeguru.com 22-Jan-2000 by David Hubbard
	Circular Buffer
	 
	David Hubbard
	 
	
	
Addressbook Sample [Sample, Article, Visual C++] www.codeguru.com 22-Jan-2000 by Dimitriy Okunev
	Addressbook Sample
	 
	Dimitriy Okunev
	 
	
	
C++ Operators Macro [Macro, Article, Visual C++] www.codeguru.com 22-Jan-2000 by Yury Chervonij
	C++ Operators Macro
	 
	Yury Chervonij
	 
	Auto-completes and inserts code for C++ keywords such as for, which, 
etc.
	
Simple Mixer Control Wrapper [Multimedia, Update, Article, Visual C++] www.codeguru.com 22-Jan-2000 by Alexander Fedorov
	Simple Mixer Control Wrapper
	 
	Alexander Fedorov
	 
	Bug fixes to source code
	
Cool Popup Menu [Menu, Article, Visual C++] www.codeguru.com 22-Jan-2000 by Dipti Alone
	Cool Popup Menu
	 
	Dipti Alone
	 
	Class to create menu with vertical bitmap along left side of menu 
(similar to Start menu)
	
Load Arrays Using XML (using: Visual Basic 6.0) [Array, XML, Visual Basic, Tip] www.devx.com 21-Jan-2000 by Kurt Cagle
"Is it possible to load (populate) values into arrays using XML? Presently, I 
am storing the values in an ASCII file and reading the file to populate the 
arrays. The application contains several arrays - some of them quite large. I 
read an article, "Ask the VB Pro: Load Arrays With Values Quickly," (requires 
Premier Club membership) in the December 1999 issue of Visual Basic 
Programmer's Journal, about using the VB Resource Editor and loading an array 
from a resource file. Can array values be stored in an XML file and loaded at 
run time? What would be the mechanics of doing this in VB6?"

Depending upon the type of XML structure, making the jump from an XML document 
to an array is a fairly simple proposition. Indeed, a one-dimensional array, in 
which each element of the array contains a simple scalar value, can be done 
with a direct translation. For example, consider the problem of turning a list 
of names contained within this XML structure into an array:


	Albert Einstein
	Erasmus Darwin
	Samuel Hawthorne
	Marie Curie
	Lao Tse
	Ada Augusta Lovelace
	Grace Hopper
	Richard Feynman			
	Benjamin Franklin			


In this case, the structure is very uniform. You can take advantage of this 
structure and the .selectnodes function, which returns a list of nodes that 
satisfy a given condition. This nodelist is the key to doing any XML to variant 
array conversion, because the nodelist is a collection that is accessible 
through an index, just as an array is. This DOM code shows how you can take 
advantage of that similarity:

function XML2Array(xmlDoc as DOMDocument, _
    optional entityPath as String="/*/*") as Variant
	dim nodeList as IXMLDOMNodeList
	dim entities() as Variant 
	set nodeList=xmlDoc.selectNodes(entityPath)
	redim entities(nodeList.length) as Variant
	for index=0 to nodeList.length-1
		entities(index)=nodeList(index)
	ne ... (cont.)
Insert XML Into Another XML Document (using: Visual Basic 6.0) [XML, Visual Basic, Tip] www.devx.com 21-Jan-2000 by Kurt Cagle
"Is there an easy and efficient way to insert an XML document into another XML 
template? The insertion point can be before, between, or after specified nodes."

Sure. I do this all the time. If you're going from a DOM-based solution, you 
can incorporate one XML structure into another through the use of appendChild 
and cloneNode. For example:

dim parentDoc
dim childDoc
dim insertionNode
set parentDoc=createObject("Microsoft.XMLDOM")
set childDoc=createObject("Microsoft.XMLDOM")
parentDoc.load "myXMLDoc.xml"
childDoc.load "myChildXMLDoc.xml"
set insertionNode=parentDoc.selectSingleNode("//some/arbitrary/path")
insertionNode.appendChild childDoc.documentElement

In this case, you load in two documents, select the node you want to attach the 
child document to, then append the document element of the child document as a 
child to that node. There is similarly an .insertBefore(nodePos) method that 
can insert the new document into the node along with any other children that 
the node happens to have.


Written by Kurt Cagle on 1/21/00.
 
Reading a text file in ASP [Active Server Pages, ASP, Article, Visual C++] www.codeproject.com 21-Jan-2000 by Chris Maunder
	Reading a text file in ASP
	 
	Chris Maunder
	 
	How to read a text file on a server using VBScript in ASP
	
How to verify the bar state info [Toolbar, Docking Window, Article, Visual C++] www.codeproject.com 21-Jan-2000 by Cristi Posea
	How to verify the bar state info
	 
	Cristi Posea
	 
	Verify the bar state info in the application profile before calling 
LoadBarState()
	
printf()-like format function in VBScript [Visual Basic, VBScript, VBA, Visual Basic, Article, Visual C++] www.codeproject.com 21-Jan-2000 by Uwe Keim
	printf()-like format function in VBScript
	 
	Uwe Keim
	 
	A format function in VBScript that simulates the printf() C function.
	
MFC Multithreaded Recording and Playback of Sound [Multimedia, Article, Visual C++] www.codeguru.com 21-Jan-2000 by Paul Cheffers
	MFC Multithreaded Recording and Playback of Sound
	 
	Paul Cheffers
	 
	
	
EditPad - Syntax Highlighting Editor [Edit Control, Update, Article, Visual C++] www.codeguru.com 21-Jan-2000 by Ferdinand Prantl
	EditPad - Syntax Highlighting Editor
	 
	Ferdinand Prantl
	 
	Major updates to very popular syntax highlighting editor!!!
	
COleFileManager - OLE Compound File Class [ATL, COM, Article, Visual C++] www.codeguru.com 21-Jan-2000 by Brett R Mitchell
	COleFileManager - OLE Compound File Class
	 
	Brett R Mitchell
	 
	Functionality added and bugs fixed
	
A Multi-Level CCheckListbox [Listbox, Article, Visual C++] www.codeguru.com 21-Jan-2000 by Brett R Mitchell
	A Multi-Level CCheckListbox
	 
	Brett R Mitchell
	 
	
	
Ultimate FastMaps! [C++, MFC, STL, Article, Visual C++] www.codeproject.com 20-Jan-2000 by Dundas Software
	Ultimate FastMaps!
	 
	Dundas Software
	 
	A fully featured map class that uses balanced trees to store and 
retrieve data quickly by key
	
A Card Dialog [Dialog, Windows Programming, Article, Visual C++] www.codeproject.com 20-Jan-2000 by Zoran M Todorovic
	A Card Dialog
	 
	Zoran M Todorovic
	 
	A auto-sizing dialog used to store and display smaller child dialogs
	
Grouping project files into folders [Tip, Article, Visual C++] www.codeproject.com 20-Jan-2000 by Jeremiah Talkar
	Grouping project files into folders
	 
	Jeremiah Talkar
	 
	A tip on organising your project files in the DevStudio Workspace window
	
Analog Meter Class [Control, Article, Visual C++] www.codeproject.com 19-Jan-2000 by Mark C Malburg
	Analog Meter Class
	 
	Mark C Malburg
	 
	A control that displays a numerical value as an analog meter
	
Create a buzzword generator [Article, Visual Basic] visualbasic.about.com 19-Jan-2000
	19-Jan-2000
	 
	19-Jan-2000
	  
	Create a buzzword generator
	 
	Your Visual Basic guide gives you the low-down on creating random 
numbers to help create a nonsense phrase generator.
	
Property Page and Context Menu Shell Extension ATL Wizards [ATL, Context Menu, Shell Extension, Article, Visual C++] www.codeproject.com 18-Jan-2000 by Shaun Wilde
	Property Page and Context Menu Shell Extension ATL Wizards
	 
	Shaun Wilde
	 
	A wizard that allows you to create an ATL Property Page or Context Menu 
extensions
	
Serialization of COM objects using MFC [COM, DCOM, Serialization, MFC, Article, Visual C++] www.codeproject.com 18-Jan-2000 by Pierre Chalamet
	Serialization of COM objects using MFC
	 
	Pierre Chalamet
	 
	A neat way to use MFCs built in serialization to store COM objects
	
Interactive SQL Tool (using ADO) [Database, SQL, ADO, Article, Visual C++] www.codeproject.com 18-Jan-2000 by George Poulose
	Interactive SQL Tool (using ADO)
	 
	George Poulose
	 
	A tool that allows you to query OLE DB sources
	
Interactive SQL Tool (using ODBC) [Database, SQL, ODBC, ODBC, Article, Visual C++] www.codeproject.com 18-Jan-2000 by George Poulose
	Interactive SQL Tool (using ODBC)
	 
	George Poulose
	 
	A tool that allows you to query ODBC sources
	
A Library Symbol Dump tool [DLL, Article, Visual C++] www.codeproject.com 18-Jan-2000 by George Poulose
	A Library Symbol Dump tool
	 
	George Poulose
	 
	A tool to display the contents of a library file
	
How to share a data segment in a DLL [DLL, Article, Visual C++] www.codeproject.com 18-Jan-2000 by Phil McGahan
	How to share a data segment in a DLL
	 
	Phil McGahan
	 
	Using #pragma statements to share variables in a DLL
	
History Edit Control [Edit Control, CEdit Class, Article, Visual C++] www.codeproject.com 18-Jan-2000 by Ravi Bhavnani
	History Edit Control
	 
	Ravi Bhavnani
	 
	CEdit derived control that lets you to display a scrolling text history
	
Rotate your graphics: advanced Memory Device Context [Font, GDI, GUI, Memory, Device Context, Article, Visual C++] www.codeproject.com 18-Jan-2000 by Hans B?hler
	Rotate your graphics: advanced Memory Device Context
	 
	Hans B?hler
	 
	A memory DC that allows you to rotate your graphics
	
Oscilloscope/StripChart Control [Control, Article, Visual C++] www.codeproject.com 18-Jan-2000 by Mark C Malburg
	Oscilloscope/StripChart Control
	 
	Mark C Malburg
	 
	A control that graphically displays numerical information
	
An LED Style display control and bar control [Static Control, Time, Floating Point, Article, Visual C++] www.codeproject.com 18-Jan-2000 by Jason Hattingh
	An LED Style display control and bar control
	 
	Jason Hattingh
	 
	A control to display Time, Floating Point numbers or integers using an 
LED digital-style display
	
A service that displays an Icon in the System Tray [System, Icon, System Tray, Article, Visual C++] www.codeproject.com 18-Jan-2000 by Bruno Vais
	A service that displays an Icon in the System Tray
	 
	Bruno Vais
	 
	This article demonstrates a service that uses the system tray to 
interact with the user.
	
Fixing the GPF in Devshl.dll when starting VC++ 5 or 6 [Tip, Visual Studio, Article, Visual C++] www.codeproject.com 18-Jan-2000 by Sean Echevarria
	Fixing the GPF in Devshl.dll when starting VC++ 5 or 6
	 
	Sean Echevarria
	 
	Having problems with Devshl.dll? Don't reinstall Visual Studio until 
you've read this!
	
A Print Enabled Tree View [Tree Control, Article, Visual C++] www.codeproject.com 18-Jan-2000 by Koay Kah Hoe
	A Print Enabled Tree View
	 
	Koay Kah Hoe
	 
	Code to add printing capabilities to a Tree View
	
Explicitly Linking to Classes in DLL's [DLL, Update, Article, Visual C++] www.codeguru.com 18-Jan-2000 by V Rama Krishna
	Explicitly Linking to Classes in DLL's
	 
	V Rama Krishna
	 
	Fixed a bug in the source code/demo project
	
System Menu Handling [Article, Delphi] delphi.about.com 18-Jan-2000
	18-Jan-2000
	 
	18-Jan-2000
	 
	System Menu Handling
	 
	Add, delete and change system menu items from Delphi.
	
A Drag-Drop Manager for CObjects [Clipboard, MFC, Article, Visual C++] www.codeproject.com 17-Jan-2000 by Wes Rogers
	A Drag-Drop Manager for CObjects
	 
	Wes Rogers
	 
	A drag-drop/clipboard manager class for MFC objects derived from CObject
	
Sizers: An Extendable Layout Management Library [Dialog, Windows Programming, Article, Visual C++] www.codeproject.com 17-Jan-2000 by William E Kempf
	Sizers: An Extendable Layout Management Library
	 
	William E Kempf
	 
	An article on extendable layout management classes
	
Creating Static-linked Executables using VC++ Standard Edition [DLL, Article, Visual C++] www.codeproject.com 17-Jan-2000 by LJP
	Creating Static-linked Executables using VC++ Standard Edition
	 
	LJP
	 
	VC++ Standard Edition only has support for dynamically linked exes. 
This article shows you how to by-pass this restriction.
	
Insert your Logo between caption bar and menu bar [Menu, Article, Visual C++] www.codeproject.com 17-Jan-2000 by Smile Seo
	Insert your Logo between caption bar and menu bar
	 
	Smile Seo
	 
	Give your apps a unique look by adding a logo to your menu
	
An LED Time and value display control [Static Control, Time, Article, Visual C++] www.codeproject.com 17-Jan-2000 by Jason Hattingh
	An LED Time and value display control
	 
	Jason Hattingh
	 
	A control to display times and numbers using an LED digital-style 
display
	
VBUniverse [Article, Visual Basic] www.earthweb.com 17-Jan-2000
	VBUniverse
	 
	-N/A
	 
	17-Jan-2000
	 
	17-Jan-2000
	 
	Free Visual Basic Resource site with source code, sample projects, 
articles. Featuring VB5/6, VBA, VBScript and some ASP. Also Chat and 
messageboards...
	
Static text to display long filenames with ellipses [Static Control, Article, Visual C++] www.codeproject.com 16-Jan-2000 by Ravi Bhavnani
	Static text to display long filenames with ellipses
	 
	Ravi Bhavnani
	 
	Lightweight class for displaying long filespecs that may need to be 
truncated
	
Sending "Pop Up" Messages via NetMessageXXX Functions [Network, Article, Visual C++] www.codeguru.com 16-Jan-2000 by Phil Petree
	Sending "Pop Up" Messages via NetMessageXXX Functions
	 
	Phil Petree
	 
	
	
IE Advanced Options-like Tree View [Treeview, Article, Visual C++] www.codeguru.com 15-Jan-2000 by Huang Shansong
	IE Advanced Options-like Tree View
	 
	Huang Shansong
	 
	
	
Extending CStringArray [String, Article, Visual C++] www.codeguru.com 15-Jan-2000 by Anders M Eriksson
	Extending CStringArray
	 
	Anders M Eriksson
	 
	Advanced CStringArray class with a Find method
	
CTypeListEx 1.0 [ImageList Control, Article, Visual C++] www.codeguru.com 15-Jan-2000 by Nathan Moinvaziri
	CTypeListEx 1.0
	 
	Nathan Moinvaziri
	 
	
	
Workspace Utilities v1.75 [Macro, Article, Visual C++] www.codeguru.com 15-Jan-2000 by Joshua C Jensen
	Workspace Utilities v1.75
	 
	Joshua C Jensen
	 
	Latest version of popular Visual Studio Add-In
	
Simple messaging service [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 15-Jan-2000 by Alex G Nazarov
	Simple messaging service
	 
	Alex G Nazarov
	 
	
	
Weekly Hours Selector [Date, Time, Article, Visual C++] www.codeguru.com 15-Jan-2000 by Jeff Palmer
	Weekly Hours Selector
	 
	Jeff Palmer
	 
	
	
A Simple Smart Pointer [C++, MFC, Article, Visual C++] www.codeguru.com 15-Jan-2000 by Sandu Turcan
	A Simple Smart Pointer
	 
	Sandu Turcan
	 
	Smart Pointer with minimal developer requirements and overhead
	
File Transfer Using CSockets [Network, Update, Article, Visual C++] www.codeguru.com 15-Jan-2000 by Vicken Simonian
	File Transfer Using CSockets
	 
	Vicken Simonian
	 
	Demo added to article
	
Opening a Dial-Up connection [Internet, Network, Article, Visual C++] www.codeproject.com 14-Jan-2000 by Mileta Radenovic
	Opening a Dial-Up connection
	 
	Mileta Radenovic
	 
	How to open a new dialup connection using RasDial
	
CSplitterWndEx : indicating splitter window focus, and automatic splitting [Splitter Window, Article, Visual C++] www.codeproject.com 14-Jan-2000 by Stephane Routelous
	CSplitterWndEx : indicating splitter window focus, and automatic 
splitting
	 
	Stephane Routelous
	 
	A tutorial that shows how to automatically split a view, and also how 
to indicate which view has the focus
	
XSleep: An alternative to the Sleep() function [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 14-Jan-2000 by Anuj Seth
	XSleep: An alternative to the Sleep() function
	 
	Anuj Seth
	 
	
	
Memory Mapped Files [C++, MFC, Windows Programming, Article, Visual C++] www.codeguru.com 14-Jan-2000 by Rådström Stefan
	Memory Mapped Files
	 
	Rådström Stefan
	 
	Using Memory Mapped Files for Efficient Inter-Process Communications 
(IPC)
	
Shell Extension to Copy Full Filename Path(s) [Shell Programming, Article, Visual C++] www.codeguru.com 14-Jan-2000 by Glenn Carr
	Shell Extension to Copy Full Filename Path(s)
	 
	Glenn Carr
	 
	Very useful extension that copies the selected file path(s) to the 
clipboard
	
CUnicodeString Class [String, Update, Article, Visual C++] www.codeguru.com 14-Jan-2000 by Alexander Keck
	CUnicodeString Class
	 
	Alexander Keck
	 
	Updated source code!!
	
Dialog for Selecting Directories [Dialog, Article, Visual C++] www.codeguru.com 14-Jan-2000 by Andrew Phillips
	Dialog for Selecting Directories
	 
	Andrew Phillips
	 
	
	
Display Update Speed for Dialog Boxes [Dialog, Article, Visual C++] www.codeguru.com 14-Jan-2000 by Joseph C Burwell
	Display Update Speed for Dialog Boxes
	 
	Joseph C Burwell
	 
	
	
GUI MFC Framework inside ATL DLL server [ATL, COM, Article, Visual C++] www.codeguru.com 14-Jan-2000 by Steve Bryndin
	GUI MFC Framework inside ATL DLL server
	 
	Steve Bryndin
	 
	
	
A Smart Pointer Capable of Object Level Thread Synchronization and Reference Counting Garbage Collection [C++, MFC, STL, Smart Pointer, Thread, Wrapper Class, Article, Visual C++] www.codeproject.com 13-Jan-2000 by Stefan Chekanov
	A Smart Pointer Capable of Object Level Thread Synchronization and 
Reference Counting Garbage Collection
	 
	Stefan Chekanov
	 
	A smart pointer Wrapper Class
	
Creating Excel Sheets using ODBC [Database, ODBC, Article, Visual C++] www.codeproject.com 13-Jan-2000 by Alexander Mikula
	Creating Excel Sheets using ODBC
	 
	Alexander Mikula
	 
	Writing to Excel spreadsheets using only ODBC
	
Reading Excel files using ODBC [Database, ODBC, Article, Visual C++] www.codeproject.com 13-Jan-2000 by Alexander Mikula
	Reading Excel files using ODBC
	 
	Alexander Mikula
	 
	A discussion and demonstration of reading Excel files using ODBC
	
How to place controls on toolbars [Toolbar, Docking Window, Article, Visual C++] www.codeproject.com 13-Jan-2000 by Randy More
	How to place controls on toolbars
	 
	Randy More
	 
	How to place combo-boxes, edit boxes, progress controls, etc. into 
toolbars
	
Catching the 'Enter' Key in windows and controls [Control, Article, Visual C++] www.codeproject.com 13-Jan-2000 by Randy More
	Catching the 'Enter' Key in windows and controls
	 
	Randy More
	 
	How to handle the WM_GETDLGCODE message in order to catch special key 
strokes.
	
How to display the Pick Icon Dialog [Shell Programming, Icon, Dialog, Article, Visual C++] www.codeproject.com 13-Jan-2000 by Henk Devos
	How to display the Pick Icon Dialog
	 
	Henk Devos
	 
	Explains how to display the windows 'Pick Icon' dialog
	
CColorListbox: A list box with colored strings (using: Visual C++ 6.0) [Listbox, Article, Visual C++] www.codeguru.com 13-Jan-2000 by Paul M Meidinger
	CColorListbox
	 
	A list box with colored strings
	 
	Paul M. Meidinger
	
CFileInfoArray [File, Folder, Article, Visual C++] www.codeguru.com 13-Jan-2000 by Antonio Tejada Lacaci
	CFileInfoArray
	 
	Antonio Tejada Lacaci
	 
	Class for gathering file information recursively through directories
	
Outlook 98-Style FlatHeader Control [Listview, Article, Visual C++] www.codeguru.com 13-Jan-2000 by Maarten Hoeben
	Outlook 98-Style FlatHeader Control
	 
	Maarten Hoeben
	 
	
	
SuperGrid: Yet Another Listview Control (using: Visual C++ 6.0) [Listview, Update, Article, Visual C++] www.codeguru.com 13-Jan-2000 by Allan Nielsen
	SuperGrid
	 
	Yet Another Listview Control
	 
	Allan Nielsen
	
An Adaptable Property List Control [Listview, Article, Visual C++] www.codeguru.com 13-Jan-2000 by Stefan Belopotocan
	An Adaptable Property List Control
	 
	Stefan Belopotocan
	 
	
	
Report Control (using: Visual C++ 6.0) [Listview, Article, Visual C++] www.codeguru.com 13-Jan-2000 by Maarten Hoeben
	Report Control
	 
	An Outlook 98 style SuperGrid Control
	 
	Maarten Hoeben
	
HeadTail .... A composite control that offers the traditional Unix head functionality, which reads the first or last x number of bytes from the selected file [Visual C++, ActiveX Control] www.organicsoftware.net 22-Apr-2000
A composite control that offers the traditional Unix head functionality, which 
reads the first or last x number of bytes from the selected file.  The user can 
switch from head to tail and specify the maximum number of characters to read.  
The file selection listbox allows for navigation through the filesystem
Adaptable Property List Control [Article, Visual C++] www.earthweb.com 13-Jan-2000 by Stefan Belopotocan
	Adaptable Property List Control
	 
	Stefan Belopotocan
	 
	13-Jan-2000
	 
	13-Jan-2000
	 
	A very nice list control for displaying VB-like properties dialog
	
Correctly pass variant array parameters in Visual Basic (using: Visual Basic 6.0) [Split Function, Tip, Visual Basic, Array Function, Variant Array] www.zdtips.com 12-Jan-2000
	Correctly pass variant array parameters in Visual Basic
	 
	If you create a procedure that will accept both standard arrays as well 
as those created from the Spit() and Array() functions, then you'll definitely 
want to type the argument as a variant, not an array, as in
	 
 Sub FooList ( MyArrayList as Variant)
  
	instead of
	 
 Sub FooList (MyArrayList() as Variant)
  
	Why? Well, both the Split() and Array() functions create variant 
arrays-that is, a variant variable filled with an array subtype. And even 
though you manipulate them the same way, Visual Basic doesn't consider an array 
of variants and a variant array the same thing. So, if your procedure expects a 
regular array and you pass it a variant array created from the Split() or 
Array() function, you'll get a type mismatch error. On the other hand, Visual 
Basic does let you pass a regular array into a variant parameter-which makes 
sense when you consider a variant's universal nature.
	
Custom Draw Buttons & A Smarter Groupbox [Button Control, Article, Visual C++] www.codeproject.com 12-Jan-2000 by John Curtis
	Custom Draw Buttons & A Smarter Groupbox
	 
	John Curtis
	 
	A class to make working with radio buttons easier, and another for 
custom drawing buttons
	
A Simple Smart Pointer [C++, MFC, STL, Smart Pointer, Template, Article, Visual C++] www.codeproject.com 12-Jan-2000 by Sandu Turcan
	A Simple Smart Pointer
	 
	Sandu Turcan
	 
	A Template-based smart pointer implementation
	
eNITL: The Network Improv Template Language [C++, MFC, STL, Template, HTML, XML, Article, Visual C++] www.codeproject.com 12-Jan-2000 by Liam Breck
	eNITL: The Network Improv Template Language
	 
	Liam Breck
	 
	A cross platform scripting engine for server applications providing 
HTML, XML, SGML or other text based formats
	
Indicating an empty ListView (using: Visual C++ 6.0) [List Control, Article, Visual C++] www.codeproject.com 12-Jan-2000 by Ghini Mauro
	Indicating an empty ListView
	 
	Ghini Mauro
	 
	Instead of presenting a blank screen if your list control is empty, why 
not try this?
	
CWndSliderView: An animated child window manager [Control, Outlook, Article, Visual C++] www.codeproject.com 12-Jan-2000 by Christopher Brown
	CWndSliderView: An animated child window manager
	 
	Christopher Brown
	 
	An article on using an Outlook style window slider control.
	
Using the Network Registry Functions [System, Network, Article, Visual C++] www.codeproject.com 12-Jan-2000 by Santosh Rao
	Using the Network Registry Functions
	 
	Santosh Rao
	 
	A small sample which uses Network Registry Access Functions to access a 
remote computer
	
Creating an NT boot disk (using: Windows NT 4.0) [Boot-Up, Windows NT, Tip] www.zdnet.com 11-Jan-2000 by Chris Morton
If you accidentally delete NT's boot files from the hard disk's \root folder, 
no operating system will boot. An NT boot disk can come to the rescue. To 
create one, insert a floppy disk, open Explorer, right-click on the A: drive 
icon, and choose Format. Then copy these files from the \root folder to the 
floppy disk: NTLDR, NTDETECT.COM, BOOT.INI, and BOOTSECT.DOS. If disaster 
strikes, simply boot from the floppy disk and copy those four files back to 
their original location.

------------------------------

If you lose the three boot floppies (also known as Setup Disks) that came with 
your Windows NT 4.0 CD-ROM, you can easily use the CDROM's setup utility, 
WINNT32.EXE to create new copies of them. To do so, take your Windows NT 4.0 
CDROM to another Windows NT Workstation or Server 4.0 system and run the 
command 

WINNT32.EXE /OX 

from the CDROM's \I386 directory. The Setup program will prompt you to insert 
three formatted disks to create the boot floppies but won't begin the 
installation process itself. You can also run the command 

WINNT.EXE /OX 

from the CDROM's \I386 directory on a Windows 95, Windows 3.11 or DOS machine 
to create the three boot floppies. 
Using Command Line Arguments (using: Visual Basic 6.0) [Argument, Command Line, Visual Basic, Tip] www.zdnet.com 11-Jan-2000 by Eric Smith
Using Command Line Arguments
By Eric Smith

Editor's Note: Code in this Solution has been updated since its original 
publication.

One of the virtually forgotten features of Visual Basic is the ability to 
accept command-line parameters when an application is executed. Even with a GUI 
available to you, there are some cases in which you need to build a VB 
application that doesn't have a front-end. In these cases, one of the easiest 
ways to control the function of the application is through command line 
arguments. 
Command line arguments are passed into Visual Basic by way of the Command$ 
variable. This variable is a very long string with all the arguments written 
exactly as the user entered them. When running an application, you would add 
them to the shortcut or the Run line. However, you may also need to use 
arguments in testing within the VB environment. To do this: 

1. Select Properties from the Project menu. 
2. Click the Make tab. 
3. As shown in Figure 1, enter the arguments that you want to pass to the 
application when it runs in the development environment. 


Interpreting the arguments is the next step. If you've ever had computer 
science courses dealing with compilers and parsers, this should be fairly 
straightforward for you. For this application, we're going to allow two options:

-d indicates debug mode
-f allows a filename to be specified immediately after the -f flag. 

Once the application has started, we need to determine if any of these 
arguments were supplied, and store the values in some variables for later use. 
The code is shown below: 

Sub Main()
   Dim a_strArgs() As String
   Dim blnDebug As Boolean
   Dim strFilename As String
   
   Dim i As Integer
   
   a_strArgs = Split(Command$, " ")
   For i = LBound(a_strArgs) To UBound(a_strArgs)
      Select Case LCase(a_strArgs(i))
      Case "-d", "/d"
      ' debug mode
         blnDebug = True
      Case "-f", "/f"
      ' filename specified
         If i = UBound(a_strArgs) Th ... (cont.)
Creating an NT Setup Disk Set (using: Windows NT 4.0) [Setup, Windows NT, Tip] www.zdnet.com 11-Jan-2000 by Chris Morton
Unfortunately, the Emergency Repair disk won't work without NT setup disks. 
It's easy to create a set, however, from any NT 4.0 machine that can access the 
original distribution files. First, have three disks handy. Then choose 
Start|Run and type WINNT32 /OX. Click on OK, then follow the prompts. If this 
is your only NT system, test the disks by rebooting from disk 1, then entering 
disk 2 until you see the Emergency Repair disk option on the Welcome to Setup 
menu.
Determining the version number of a DLL or Executable [DLL, Article, Visual C++] www.codeproject.com 11-Jan-2000 by Eran Yariv, Kenneth Lea
	Determining the version number of a DLL or Executable
	 
	Eran Yariv and Kenneth Lea
	 
	A class that allows you to determine the version of a DLL or EXE at 
run-time
	
How to display tooltips for a toolbar in a Dialog [Toolbar, Docking Window, Dialog, Article, Visual C++] www.codeproject.com 11-Jan-2000 by Randy More
	How to display tooltips for a toolbar in a Dialog
	 
	Randy More
	 
	Simple technique for getting tooltips when you have a toolbar in a 
dialog
	
Highlight view with focus [Splitter Window, Article, Visual C++] www.codeproject.com 11-Jan-2000 by Randy More
	Highlight view with focus
	 
	Randy More
	 
	Adding visual feedback on which pane in a split view currently has the 
focus
	
Split a view from a menu item or keystroke [Splitter Window, Article, Visual C++] www.codeproject.com 11-Jan-2000 by Randy More
	Split a view from a menu item or keystroke
	 
	Randy More
	 
	
	
Connection Points and Asynchronous Calls, Part II [ATL, COM, Update, Article, Visual C++] www.codeguru.com 11-Jan-2000 by Ashish Dha
	Connection Points and Asynchronous Calls, Part II
	 
	Ashish Dha
	 
	Updated source files
	
Macintosh-like Progress Control [Control, Article, Visual C++] www.codeguru.com 11-Jan-2000 by Paul M Meidinger
	Macintosh-like Progress Control
	 
	Paul M Meidinger
	 
	
	
Macintosh-like Slider Control [Control, Article, Visual C++] www.codeguru.com 11-Jan-2000 by Paul M Meidinger
	Macintosh-like Slider Control
	 
	Paul M Meidinger
	 
	
	
Get and Set Display Device Modes [Article, Delphi] delphi.about.com 11-Jan-2000
	11-Jan-2000
	 
	11-Jan-2000
	 
	Get and Set Display Device Modes
	 
	Changing the display mode settings (resolution and color depth) from 
Delphi code.
	
Simple Mixer Control Wrapper [Audio, Video, Article, Visual C++] www.codeproject.com 10-Jan-2000 by Alexander Fedorov
	Simple Mixer Control Wrapper
	 
	Alexander Fedorov
	 
	A small audio mixer control wrapper
	
High quality image rotation (rotate by shear) [Bitmap, Palette, Article, Visual C++] www.codeproject.com 10-Jan-2000 by Eran Yariv
	High quality image rotation (rotate by shear)
	 
	Eran Yariv
	 
	Rotating images using shear
	
Expanding and collapsing Dialogs [Dialog, Windows Programming, Article, Visual C++] www.codeproject.com 10-Jan-2000 by Michael Walz
	Expanding and collapsing Dialogs
	 
	Michael Walz
	 
	This article shows gives you the ability to make your dialogs expand or 
contract, depending on how much information the user wishes to view
	
How to do run-time (or explicit) linking of C++ plug-in Components and objects [DLL, Component, Article, Visual C++] www.codeproject.com 10-Jan-2000 by Gert Boddaert
	How to do run-time (or explicit) linking of C++ plug-in Components and 
objects
	 
	Gert Boddaert
	 
	Extending the functionality of your programs using explicit linking
	
Calling RasHangUp without errors. [Internet, Network, Article, Visual C++] www.codeproject.com 10-Jan-2000 by Alexander Fedorov
	Calling RasHangUp without errors.
	 
	Alexander Fedorov
	 
	A way to call RasHangUp without hanging your applications or your modem
	
Adding Checkboxes to a list control [List Control, Article, Visual C++] www.codeproject.com 10-Jan-2000 by Eran Yariv
	Adding Checkboxes to a list control
	 
	Eran Yariv
	 
	Using the updated list control in IE3 and above to add check boxes to 
your list controls
	
A bevelline with horizontal and vertical text [Static Control, Article, Visual C++] www.codeproject.com 10-Jan-2000 by Hans B?hler
	A bevelline with horizontal and vertical text
	 
	Hans B?hler
	 
	A bevelline control that displays vertical and horizontal text
	
CStatic-derived histogram control [Static Control, CStatic Class, Article, Visual C++] www.codeproject.com 10-Jan-2000 by Alexander Fedorov
	CStatic-derived histogram control
	 
	Alexander Fedorov
	 
	A simple histogram control for displaying data
	
Tip-Static control like [Static Control, Article, Visual C++] www.codeproject.com 10-Jan-2000 by Smile Seo
	Tip-Static control like
	 
	Smile Seo
	 
	A tip-of-the-day control that uses a cool sliding effect to show each 
tip
	
Arrays in C and C++ [Article, Visual C++] cplus.about.com 09-Jan-2000
	09-Jan-2000
	 
	09-Jan-2000
	  
	Arrays in C and C++
	 
	A tutorial on how to use arrays.
	
The Microsoft VC++ Virtual Property feature [C++, MFC, STL, Article, Visual C++] www.codeproject.com 07-Jan-2000 by Jeremiah Talkar
	The Microsoft VC++ Virtual Property feature
	 
	Jeremiah Talkar
	 
	Using the __declspec(property) method to enhance legacy code
	
Selective Offline Browser [Internet, Network, Article, Visual C++] www.codeproject.com 07-Jan-2000 by Rajiv Ramachandran
	Selective Offline Browser
	 
	Rajiv Ramachandran
	 
	A useful application to download only selected files for offline 
browsing
	
MsgHookX ActiveX DLL for Subclassing [ActiveX DLL, Subclassing, Article, Visual Basic] www.vb2themax.com 07-Jan-2000 by Francesco Balena
	MsgHookX ActiveX DLL for Subclassing
	  
	7-Jan-2000
	 
	7-Jan-2000
	 
	Francesco Balena
	 
	The MsgHookEx DLL is an ActiveX component written in VB6, that lets you 
perform safe and efficient subclassing even from within the Visual Basic IDE in 
debug (break mode). This is an improved version of a similar component provided 
with Francesco Balena's Programming Microsoft Visual Basic 6 book. This new 
version adds the support for notification through a secondary interface, and 
the definition of over 300 constants with all the most frequently used Windows 
messages.
	 
	Note: This version of the DLL has been compiled with VB6. If you want 
to distribute it with VB5 applications, remember to add VB6 runtime files.
	 
	Updated: 7/1/00
	
Creating an application with no Taskbar Icon [Document/View, Taskbar, Icon, Article, Visual C++] www.codeproject.com 06-Jan-2000 by Chris Maunder
	Creating an application with no Taskbar Icon
	 
	Chris Maunder
	 
	A simple method to create a main window that does not appear in the 
windows taskbar
	
Multiline Titletips [Control, Article, Visual C++] www.codeproject.com 06-Jan-2000 by Mark Findlay, Chris Maunder
	Multiline Titletips
	 
	Mark Findlay and Chris Maunder
	 
	A class that allows you to display data for a control that is otherwise 
not large enough to display the full text
	
Windows 2000 Junction Points [Windows 2000, Article, Visual C++] www.codeproject.com 06-Jan-2000 by Mike Nordell
	Windows 2000 Junction Points
	 
	Mike Nordell
	 
	Explains how reparse points are used to create filesystem links
	
List Control displaying image thumbnails [List Control, Article, Visual C++] www.codeproject.com 05-Jan-2000 by Stefan Ungureanu
	List Control displaying image thumbnails
	 
	Stefan Ungureanu
	 
	Demonstrates using a list control to display thumbnail views of images
	
Implementing Rulers inside of Splitter Panes [Splitter Window, Article, Visual C++] www.codeproject.com 05-Jan-2000 by Stefan Ungureanu
	Implementing Rulers inside of Splitter Panes
	 
	Stefan Ungureanu
	 
	Using fixed panes to add rulers to your view
	
Toolbar within splitter windows [Splitter Window, Article, Visual C++] www.codeproject.com 05-Jan-2000 by Stefan Ungureanu
	Toolbar within splitter windows
	 
	Stefan Ungureanu
	 
	A simple method that allows a toolbar to be docked inside a splitter 
pane
	
AutoPtr Class [Article, Visual C++] www.earthweb.com 05-Jan-2000 by Dmitry Leonov
	AutoPtrClass
	 
	Dmitry Leonov
	 
	5-Jan-2000
	 
	5-Jan-2000
	 
	The AutoPtrclass is an extension of std::auto_ptrtemplate class from 
the Standard Template Library.
	
basOutlook .... How to send a message using the Outlook Object Model [Mail, Outlook, Object Model, Visual Basic, VB Code Module] www.codeoftheweek.com 04-Jan-2000, no. 112
Requirements

Visual Basic 4.0 32-bit or higher.

You will need to create a Reference to Microsoft Outlook 98
Object Model.  To create this reference for Visual Basic 4 goto
Tools / References.  To create this reference for Visual Basic 5
or 6 goto Project / References. Then select Microsoft Outlook 98
Model.  Outlook 2000 should work the same way.

basOutlook

The basOutlook module contains a single routine that calls
several methods within the Outlook object model.   In the past we
have covered other methods to send email messages (using features
such as SMTP and MAPI).  This one is very simple, but assumes the
user of this software has Outlook installed on their computer.

In a future issue we will expand on this code to show how to send
attachments, use the CC and BCC address fields and other useful
Outlook messaging features.  Send a message to
outlook@codeoftheweek.com if you are interested in seeing more
about this.


Methods

Public Sub OutlookSendMessage(sRecipient As String, sSubject As String, _
                                sMessage As String, _
                                Optional eImportance As OlImportance = 
olImportanceNormal)

sRecipient is the email address you want to send the message to,
such as info@codeoftheweek.com or just "John Doe" (if you are
either running a mail system that will resolve the name or have a
contact added called John Doe).  sSubject is the subject of the
message and sMessage is the content of the message.  sMessage can
contain new line characters and can be pretty much unlimited in
length; although you probably do not want to send a message that
is too long.  eImportance marks the message with one of the
following: olImportanceHigh, olImportanceLow or
olImportanceNormal.  This option is not supported on all mail
systems.


Sample Usage

The below sample shows how to send a message using the
OutlookSendMessage routine.

    OutlookSendMessage "info@codeoftheweek.com", "Order Now!", "Please place 
your order now!"
A Simple Logging Utility in ATL [ATL, Article, Visual C++] www.codeproject.com 04-Jan-2000 by Ashish Dhar
	A Simple Logging Utility in ATL
	 
	Ashish Dhar
	 
	A simple logging utility to help debug your ATL applications
	
Drag and Drop between Tree controls [Treeview, Update, Article, Visual C++] www.codeguru.com 04-Jan-2000 by Vinayak Tadas
	Drag and Drop between Tree controls
	 
	Vinayak Tadas
	 
	Updated source and demo files !!
	
StampVer: Command line version updater [Tool, Update, Article, Visual C++] www.codeguru.com 04-Jan-2000 by Paul Dixon
	StampVer: Command line version updater
	 
	Paul Dixon
	 
	Updated link to newer version of utility
	
MakeDef : Intelligent DEF file Generator for Win32 Apps [Tool, Update, Article, Visual C++] www.codeguru.com 04-Jan-2000 by George Hazan
	MakeDef : Intelligent DEF file Generator for Win32 Apps
	 
	George Hazan
	 
	Corrections made to article describing how to use tool
	
Resource Finder Utility [Tool, Update, Article, Visual C++] www.codeguru.com 04-Jan-2000 by Uwe Philipps
	Resource Finder Utility
	 
	Uwe Philipps
	 
	Version 1.1 posted
	
Template based Registry class with serialization [System, Article, Visual C++] www.codeguru.com 04-Jan-2000 by Frank Melber
	Template based Registry class with serialization
	 
	Frank Melber
	 
	
	
Displaying an Empty Listview Message [Listview, Article, Visual C++] www.codeguru.com 04-Jan-2000 by Mauro Ghini
	Displaying an Empty Listview Message
	 
	Mauro Ghini
	 
	Displays message so that user knows Listview is intentionally empty
	
Web Resources for Developers [Article, Delphi] delphi.about.com 04-Jan-2000
	04-Jan-2000
	 
	04-Jan-2000
	 
	Web Resources for Developers
	 
	Cool, sexy...useful sites to make your programming easier, better, 
faster, happier.
	
SAPrefs: Netscape-like Preferences Dialog [Property Sheet, Dialog, Article, Visual C++] www.codeproject.com 03-Jan-2000 by Chris Losinger
	SAPrefs: Netscape-like Preferences Dialog
	 
	Chris Losinger
	 
	A base class for a prefereneces dialog, similar to that used in Netscape
	
More About Conditional Programming [Article, Visual C++] cplus.about.com 03-Jan-2000
	03-Jan-2000
	 
	03-Jan-2000
	  
	More About Conditional Programming
	 
	A tutorial on nested if statements.
	
Simple Logging Utilily in ATL [ATL, COM, Article, Visual C++] www.codeguru.com 03-Jan-2000 by Ashish Dhar
	Simple Logging Utilily in ATL
	 
	Ashish Dhar
	 
	
	
Connection Points and Asynchronous Calls, Part II (using: Visual C++ 6.0) [Article, Visual C++] www.codeguru.com 03-Jan-2000 by Ashish Dha
	Ashish Dha
	 
	Second installment of Connection Points tutorial
	 
	
	
Enumerating Controls of a Dialog Resource at Runtime [Dialog, Article, Visual C++] www.codeguru.com 03-Jan-2000 by Ty Matthews
	Enumerating Controls of a Dialog Resource at Runtime
	 
	Ty Matthews
	 
	
	
Display Loaded Modules [DLL, Update, Article, Visual C++] www.codeguru.com 03-Jan-2000 by Emmanuel Kartmann
	Display Loaded Modules
	 
	Emmanuel Kartmann
	 
	Much newer version (v 1.10) of popular utility
	
Creating Internet Shortcuts [Internet, Article, Visual C++] www.codeguru.com 03-Jan-2000 by Venu Vemula
	Creating Internet Shortcuts
	 
	Venu Vemula
	 
	Code that creates an Internet shortcut for Windows 9x and NT computers
	
Static LED Control [Control, Article, Visual C++] www.codeguru.com 03-Jan-2000 by Monte Variakojis
	Static LED Control
	 
	Monte Variakojis
	 
	Great for graphical controls !!
	
File Transfer Using CSockets [Network, Article, Visual C++] www.codeguru.com 03-Jan-2000 by Vicken Simonian
	File Transfer Using CSockets
	 
	Vicken Simonian
	 
	Two generic functions (SendFile / GetFile) to ease file transfer with 
Sockets
	
Easy Dynamic Loading in C++ [Dynamic Loading, C++, Encapsulation, Visual C++, Article] C++ Users Journal 01-Jan-2000 by Sasha Gontmakher
	Easy Dynamic Loading in C++
	 
	Sasha Gontmakher
	  
	Many programs today configure themselves on the fly. Dynamic loading 
can really benefit from Encapsulation, to hide tedious details and system 
dependencies.
	
Interval Trees [Article, Visual C++] C++ Users Journal 01-Jan-2000 by Yogi Dandass
	Interval Trees
	 
	Yogi Dandass
	  
	We know that a tree is often a good way to represent an ordered set of 
values. It can also be a good way to order a set of ranges as well.
	
Debugging Component-Based Memory Leaks [Debugging, Memory Leak, Visual C++, Article] C++ Users Journal 01-Jan-2000 by Ernesto Guisado
	Debugging Component-Based Memory Leaks
	 
	Ernesto Guisado
	  
	The best place to catch memory leaks is as close to the source as 
possible.
	
Java Interfaces and Inner Classes [Interface, Inner Class, Multiple Inheritance, C++, Java, Article] C++ Users Journal 01-Jan-2000 by Chuck Allison
	Chuck Allison
	 
	Java Interfaces and Inner Classes
	 
	A Java interface is a weak substitute for Multiple Inheritance in C++, 
but it still manages to do a lot of what needs doing.
	
Replacing Character Arrays with Strings, Part 1 [Character Array, String, Visual C++, Article] C++ Users Journal 01-Jan-2000 by Dan Saks
	Dan Saks
	 
	Replacing Character Arrays with Strings, Part 1
	 
	It is a truism that well-designed library objects are superior to the 
more primitive C data structures. But it still helps to know the costs of 
converting to them.
	
Common Design Mistakes, Part 1 (using: Java) [Article, Design, Java] C++ Users Journal 01-Jan-2000 by Pete Becker
	Pete Becker
	 
	Common Design Mistakes, Part 1
	
Create Your Own Internet Explorer Pluggable Protocols [Internet Explorer, Pluggable Protocol, Internet Protocol, HTTP, FTP, COM, Interface, XML, Article, Delphi] Delphi Developer 01-Jan-2000, vol. 6, no. 1 by Jani Jarvinen
	Create Your Own Internet Explorer Pluggable Protocols
	 
	Jani Jarvinen
	 
	Everybody knows that Internet Explorer supports most of the regular 
Internet Protocols like HTTP and FTP. However, beginning with Internet Explorer 
4.0, the supported protocols can be extended by implementing simple COM 
Interfaces. In this article, Jani Jarvinen shows how to create a custom 
"delphi" protocol that's able to display the contents of a Delphi project file 
using XML.
	
Making Windows Work Using the ShellAPI [ShellAPI, Shell, Article, Delphi] Delphi Developer 01-Jan-2000, vol. 6, no. 1 by David G Parsons
	Making Windows Work Using the ShellAPI
	 
	David G Parsons
	 
	Most likely, you've needed to send an e-mail, launch a Web browser to a 
certain URL, or maybe just open a Word document from your application. Users 
expect their software to be more integrated with other software and more 
Web-enabled than ever before. Of course, there are many ways to do this. You 
can use OLE, DDE, and top-heavy functions such as CreateProcess, with all of 
its associated structures. But thanks to ShellAPI, much of the dirty work has 
been done for you. ShellAPI encapsulates the functionality of the Shell32 
Windows library.
	
Delphi 5 IDE Wizardry: Examining Object Inspector Property Categories [IDE, Object Inspector, Property, Article, Delphi] Delphi Developer 01-Jan-2000, vol. 6, no. 1 by Bob Swart
	Delphi 5 IDE Wizardry: Examining Object Inspector Property Categories
	 
	Bob Swart
	 
	Delphi IDE Wizardry is a column exploring the new features and 
enhancements found in the Delphi 5 IDE. In this and next month's Delphi 
Developer, Bob Swart focuses on the enhanced Object Inspector and Property 
categories. He'll show you how to add your own custom properties to existing 
categories and, next time, how you can even create your own custom categories.
	
Get Zip Functionality for Free [Zip, Component, Article, Delphi] Delphi Developer 01-Jan-2000, vol. 6, no. 1 by Fernando Vicaria
	Get Zip Functionality for Free
	 
	Fernando Vicaria
	 
	Looking for a way to integrate zip and unzip functionality into your 
application on the cheap? Here's the plan--and Fernando Vicaria has even 
wrapped it all up into a neat little Component for you!
	
Revisiting FastStrings [String, Search, Article, Delphi] Delphi Developer 01-Jan-2000, vol. 6, no. 1 by Peter Morris
	Revisiting FastStrings
	 
	Peter Morris
	 
	In the November 1999 issue of Delphi Developer, Peter Morris wrote an 
article titled "Optimizing String Searches in Delphi." He now updates the 
technique he offered with a bug workaround and new routines.
	
Embedded Forms [Embedded Form, Article, Delphi] Delphi Informant 01-Jan-2000, vol. 6, no. 1 by John Simonini
	Embedded Forms
	 
	John Simonini
	 
	Mr Simonini shares a technique for embedding forms as the pages of a 
tabbed notebook-a technique that facilitates discrete business logic, team 
development, memory management, and code reuse.
	
Request Threads [Thread, DCOM, Transaction Processing Monitor, MTS, Tuxedo, Article, Delphi] Delphi Informant 01-Jan-2000, vol. 6, no. 1 by Michael J Leaver
	Request Threads
	 
	Michael J Leaver
	 
	Mr Leaver describes a resource-sharing methodology for Delphi 4/5 
Client/Server Suite using DCOM, and without using Transaction Processing 
Monitors, such as MTS or BEA's Tuxedo.
	
A Multimedia Assembly Line: Part II [Multimedia, Component, Article, Delphi] Delphi Informant 01-Jan-2000, vol. 6, no. 1 by Alan C Moore
	A Multimedia Assembly Line: Part II
	 
	Alan C Moore
	 
	Dr. Moore wraps up his two-part description of how to create a Delphi 
sound expert that builds sound-enabled Components, including a detailed look at 
the code-generating engine.
	
Control Panel Applets [Control Panel, Applet, Article, Delphi] Delphi Informant 01-Jan-2000, vol. 6, no. 1 by Peter J Rosario
	Control Panel Applets
	 
	Peter J Rosario
	 
	Control Panel applets are the small programs that are visible in, and 
run from, Windows Control Panel. Mr Rosario describes why you'd write one, and 
demonstrates how to do it with Delphi.
	
Run-time ActiveX [ActiveX, ActiveX Component, Article, Delphi] Delphi Informant 01-Jan-2000, vol. 6, no. 1 by Ron Loewy
	Run-time ActiveX
	 
	Ron Loewy
	 
	Sure, it's easy to incorporate an ActiveX Component with your Delphi 
application at design time, but Mr Loewy takes it one big step further by 
allowing run-time integration.
	
Dropping Hints: Part II [Hint, Article, Delphi] Delphi Informant 01-Jan-2000, vol. 6, no. 1 by Motty Adler
	Dropping Hints: Part II
	 
	Motty Adler
	 
	From an independent hint window, to a complete sample application, Mr 
Adler concludes his series regarding everything you've always wanted to know 
about those small, yellow message boxes.
	
Multiple Inheritance: In Delphi? [Multiple Inheritance, Inheritance, Article, Delphi] Delphi Informant 01-Jan-2000, vol. 6, no. 1 by Alfred Lopez
	Multiple Inheritance: In Delphi?
	 
	Alfred Lopez
	 
	Regardless of how you feel about multiple inheritance (MI), Mr Lopez's 
implementation of MI in Delphi, which "borrows" some mechanisms from Eiffel, 
makes for interesting reading.
	
Use AppCenter Server or COM And MTS for Load Balancing Your Component Servers [AppCenter Server, COM, MTS, Load Balancing, Component Server, Visual C++, Article] Microsoft Systems Journal 01-Jan-2000, vol. 15, no. 1 by Timothy Ewald
	Use AppCenter Server or COM And MTS for Load Balancing Your Component 
Servers
	 
	Of all the servers in your cluster, the one that is the least busy 
should respond to a client component request. You can load balance the use of 
your COM objects when Microsoft AppCenter Server is released­-or you can get 
started today with COM and MTS.
	 
	Timothy Ewald
	
Visual Basic Design Time Techniques to Prevent Runtime Version Conflicts [Interface Definition Language, Visual Basic, Article] Microsoft Systems Journal 01-Jan-2000, vol. 15, no. 1 by Brian A Randell, Ted Pattison
	Visual Basic Design Time Techniques to Prevent Runtime Version Conflicts
	 
	Compatibility issues can be a nightmare when components written in 
different versions of Visual Basic won’t work together. Understanding the 
Visual Basic compatibility scheme and Interface Definition Language will help 
you cope.
	 
	Brian A Randell
	 and 
	Ted Pattison
	
Active Directory Doesn’t Just Manage Network Resources, It Can Manage Your Data Too [Active Directory, Network Resource, Visual C++, Article] Microsoft Systems Journal 01-Jan-2000, vol. 15, no. 1 by Shawn Wildermuth
	Active Directory Doesn’t Just Manage Network Resources, It Can Manage 
Your Data Too
	 
	You thought Active Directory services was just for managing network 
resources. But in reality you can use Active Directory services to store static 
data in a hierarchical manner, just like the files or folders on your hard 
drive.
	 
	Shawn Wildermuth
	
Common problem of accessing Data Access Objects from C++ with MFC [Data Access Object, C++, MFC, Visual C++, Article] Microsoft Systems Journal 01-Jan-2000, vol. 15, no. 1 by Paul DiLascia
	Common problem of accessing Data Access Objects from C++ with MFC
	 
	Paul Dilascia describes addresses a common problem of accessing Data 
Access Objects from C++ with MFC.
	 
	Paul DiLascia
	
How to use CHtmlView to display HTML in a Dialog [CHTMLView Class, HTML, Dialog, MFC, Visual C++, Article] Microsoft Systems Journal 01-Jan-2000, vol. 15, no. 1 by Paul DiLascia
	How to use CHtmlView to display HTML in a Dialog
	 
	Paul Dilascia describes how to use CHtmlView to display HTML in a dialog
	 
	Paul DiLascia
	
Four levels of Opportunistic Locks that Windows 2000 supports [Opportunistic Lock, Windows NT, Article] Microsoft Systems Journal 01-Jan-2000, vol. 15, no. 1 by Jeffrey Richter
	Four levels of Opportunistic Locks that Windows 2000 supports
	 
	Jeffrey Richter introduces the four levels of opportunistic locks that 
Windows 2000 supports.
	 
	Jeffrey Richter
	
How to extend WinDBG with custom commands (using: Visual C++ 6.0) [WinDBG, Debugging, Visual C++, Article] Microsoft Systems Journal 01-Jan-2000, vol. 15, no. 1 by John Robbins
	How to extend WinDBG with custom commands
	 
	John Robbins completes last month's discussion on WinDBG by showing how 
to extend WinDBG with custom commands, called WinDBG extensions.
	 
	John Robbins
	
XML as a Component Technology (using: Visual C++ 6.0) [XML, Component, Visual C++, Article] Microsoft Systems Journal 01-Jan-2000, vol. 15, no. 1 by Don Box
	XML as a Component Technology
	 
	Don Box discusses the emerging use of XML as a component technology.
	 
	Don Box
	
Find and Convert a Drive Letter [Drive, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2000, vol. 10, no. 1 by Karl E Peterson
	Find and Convert a Drive Letter
	 
	Karl E Peterson
	  
	Learn the right techniques for finding drive letters and metafile 
handles.
	
Calling Uncallable DLL Routines [DLL, VBA, C, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2000, vol. 10, no. 1 by R Greg Dudgeon
	Calling Uncallable DLL Routines
	 
	R Greg Dudgeon
	  
	Writing DLLs that VBA can access is tricky. Here's how to access C code 
that you can't convert to VB.
	
Control Your Option Buttons [Control, Statement, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2000, vol. 10, no. 1 by Dan Fergus
	Control Your Option Buttons
	 
	Dan Fergus
	 
	Avoid endless For...Next and Select statements by building a simple 
control that allows you to create custom groups of option buttons.
	
Manage Arrays Like a Pro [Array, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2000, vol. 10, no. 1 by Ron Schwarz
	Manage Arrays Like a Pro
	 
	Ron Schwarz
	  
	Arrays are one of the most basic and useful mechanisms for handling 
data.
	
Extend T-SQL With COM [T-SQL, COM, Automation, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2000, vol. 10, no. 1 by Andrew Holliday
	Extend T-SQL With COM
	 
	Andrew Holliday
	  
	Learn how to use T-SQL's native OLE Automation APIs to call out to COM 
objects.
	
Debug Stored Procedures [Stored Procedure, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2000, vol. 10, no. 1 by Dianne Siebold
	Debug Stored Procedures
	 
	Dianne Siebold
	  
	Now you can create and modify stored procedures and debug the - without 
ever leaving Visual Basic.
	
Evolve Simple Solutions to Complex Problems [Algorithm, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2000, vol. 10, no. 1 by Jonny Anderson
	Evolve Simple Solutions to Complex Problems
	 
	Jonny Anderson
	  
	Simple, iterative Algorithms modeled on genetics enable you to solve 
challenging multiconstraint problems, such as finding the most efficient route 
for a given situation.
	
FTPServer/X [FTP, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2000, vol. 10, no. 1 by Eric Smith
	FTPServer/X
	 
	Eric Smith
	 
	Set up FTP servers easily
	
Create an AutoBackup App [Backup, File, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2000, vol. 10, no. 1 by Chris Barlow
	Create an AutoBackup App
	 
	Chris Barlow
	  
	Learn how to save your files to a backup folder automatically.
	
Design Docu-Centric Apps [Index Server, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2000, vol. 10, no. 1 by Edward L Chicca
	Design Docu-Centric Apps
	 
	Edward L Chicca
	  
	Leverage the power of Index Server to give users instant access to 
documents over your intranet.
	
Making Use of XML [XML, Web, Metadata, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2000, vol. 10, no. 1 by Nachi Sendowski
	Making Use of XML
	 
	Nachi Sendowski
	  
	The secret to scalable Web applications lies in managing object state 
without maintaining user sessions. Use XML to hold Metadata for restoring 
object identity and state.
	
Pass Data Right, Part 2 [XML, Variant, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2000, vol. 10, no. 1 by Deborah Kurata
	Pass Data Right, Part 2
	 
	Deborah Kurata
	  
	Learn how to pass data between server and client using XML or Variant 
arrays.
	
SQL Service - Create Powerful Queries [SQL Services, Query, Article, Visual Basic] Visual Basic Programmer's Journal 01-Jan-2000, vol. 10, no. 1 by Dianne Siebold
	SQL Service - Create Powerful Queries
	 
	Dianne Siebold
	  
	Combining SQL Server's simple aggregate functions appropriately can 
help you create powerful, complex queries that are ideal for reports that 
require summary information.
	
GDI Helper Classes [GDI, Class, C++, Device Context, MFC, Article, Visual C++] Windows Developer's Journal 01-Jan-2000, vol. 11, no. 1 by Giovanni Bavestrelli
	GDI Helper Classes
	 
	Giovanni Bavestrelli
	  
	Whether you use MFC or straight C++, there’s a lot of repetitive GDI 
work that can be automated. These classes simplify creating various GDI objects 
(including fonts) and automatically handle restoring Device Contexts to their 
previous states.
	
Programmatic Network Card Installation [Network, NIC, Article, Visual C++] Windows Developer's Journal 01-Jan-2000, vol. 11, no. 1 by Nickoletta Athanassopoulou, Simon D Hughes
	Programmatic Network Card Installation
	 
	Nickoletta Athanassopoulou
	 and 
	Simon D Hughes
	  
	Administrators have to use the network control panel applet to install 
network components, but it turns out there’s a DLL with an undocumented API 
that is doing the real work. To demonstrate, this article includes code that 
directly installs an NE2000 NIC.
	
A Print Monitor Setup Utility [Monitor, Printer, Article, Visual C++] Windows Developer's Journal 01-Jan-2000, vol. 11, no. 1 by Zuoliu Ding
	A Print Monitor Setup Utility
	 
	Zuoliu Ding
	  
	If you start writing a print monitor, you’ll quickly get tired of the 
steps required to install and uninstall it. Here’s some reusable code to 
automate the task.
	
Understanding NT: Construction of a GINA that attempts to replace the default GINA [GINA, Article, Visual C++] Windows Developer's Journal 01-Jan-2000, vol. 11, no. 1 by Paula Tomlinson
	Understanding NT: Construction of a GINA that attempts to replace the 
default GINA
	 
	Paula Tomlinson
	  
	Previous columns described the basics of a GINA DLL, which lets you 
insert your own code into NT’s logon and authentication process. This column 
begins the construction of a GINA that attempts to replace the default GINA, 
showing how to handle the user interface of the logon process with custom code.
	
A Reusable File Enumeration Function [File, Enumerating, FindFirstFile(), FindNextFile(), Article, Visual C++] Windows Developer's Journal 01-Jan-2000, vol. 11, no. 1 by Ron Burk
	A Reusable File Enumeration Function
	 
	Ron Burk
	 
	You can use FindFirstFile() and FindNextFile() to traverse directories, 
but there are lots of special cases, such as '.', '..', and the root directory. 
This function hides the hard parts for you.
	
Profile Routines for Easy Registry Access [Registry, GetProfileString(), Article, Visual C++] Windows Developer's Journal 01-Jan-2000, vol. 11, no. 1 by Paula Tomlinson
	Profile Routines for Easy Registry Access
	 
	Paula Tomlinson
	 
	You can sometimes use those old .ini file routines, such as 
GetProfileString(), to access the registry with less code and hassle than the 
'real' registry routines require.
	
Adding Window Functionality to Non-UI Objects [Message, Class, Article, Visual C++] Windows Developer's Journal 01-Jan-2000, vol. 11, no. 1 by Giovanni Bavestrelli
	Adding Window Functionality to Non-UI Objects
	 
	Giovanni Bavestrelli
	 
	Sometimes you want to use window Messages (e.g., WM_TIMER) even though 
there’s no visible window; this reusable Class handles the grunt work of 
providing a hidden window for such cases.
	
A User's View of Object-Oriented Modules [Object-Oriented, Module, Article, Perl] The Perl Journal 01-Jan-2000, vol. 5, no. 1 by Sean M Burke
	A User's View of Object-Oriented Modules
	 
	Sean M Burke
	
Napster [Napster, Article, Perl] The Perl Journal 01-Jan-2000, vol. 5, no. 1 by Lincoln D Stein
	Napster
	 
	Lincoln D Stein
	
Multiple Dispatch in Perl [Article, Perl] The Perl Journal 01-Jan-2000, vol. 5, no. 1 by Damian Conway
	Multiple Dispatch in Perl
	 
	Damian Conway
	
HTML::Parser [HTML::Parser, Article, Perl] The Perl Journal 01-Jan-2000, vol. 5, no. 1 by Ken MacFarlane
	HTML::Parser
	 
	Ken MacFarlane
	
Beyond Hardcoded CGI with HTML::Mason [CGI, HTML::Mason, Article, Perl] The Perl Journal 01-Jan-2000, vol. 5, no. 1 by Joe Johnston
	Beyond Hardcoded CGI with HTML::Mason
	 
	Joe Johnston
	
Home Automation with MisterHouse [Article, Perl] The Perl Journal 01-Jan-2000, vol. 5, no. 1 by Bruce Winter
	Home Automation with MisterHouse
	 
	Bruce Winter
	
Home Automation: The X10 Nitty-Gritty [Article, Perl] The Perl Journal 01-Jan-2000, vol. 5, no. 1 by Bill Birthisel
	Home Automation: The X10 Nitty-Gritty
	 
	Bill Birthisel
	
A Day in the Life of comp.lang.perl.misc [Article, Perl] The Perl Journal 01-Jan-2000, vol. 5, no. 1 by Clinton Pierce
	A Day in the Life of comp.lang.perl.misc
	 
	Clinton Pierce
	
Perl and Morphology [Morphology, Article, Perl] The Perl Journal 01-Jan-2000, vol. 5, no. 1 by Khurshid Ahmad, Duncan C White
	Perl and Morphology
	 
	Khurshid Ahmad and Duncan C White
	
Tray Calendar [Date, Time, System Tray, Article, Visual C++] www.codeproject.com 01-Jan-2000 by Chris Maunder
	Tray Calendar
	 
	Chris Maunder
	 
	A simple app that places a date in the System Tray
	
MacPerl: There's More than One Way to Do it [MacPerl, awk, shell, Article, Visual C++] www.perlmonth.com 01-Jan-2000 by Vicki Brown
	MacPerl: There's More than One Way to Do it
	 
	A friend had been telling me about Perl for 5 years or more. Given that 
awk and shell did everything I needed (or so I thought :-), I had been 
listening with only half an ear. But now, awk and shell weren't readily 
available on my desktop. I had heard that there was a Macintosh port of Perl. 
Learning Perl could do my resume no harm. Perhaps Perl was the answer.
	
Server Setup [Server, Dynamic Web Page, Article, Visual C++] www.perlmonth.com 01-Jan-2000 by Paul Vining
	Server Setup
	 
	This column will contain approaches and tips to create Dynamic Web 
Pages. I will provide snippets of code and tell about my approaches to various 
problems that I have encountered. If you choose to use different tools on your 
server, my explanations should give you enough information to go on. Since this 
is the first column, I will start off by explaining how to get to where I 
started off. Everything that I will discuss will work on both WinXX and linux 
platforms.
	
Learning From Docs [Article, Visual C++] www.perlmonth.com 01-Jan-2000 by Dave Cross
	Learning From Docs
	 
	If you're reading this edition of PerlMonth then it's a fair bet that 
you are already aware of Perl's usefulness, flexibility and just all-round 
coolness. It is, however, a little more likely that you are unaware that within 
its distribution, Perl contains what is probably the best set of free 
documentation for any software currently available. In this article I want to 
introduce those of you who are less familar with the Perl documentation to the 
huge amount of information that it contains and how it can almost certainly 
make your coding life easier.
	
Parsing Command Line Options with GetOpt:: [Parsing, Command Line, GetOpt, Article, Visual C++] www.perlmonth.com 01-Jan-2000 by Steven McDougall
	Parsing Command Line Options with GetOpt::
	 
	Parsing the command line is a problem. The problem isn't that it is so 
hard, but rather that it is so easy: for many programs, it can be done in under 
20 lines of code. Because parsing the command line seems easy, it is often not 
identified as a distinct function of the program. It never gets a functional 
specification, or a design, or even the considered attention of the programmer. 
This leads to many bad things. Steven shows you how to avoid them.
	
MacPerl Oddities: if ($^O eq 'MacOS') [MacPerl, Article, Visual C++] www.perlmonth.com 01-Feb-2000 by Vicki Brown
	MacPerl Oddities: if ($^O eq 'MacOS')
	 
	In many ways, MacPerl is no different from "regular" (that is, Unix) 
Perl. Much of the functionality you would expect to find is there. Most of the 
books that are available for Perl apply to MacPerl; many of the available 
scripts run in both environments. In short, MacPerl is "real" Perl and it is 
quite possible to write scripts which will function in both Mac and Unix 
environments. Understanding the differences may also help you to write programs 
that are more portable to other platforms. (After all, there's that "Redmond 
operating system" that isn't Unix or Linux either :-)
	
Creating Dynamic Pages With Embperl [Dynamic Page, Embperl, Article, Visual C++] www.perlmonth.com 01-Feb-2000 by Paul Vining
	Creating Dynamic Pages With Embperl
	 
	Let's say that you just revamped a website and you have the most 
amazing home page that uses all the latest technologies, but you want to allow 
older browsers to still see the older version of the site. You could use 
javascript and basically generate the page that the browser needs. This would 
solve the problem but it could get real messy depending on the complexity of 
the site. The cleanest and easiest to maintain solution is to use Embperl.
	
Modules, References, Data Structures and Objects [Module, Reference, Data Structure, Object, Article, Visual C++] www.perlmonth.com 01-Feb-2000 by Dave Cross
	Modules, References, Data Structures and Objects
	 
	In last month's column I gave you a brief overview of the absolutely 
essential parts of the Perl documentation set. This month I am going to go a 
little deeper into Perl and discuss the parts of the documentation that cover 
modules, references, and complex data structures. At the end I'll also touch on 
Perl objects. There are less files to cover this month so I'll be able to go 
into a little more detail on each one.
	
Finding your files with File::Find [File::Find, Article, Visual C++] www.perlmonth.com 01-Feb-2000 by Steven McDougall
	Finding your files with File::Find
	 
	Learn the uses of File::Find. Learn how to operate on some files in a 
hierarchy but not others. Of course you can use a command like find(1), but you 
will have to tackle the drawbacks that accompany find(1). Perl is an obvious 
language for writing such a program, and once you start coding Perl, you may 
wonder if you really need find(1) at all. After all, Perl supports recursion. 
How hard could it be?
	
An application with Perl/Tk: tkgnuplot [Perl/Tk, GUI, gnuplot, Article, Visual C++] www.perlmonth.com 01-Feb-2000 by Slaven Rezic
	An application with Perl/Tk: tkgnuplot
	 
	After Stephen O. Lidie's introduction to Perl/Tk in the previous issue 
of PerlMonth, how about a simple and small application for this issue. We will 
explore coding a GUI wrapper for gnuplot. So here we go. The first version of 
tkgnuplot is very simple. It only offers an entry field to input the function 
to plot and two buttons for starting the plot and quitting the program. So here 
it is:
	
What is mod_perl? [mod_perl, Apache, CGI, Article, Visual C++] www.perlmonth.com 01-Feb-2000 by Stas Bekman
	What is mod_perl?
	 
	The Apache/Perl integration project brings together the full power of 
the Perl programming language and the Apache HTTP server. With mod_perl it is 
possible to write Apache modules entirely in Perl, this lets you easily do 
things that are more difficult or impossible in regular CGI programs, such as 
running sub requests for example. In addition, the persistent interpreter 
embedded in the server saves the overhead of starting an external perl 
interpreter, the penalty of Perl start-up time. Another important feature is 
code caching, the modules and scripts are being loaded and compiled only once, 
then for the rest of the server's life the scripts are being served from the 
cache, thus server spends its time only to run the already loaded and compiled 
code, which is very fast.
	
Perl: It's not just for Unix anymore [Unix, Article, Visual C++] www.perlmonth.com 01-Mar-2000 by Vicki Brown
	Perl: It's not just for Unix anymore
	 
	Most Perl programming is done on Unix systems. This isn't all that 
surprising; Perl originated in the Unix community and draws many of its 
features from Unix tools such as awk, sed, and the Bourne shell. However, what 
is perhaps more surprising is how well Perl works on systems that bear little 
resemblance to Unix, such as Mac OS.
	
Using Databases with Embperl [Database, Embperl, Internet, MySQL, DBI/DBD, Article, Visual C++] www.perlmonth.com 01-Mar-2000 by Paul Vining
	Using Databases with Embperl
	 
	Almost every major site on the Internet today uses some form of 
database for content. I will discuss how to implement database content using 
Embperl. I have chosen MySQL as a database for its speed. I will be using 
DBI/DBD, so this solution is easily ported to other databases if you have any 
preference.
	
Writing Plain Old Documentation [Plain Old Documentation, POD, Article, Visual C++] www.perlmonth.com 01-Mar-2000 by Dave Cross
	Writing Plain Old Documentation
	 
	As I've mentioned in passing in previous columns, Perl documentation is 
usually written using Plain Old Documentation (or POD). POD is a simple markup 
language that aims to make it a simple as possible for programmers to add 
documentation to their programs and modules. As you'd expect, the standard Perl 
documentation set contains a file that discusses POD in some detail. If you 
want to jump straight into that, try typing . . .
	
Representing Sets in Perl [Set, Article, Visual C++] www.perlmonth.com 01-Mar-2000 by Steven McDougall
	Representing Sets in Perl
	 
	Mathematicians describe sets; programmers have to implement them. To 
implement a set, we have to find a way to represent it on a computer, and then 
write code to carry out set operations on that representation. Different 
representations may be more or less difficult to operate on, be well or poorly 
suited to a given universe, and provide different performance characteristics.
	
Perl/Tk Menus [Perl/Tk, Menu, Article, Visual C++] www.perlmonth.com 01-Mar-2000 by Slaven Rezic
	Perl/Tk Menus
	 
	Menus are a very common element in GUIs. There are some ways for 
creating menus in Perl/Tk, which probably caused some confusion, so I will try 
to clarify this a little. This article will show how to create menus with the 
old way, the new way, and the Perlish way.
	
mod_perl Strategy and Implementation - Part 1 [mod_perl, Article, Visual C++] www.perlmonth.com 01-Mar-2000 by Stas Bekman
	mod_perl Strategy and Implementation - Part 1
	 
	The article starts with an overvi