HDTenEightyP/NetNews huggingface dataset:
From: mills@athena.lkg.dec.com (George Mills)
Newsgroups: comp.os.ms-windows.programmer.tools
Subject: Re: Trying to read in 256 color .BMP file
Date: 13 Sep 92 00:48:46 GMT
Distribution: usa


If some sharp windows programmer could tell me what I'm doing wrong here
it would be greatly appreciated.

I'm using Turbo C++ for windows and this is actually a derivative of
their example. If someone could email some of the SDK examples of reading
in a .BMP that would be very helpful. The function reads in the bits of
a .BMP and trys to "set" them into an existing DIB.

Should I create the secondary DIB and do a GETDIBITS and then set them
in the backing store DIB (this seemed redundant since I already have
the "bits" directly from the .BMP.

BOOL TMyWindow::OpenDIB(int TheFile)
   {
   WORD bitCount;
   WORD size;
   long longWidth;
   LPSTR BitsPtr;
   BITMAPINFO *BitmapInfo;
   HBITMAP BitsHandle;
   DWORD NewPixelWidth , NewPixelHeight;
   BITMAPFILEHEADER BitmapFileHeader;
   int i;
   
   /* read header stuff of .bmp */

   _llseek(TheFile, 0, 0);
   _lread(TheFile, (LPSTR)&BitmapFileHeader, sizeof(BitmapFileHeader));
   
   _llseek(TheFile, 28, 0);
   _lread(TheFile, (LPSTR)&bitCount, sizeof(bitCount));
   
   if (!(bitCount <= 8)) return FALSE;
   
   size = sizeof(BITMAPINFOHEADER) + ((1 << bitCount) * sizeof(RGBQUAD));
   BitmapInfo = (BITMAPINFO *)new char[size];
   
   _llseek(TheFile, sizeof(BITMAPFILEHEADER), 0);
   _lread(TheFile, (LPSTR)BitmapInfo, size);
   
   /* load color add the .BMP colors to the palette */

   for (i=0;i<(1<<bitCount);i++) LoadColor(
   BitmapInfo->bmiColors[i].rgbRed,
   BitmapInfo->bmiColors[i].rgbGreen,
   BitmapInfo->bmiColors[i].rgbBlue);

   NewPixelWidth = BitmapInfo->bmiHeader.biWidth;
   NewPixelHeight = BitmapInfo->bmiHeader.biHeight;
   
   longWidth = (((NewPixelWidth * bitCount) + 31)/32) * 4;
   
   BitmapInfo->bmiHeader.biSizeImage = longWidth * NewPixelHeight;
   
   GlobalCompact(-1);
   
   BitsHandle = (HBITMAP)GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, BitmapInfo->bmiHeader.biSizeImage);
   if (!BitsHandle)
      {
      delete BitmapInfo;
      return FALSE;
      }
   
   /* read bits from .BMP into Bitshandle */

   GetBitmapData(TheFile, BitsHandle, BitmapInfo->bmiHeader.biSizeImage);
   
   BitsPtr = (LPSTR)GlobalLock((HGLOBAL)BitsHandle);
   
   ScreenDC = GetDC(0);
   MemDC = CreateCompatibleDC(ScreenDC);
   OldObject = SelectObject(MemDC, MemoryBitMap);
   OldPalette = SelectPalette(MemDC, ThePalette, FALSE);
   RealizePalette(MemDC);
   
   /*
   This gets nothing, If I do this to ScreenDC it works fine (I get 256 image),
   but I want it in my backing store MemDC also a 256 DIB which works fine.
   */

   SetDIBitsToDevice(MemDC,
      0,
      0,
      NewPixelWidth,
      NewPixelHeight, 0, 0, 0, NewPixelHeight, BitsPtr, BitmapInfo,
      DIB_RGB_COLORS);

   ReleaseDC(0, ScreenDC);
   
   GlobalUnlock(BitsHandle);
   GlobalFree(BitsHandle);

   delete BitmapInfo;

   SelectPalette(MemDC, OldPalette, FALSE);
   SelectObject(MemDC, OldObject);
   DeleteDC(MemDC);
   
   return TRUE;
   }
From: cparker@centerline.com (Charles Parker)
Newsgroups: comp.os.ms-windows.programmer.tools
Subject: Re: Error 5 with Borland C++ and OWL
Date: 14 Sep 1992 16:11:50 GMT
Organization: CenterLine Software
Distribution: world
Reply-To: cparker@centerline.com
NNTP-Posting-Host: 140.239.2.37

In article 20033@athena.mit.edu, yev_g@athena.mit.edu (Yevgeny Gurevich) writes:
>In article <1992Sep13.065343.25286@silogic.uucp> markd@silogic.uucp (Mark C. DiVecchio (K3FWT)) writes:
>>
>
>>When I run it by double clicking on the program name using the
>>File Manager, it won't put up the dialog box on exiting but rather
>>gets a Error 5.
>>
>
>You're right in thinking that your application needs to access
>BWCC.DLL. >yev_g@athena.mit.edu
>500 Memorial Drive, Cambridge, MA.  [ Yevgeny Gurevich ]

While it is possible that not having BWCC.DLL loaded is the source
of the problem, my experience has been that apps that have the BWCC 
problem manifest the symptom of simply never appearing on the screen,
like you double-click on them and nothing happens.

BTW, to load BWCC.DLL, all you do is make sure to link app w/ BWCC.LIB,
#include <bwcc.h> and call BWCCGetVersion() at the beginning of the
program (myTApplication::InitMainWindow() is the standard place)

but I was going to say that the error -5 usually happens when the
program tries to load a resource (such as a dialog box) and fails. This
could happen if you had created an external binary resource file for
the dialog box. In this case, if you did not start up the program in
the directory where this resource was located, (quite posssible that
FileManager does not do this) then a load of the resource would fail,
resulting in the error -5. Hope it helps.

---
---------------------------------------------------------
                                       cyberspace
momma, don't let yer children grow up to be ^ cowboys ...
---------------------------------------------------------
From: sg6934331@ntuvax.ntu.ac.sg
Newsgroups: comp.os.ms-windows.programmer.tools
Subject: Re: Trying to read in 256 color .BMP file
Date: 8 Sep 92 08:06:45 GMT
Distribution: usa
Organization: Nanyang Technological University - Singapore

In article <mills.715656976@dialup.athena.lkg.dec.com>, mills@athena.lkg.dec.com (George Mills) writes:
> I have application that I've been working on for a while that uses NO
> palettes. It can read and write 16 color .BMPs fine. Now I'm adding palattes
> so that the application can handle 256 color .BMPs. I have the display working
> fine and the "paint" routines etc. I can read the .BMP in, add it's colors
> to my palette and "directly" send it to the screen with SetDIBitsToDevice.
> Sending to the screen directly was only a sanity check. I really want to
> copy it to a particular location within the backing-store bitmap. If I bitblt
> it into the backing store I only get 16 colors.
> 
> What is the proper procedure for copying a small DIB into a larger one
> and keeping the palettes straight. I've tried using 
> 
> BitBlt (only 16 colors, not surprised)
> SetDIBIts (some thing show up, compressed into a couple scan lines)
> SetDIBitsToDevice (works directly to screen, nothing shows copying to DIB) 
> StretchDIB (same as above)
> 
> To add the colors to the palette I loop through .bmicolors[0..n] and add
> them if not already in the palette.
The code to read 256 bmp file is provided in Microsoft Windows SDK.
Newsgroups: comp.os.ms-windows.programmer.tools
From: ggh@cbnewsl.cb.att.com (gerald.g.heit)
Subject: IS IT WINDOWS, OWL, OR ME?
Organization: AT&T
Date: Tue, 15 Sep 1992 00:15:26 GMT
Keywords: OWL Windows Borland BCW


I am writing a windows app using BCW 3.1 and OWL and have
discovered a minor bug, but I don't know what's at fault.
I believe it's probably an OWL oversight, but then I'm fairly
new to OWL, Windows and C++ as my experience is in C,
UNIX, and OpenWindows.

My app uses a resource'd dialog for the main window and has
a multiline edit control, TEdit, that I like to come up as read only.
Then the user may click a radio button to make it fully
editable (and click again for readonly, etc.).
I experimented with TEdit and could not find a way to
merely toggle readonly on and off as I would have liked, so
I settled on a solution of having two TEdit's, one readonly
and one editable which I then HIDE and SHOW and copy text and
selections between upon clicking the radio button.
To accomplish this within my resource file,
I have declared two nearly identical edit controls of which
the only difference is that one was 3.1 readonly.

This seemed to work well until I noticed that my edit control
was not getting repainted correctly.  Whenever I had a window
over my dialog and brought my dialog back to the front, the
edit control's text was not showing up.  It was still there because
I could select it and it would show up again.  Neither control
was getting repainted or redrawn in this situation.  Upon
changing the controls' text, etc., they were fine.

Not wanting to do any painting myself, I was at my wits end as to
why this was happening and after nearly
a whole day of trying various things
and even resorting to previously unsuccessful experiments with
making TEdit readable and not.
I finally found that by merely reversing the order of the
edit control declarations in my RC file fixed the problem.
I had the readonly edit control declared first, with the editable
edit control immediately after.
Putting the editable one first, works great!
Is this an ignorant fix or am I ignorant for trying to do
something like this in the first place (AHEM, be nice)?

For all of the Windows, OWL, and/or BCW experts out there:

1)  Is the order in the RC file supposed to be significant
    in this type of situation?

2)  Can I somehow merely toggle the read only status of a TEdit?
	If so, how?  If not, is this a blatent oversight on
	Borland's part to get 3.1 out the door?

3)  Has anyone else done something similar?
	Again, how?

4)  While I am reasonably happy with BCW 3.1 and OWL's power, speed,
    and level of abstraction, I find Borland's documentation
    to be severely lacking.  It seems to be geared to the simple
    basics and covers mostly "frequently used" options and such.
    I would like a comprehensive OWL/Windows
    reference.  Does anyone know of such a thing, preferably
    for 3.1?

Thank You.

--------------------------------------------------------
Jerry Heit
AT&T Bell Laboratories
ggh@cbnewsl.att.com
All opinions expressed here are mine.
From: axs9017@hertz.njit.edu (Alexander Shinkar)
Newsgroups: comp.os.ms-windows.programmer.tools
Subject: Edit Controll in Listbox???
Summary: Edit in a listbox.
Keywords: edit;listbox
Date: 6 Sep 92 16:28:28 GMT
Organization: New Jersey Institute of Technology, Newark, N.J.

Does any one out there know how to get edit controlls in to list box??
the info would be greatly appreciated
Thanks in advance..
I am using BCC 3.0, and OWL
Alex
axs9017@hertz.njit.edu
Newsgroups: comp.os.ms-windows.programmer.tools
From: axs9017@hertz.njit.edu (Alexander Shinkar)
Newsgroups: comp.os.ms-windows.programmer.tools
Subject: ListBoxes; Windows Calendar
Summary: Pass data between 2 listboxes; keep track of appointments (OWL)
Date: 5 Sep 92 02:08:36 GMT
Organization: New Jersey Institute of Technology, Newark, N.J.
Originator: axs9017@hertz.njit.edu

Question,Question,Question... x 2

Im working with BC++ and OWL.
1)
     I need to have 2 list boxes, the user could select from the
left list box, and the selected item will appear in the right
list box (Sort of like selecting printers in windows setup)
The problem that I have, is setting up the 2 listboxes..
does anyone have a slice of code that will show me how to
create 2 listboxes that transfer data between them??(USING OWL)

2)
     I need an idea on how the calendar program in windows works. 
Specifically, how does it keep track of appointments, and then
notifies the user... Is there a scheduler in windows that I can 
use to notify the user of all the appointments he/she has.
I was thinking of spawning a process that whould continually
run through a file, and notify the user if there is an appointment
at this time.

An answer to any of the questions would be greatly appreciated.
Thanks in advance
Alex

axs9017@hertz.njit.edu
Newsgroups: comp.os.ms-windows.programmer.tools
From: kervel@cs.utwente.nl (Rinie Kervel)
Subject: Re: Revolution or madness??
Organization: University of Twente, Dept. of Computer Science
Date: Tue, 15 Sep 1992 22:00:05 GMT



>	Revolution in Parsing ?? (C) August 17, 1992 Rinie Kervel
>	e-mail: kervel@cs.utwente.nl
		
>Either I am insane or I have uncovered a flaw in compiler theory.
>As a result I have devised a new parsing method that has it all:

Ok, I'll add a little teaser:

'The Book' [Aho,Sethi & Ullman] says:

	you need regular expressions and DFA for scanning

Many implementators say:

	That's way too slow for such a simple job:
		strings are characters enclosed in ".." 's
			
		identifiers are letters followed by letters or digits
	It's easily to handcoded.

'The Book' says:
	You need trees for parsing (page 28-29)

I say:
	They are clumsy and expensive because:
		They use a lot of memory,
		can only be walked sequentially,
		you lose the overview (and get a lot of bugs)

	Consider how you answer these questions when looking at the code,
	and how you code this in the parser:

		How many times is this variable used ?
		How many returns, gotos etc.. does this function have ?
		Are there 'return;' and return <value> statements ?
		How many parameters does this function call have ?

	I claim to do it simpler.
	
Please answer by e-mail:

	kervel@cs.utwente.nl

or write to (please announce through e-mail):

	Rinie Kervel
	Campuslaan 27-206
	NL 7522 NC Enschede
	Netherlands
Newsgroups: comp.os.ms-windows.programmer.tools
From: trodgers@nmsu.edu (Thomas Rodgers)
Subject: Re: Borland C++ with Protogen or AF?
Organization: NMSU Computer Science
Date: Tue, 8 Sep 1992 02:55:52 GMT

I just got ProtoGen, but I am still waiting for my upgrade to BC++3.1&AF.
My Initial feelings regarding ProtoGen however, are somewhat mixed.
The main problem I have with it, is that I would like to
use the Borland Custom Controls and my own custom buttons in my
applications, but ProtoGen only seems to pick up the buttons defined
by Borland in their DLL.  Presumably once I actually try to generate
an App, the dialogs will load the correct Button resources, but
ProtoGen does not!  As far as prototyping an application quickly, it
seems to work pretty well.  

In general, I think if I had to choose between ProtoGen and the
Application Frameworks, I would take the Application Frameworks.  I
think they'll save you more coding in the long run than will ProtoGen
by itself will.

Newsgroups: comp.os.ms-windows.programmer.tools
From: eivind@idt.unit.no (Eivind Throndsen)
Subject: Experiences using Gupta SQL Windows for complex projects wanted
Summary: Your opinions & experiences are welcome
Originator: eivind@boek
Keywords: SQL, application development, experiences with
Organization: Div. of CS & Telematics, Norwegian Institute of Technology
Date: Tue, 15 Sep 92 11:39:21 GMT


At the place I work, we're currently evaluating SQL Windows as a tool for
application development. It does not look too bad so far, but as anybody
can tell you, the bugs & problems don't start showing before the project
deadline is close.

Is there anybody out there who has real-world experience in developing
large applications with SQL Windows? If so, we'd be very interested in
hearing form you. Topics of interest:

  - bugs        - how many/how serious
  - flexibility - i.e. can you make it do all the stuff you want to?
  - ease of use/savings of resources over other methods

Please reply via e-mail, and I'll summarize back to this group.
-- 
Eivind Throndsen (eivind@idt.unit.no)  
From: galenr@hpgrla.gr.hp.com (Galen Raben)
Date: Tue, 8 Sep 1992 17:28:59 GMT
Subject: Re: VB: InputBox$ + 2 Option Boxes
Organization: Hewlett-Packard, Greeley, CO
Newsgroups: comp.os.ms-windows.programmer.tools

In comp.os.ms-windows.programmer.tools, mkim@wpi.WPI.EDU (Mansig Kim) writes:

>Could someone respond to this??

>I am implementing something like "InputBox$ + two option buttons" 
>(call it MY-INPUT-BOX).
...

>Now, the problem is how to interrupt(WAIT) the calling until the user
>selects one option button and clicks OK??

>for i = 1 to 10
>    call MY-INPUT-BOX
>    select one option box
>    WAIT until OK clicked
>    ^^^^
>next

>Here is my way for the WAIT portion.

>DO Until OK-clicked
>   idle(do dummy counting??)
>Loop

Hmmm... looks like a good way to get locked into an infinite loop.
If I understand the problem correctly(????) you can do away with your
WAIT loop.  The OK command button should already have a click event set
up... "Command1_Click" or whatever the cntlname of your OK button is.
In the Command1_Click you could try to call your MY-INPUT-BOX.  Are you
setting this up as a control array or do you have 10 forms set up for
each of your input-boxes?  If you have 10 forms set up you can make each
MODAL and then do a SHOW in the Command1_CLick to go to the next box (and
lock the others out).
In lieu of the above idea(s) you might try a DO_EVENTS (look in the VB
manual) to break the dead-lock you get into in the WAIT portion of your
code...
Good Luck!
- Galen -
galenr@hpgrla.gr.com

Newsgroups: comp.os.ms-windows.programmer.tools
From: dru@meaddata.com (Dru Henke)
Subject: Turbo C++ for Windows
Organization: Mead Data Central, Dayton OH
Date: Wed, 16 Sep 1992 03:48:46 GMT

I am considering getting Turbo C++ for Windows.  What is the net.opinion of
this product?  Should I shell out the extra bucks (which I probably can't
afford) to get MS C/C++ 7.0 or Borland C++?  Since Turbo C++ is about 1/3
of the cost of Borland C++, what is missing?  Do I need it?  Thanks for any
information.  Post or email, I will summarize if asked.

Dru

--
Dru Henke                                       Anything worth doing
dru@meaddata.com                                is worth overdoing.
From: grant@pentagon-gw.army.mil (Pete Grant)
Newsgroups: comp.os.ms-windows.programmer.tools
Subject: Re: Help: Can't load WINDEBUG.DLL! Why?
Date: 6 Sep 92 12:03:08 GMT
Organization: U.S. Army Artificial Intelligence Center, The Pentagon

In article <bu15lg.65g@wang.com> dbushong@wang.com (Dave Bushong) writes:
>
>Windows, it says that it can't load WINDEBUG.DLL (I've
>
It's a known bug.  Call Borland Sofware Support (start with
1-408-438-5300) for a fix.

Pete.
From: "tom betz" <tom.betz@execnet.com>
Newsgroups: comp.os.ms-windows.programmer.tools
Subject: emacs under ms-windows (w
Date: 10 Sep 92 15:27:18 EST
Reply-To: "tom betz" <tom.betz@execnet.com>
Distribution: comp
Organization: Executive Networks Information

Quoth John C Persons regarding EMACS UNDER MS-WINDOWS (W on 09-09-92:

JC>Try MicroEMACS for Windows at ftp.cica.indiana.edu.  If I remember
JC>correctly, it's in pub/win3/util.  (I may be missing a directory
JC>level there, I'm not sure.)

What's the file name?  I can't find anything suggesting EMACS in any of 
the file names there...

---
  WinQwk 2.0 a#299  $$$ not found -- A)bort, R)efinance, D)eclare
--
Executive Network Information System  (914) 667-4567
International ILink Host
Newsgroups: comp.os.ms-windows.programmer.tools
From: liemandt@jessica.stanford.edu (Joe Liemandt)
Subject: Borland c++ linker problems
Organization: trilogy
Date: Sat, 5 Sep 92 23:15:59 GMT

Has anyone else had problems with Borland's linker?  I am getting a lot of
"table limit exceeded" errors.  I can get the code to link, but I must compile
without debug information.  Makes it a little hard.

This code base,about 100K lines, compiles, with debug, on sun,sgi,mac.

Any suggestions are appreciated.

Joe Liemandt
liemandt@trilogy.com
Newsgroups: comp.os.ms-windows.programmer.tools
From: whedon@netcom.com (Bill Whedon)
Subject: Re: Turbo Pascal for Windows
Date: Thu, 10 Sep 92 07:01:47 GMT
Organization: Netcom - Online Communication Services  (408 241-9760 guest) 

Unless you plan to merely dabble, (and I know these might be fightin'words
to some), don't get VB.  For learning, the TPW is fine, particularly if you
have little or no experience with structured programming.  For heavy-duty
programming, C or C++ in the Borland or Microsoft flavours are the way to
go (I have no preference... both have their positives and negatives).

Probably, the best thing you could do, judging by your post, would be to
drop in on your friendly neighborhood tekkie-bookshop and pick up some titles
on learning programming in general, and C in particular, if you intend to go
on to Bigger & Better Things.  "Teach Yourself C", "Teach Yourself C++" are
a couple of the better-known ones.  There are tutorial books which come with
source code on disk (I recommend that... typing in page after page is onerous)
and some which even come with stripped-down compilers (though not for Windows)

Programming Windows is a formidable subject, at best.  Learning C as a first
language is, as well (C++ is a superset of C, most usable in situations where
you are building a group of related applications:  It is definitely -NOT- a
"hacker's language".)  Don't let any of that put you off.  It's very do-able
for most anyone with an orderly mind and perseverance.

On second thought, just to get your feet wet, VB might not be such a bad
choice.  It certainly does get you right into Windows, and insulates you from
much of the nastiness of bits and bytes.  Also, VB in particular, and most
modern BASICs in general, have evolved to be nearly indistinguishable from
Pascal, anyhow, so if you can use VB and avoid GOTO and GOSUB/RETURN, hey,
why not?!  I still recommend C/C++ as the "serious" language, though.  But
whatever you choose to do,
Have fun!
Bill Whedon   whedon@netcom.com

Newsgroups: comp.os.ms-windows.programmer.tools
From: markd@silogic.uucp (Mark C. DiVecchio (K3FWT))
Subject: Re: Error 5 with Borland C++ and OWL
Organization: Silogic Systems, San Diego, CA
Date: Mon, 14 Sep 1992 22:52:52 GMT

In article <1992Sep13.065343.25286@silogic.uucp> markd@silogic.uucp (Mark C. DiVecchio (K3FWT)) writes:
>
>I am using Borland C++ and OWL. I wrote a simple program that puts
>up a dialog box when exiting. It runs fine when run from the Borland
>C++ for Windows environment.
>
>When I run it by double clicking on the program name using the
>File Manager, it won't put up the dialog box on exiting but rather
>gets a Error -5.
>
>It must have something to do with a DLL or something that Borland C++
>loads so its available to my program but when I run my program
>standalone its not there. Is it BWCC.DLL? If so how do I get it loaded.
>I can't find anything in the docs.

Some additional information garnered after more testing.

If I add bwcc.lib to the .prj file and relink, my dialog box comes up
fine.  If I don't have bwcc.lib in the .prj, my dialog box will not come
up but I get an error -5.  No other changes to the program itself.  Both
cases link without errors. 

BTW, the file BWCC.DLL is in the directory SYSTEM under the WINDOWS
directory along with many other DLL files. 

-- 
Mark DiVecchio, Silogic Systems, 619-549-9841                       K3FWT
-----   9888 Carroll Center Road, Suite 113, San Diego, CA 92126    -----
markd@silogic.uucp                             BBS 619-549-3927
...!ucsd!sdcrsi!silogic!markd     sdcrsi!silogic!markd@ucsd.edu
Newsgroups: comp.os.ms-windows.programmer.tools
From: cm@impmh.uucp (Colin Manning)
Subject: Re: C/C++ 7.00 patch
Organization: Integrated Micro Products Ltd
Date: Fri, 4 Sep 1992 13:43:06 GMT

In <75440001@hpdmd48.boi.hp.com> gordonm@hpdmd48.boi.hp.com (Gordon Margulieux) writes:

>I'm probably the only one that didn't know but there's a C700 patch on
>MS BBS (206)936-6735 {9600 baud}.

Anyone know if this can be FTP'd from anywhere ?

-- 
Colin Manning     cm@impmh.uucp      Tel: +44 753 516599
Newsgroups: comp.os.ms-windows.programmer.tools
From: bkilgore@ips.iacd.honeywell.com (Bruce Kilgore)
Subject: Is there a public domain rcs or sccs or something for dos/windows?
Organization: Honeywell Industrial Automation, Phoenix, AZ
Distribution: comp.os.ms-windows.programmer.tools
Date: 14 Sep 92 11:06:42


Is there a public domain rcs or sccs or something for dos/windows?

Thanks

Please email me at bkilgore@ws15.ips.iacd.honeywell.com

--

-- bkilgore

/*
 *  It was hard to write, It should be hard to read. 
 */
 ------------------------------------------------------
| Bruce Kilgore                                        |
| email  bkilgore@ws15.ips.iacd.honeywell.com          |
| phone  (602) 436-4837                                |
| smail  16404 N Black Canyon HWY, Phoenix Az 85023    |
|------------------------------------------------------|
|Disclaimer: Any and *ALL* opinions are mine, and most |
|            of the time do *NOT* reflect the opinions |
|            of Honeywell and most of the time nobody  |
|            else either.                              |
 ------------------------------------------------------
Newsgroups: comp.os.ms-windows.programmer.tools