Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

where is a copy of atlstr.h ??

3,446 views
Skip to first unread message

Robert Macy

unread,
Dec 27, 2005, 8:46:33 PM12/27/05
to
Where does the header file atlstr.h reside? I can't find it, yet
#include <atlstr.h>
This line appears at the top of a sample thread program *and* it
appears numerous times at the top of MS sample programs. Yet I can't
find it anywhere!

The lack of this header file, negates any effectiveness of the example
programs, so why is it so hard to find?

For reference, installed on the Windows XP:
Microsoft Visual C++ Toolkit 2003
Microsoft Visual Studio .NET 2003
Microsoft .NET
Microsoft SDK

also have the Windows templates
WTL70.exe
WTL71.exe
WTL75.exe
all installed, but they don't contain the file.

Where is this file?

- Robert -

Jeff Partch [MVP]

unread,
Dec 27, 2005, 8:57:28 PM12/27/05
to
"Robert Macy" <ma...@california.com> wrote in message
news:1135734393.7...@g44g2000cwa.googlegroups.com...

FWIW, On my system it appears in...

C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include

--
Jeff Partch [VC++ MVP]


Robert Macy

unread,
Dec 27, 2005, 9:44:27 PM12/27/05
to
Thank you for your reply.

hmm....,at
..\Vc7

I only have these three folders
[with include having a single subfolder]
\bin
\include
..\sys
\lib
and that's it!

>From where, and how do I load in what's missing?

- Robert -

John Carson

unread,
Dec 27, 2005, 9:44:27 PM12/27/05
to


By way of background, it is part of the ATL library. The ATL library is
included with Visual Studio but not with the Visual C++ toolkit or the
Platform SDK. Thus you should find it in a location such as the one given by
Jeff.

--
John Carson


Jeff Partch [MVP]

unread,
Dec 27, 2005, 9:53:04 PM12/27/05
to
"Robert Macy" <ma...@california.com> wrote in message
news:1135737867.8...@g47g2000cwa.googlegroups.com...

What edition of VS.NET 2003 do you have, Robert?

Robert Macy

unread,
Dec 28, 2005, 12:53:25 AM12/28/05
to
Should a copy of it have appeared in the
Microsoft .NET Framework SDK?

Why was there no information at the Microsoft websites regarding the
location/availability of atlstr.h ?

It seems to me a company that sells a product should know what's in
that product and be able to tell people what specifically they are
getting.

- Robert -

Robert Macy

unread,
Dec 28, 2005, 12:54:16 AM12/28/05
to
it says 1.1.4 or such.

Is that it?

- Robert -

Carl Daniel [VC++ MVP]

unread,
Dec 28, 2005, 1:12:23 AM12/28/05
to
Robert Macy wrote:
> it says 1.1.4 or such.
>
> Is that it?

When you start visual studio, the splash screen that appears briefly tells
which edition of VS you have. It should be something like "Visual Studio
.NET 2003 Standard Edition" (or Professional or Enterprise Developer or
Enterprise Architect). You can get the version number from Help|About from
within the IDE. It should be 7.10.xxxx if you're using Visual Studio 2003.

-cd


Carl Daniel [VC++ MVP]

unread,
Dec 28, 2005, 1:14:57 AM12/28/05
to

Considering that something in excess of 18,000 files are installed with
Visual Studio 2003, I'm not at all surprised that there's not
cross-reference to which files are installed where.

atlstr.h is part of ATL, which is included in Visual Studio Standard Edition
and above. If you have VS Standard or above, version 7.0 (2002) or later,
and you don't see atlstr.h, then you don't have a complete install of Visual
Studio. Perhaps ATL/MFC wasn't selected when the product was installed.

-cd


Stephen Howe

unread,
Dec 28, 2005, 6:56:18 AM12/28/05
to
> Why was there no information at the Microsoft websites regarding the
> location/availability of atlstr.h ?

It is under VC7\ATLMFC\Include

But note: If you have made the mistake of installing Visual Studio Express
2005, be aware that MFC & ATL do not come with this. It is cut down. You
need the full version of Visual Studio 2005

Stephen Howe


Robert Macy

unread,
Dec 28, 2005, 11:26:49 AM12/28/05
to
Never ran the IDE.

- Robert -

Robert Macy

unread,
Dec 28, 2005, 11:30:10 AM12/28/05
to
I do not understand why two days ago THAT useful tidbit of information
could not have been provided by Microsoft.

I am not likely to buy products from such an organization.

Is there "complete" set of ATL available elsewhere?

- Robert -

John Carson

unread,
Dec 28, 2005, 12:59:09 PM12/28/05
to
"Robert Macy" <ma...@california.com> wrote in message
news:1135787410....@g49g2000cwa.googlegroups.com

> I do not understand why two days ago THAT useful tidbit of information
> could not have been provided by Microsoft.

The significance of the "two days ago" is lost on me (VC++ Express 2005 has
not been raised in this thread previously, including by you). The fact that
ATL is not included in VC++ Express 2005 is listed in the FAQ for that
product

http://msdn.microsoft.com/vstudio/express/support/faq/#vcpp

When one version of a product is free and other versions cost hundreds of
dollars (thousands in some cases), the sensible person infers that the free
version is likely to be missing something and takes steps to establish what
that is.

> I am not likely to buy products from such an organization.
>
> Is there "complete" set of ATL available elsewhere?

Your original post reported that you had Microsoft Visual Studio .NET 2003,
which includes ATL (albeit a now slightly outdated version). ATL is a
Microsoft library that is only available with Visual Studio, i.e., you have
to pay for it.


--
John Carson

Stephen Howe

unread,
Dec 28, 2005, 1:21:30 PM12/28/05
to
> Never ran the IDE.

So what? Why don't you run it now, do "help about", post back _full_
results, just so that other people here trying to help you have an idea of
what is in installed?

Stephen Howe


Robert Macy

unread,
Dec 28, 2005, 5:17:23 PM12/28/05
to
Don't think I have the IDE.

What is installed is

Microsoft Visuall C++ Toolkit:
VCToolkitSetup.exe

Microsoft .NET Framework, SDK, and ATL extended products:
dotnetfx.exe, setup.exe, and ATLExt.exe

Windows Template Libraries:
WTL-70.exe, WTL-71.exe, and WTL-75.exe

Fully installed platform SDK
PSDKFULL.bat
[this is big]

- Robert -

Robert Macy

unread,
Dec 28, 2005, 5:48:09 PM12/28/05
to
Thank you for your reply, I am beginning to believe that what I have is
indeed purposely incomplete.

What is installed is

Microsoft Visuall C++ Toolkit:
VCToolkitSetup.exe

Microsoft .NET Framework, SDK, and ATL extended products:
dotnetfx.exe, setup.exe, and ATLExt.exe

Windows Template Libraries:
WTL-70.exe, WTL-71.exe, and WTL-75.exe

Fully installed platform SDK
PSDKFULL.bat
[this is big]


Historically, I've been trying to learn about threads, ran across a
sample program with the header file atlstr.h which I couldn't find,
hence the sample did not compile. For 3 days now I have been trying to
find atlstr.h Also at MS website I ran across sample thread programs
containing the atlstr.h file, too.

My original post erroneously listed VS .NET 2003. [I am new to all
this] I am willing to believe that one of the SDK's, or such, had
files that fit around VS .NET 2003, so as the SDK installed; it created
the folders to hold those files. I saw the folder in "Program Files"
Hence my misunderstanding of what I had. [I am new to all this]

The description of this massive quantity of time consuming download
described itself as "complete" and "all that is necessary to". So I
spent the time to download them and install them, only to find that
something is still missing. Something that MS still does not tell me
where it is. So how do I trust that *if* I pay for some "undefined"
software; I will get what I need, and there won't be one more missing
piece? I can't.

As a sensible person, I was under the impression that what I had *was*
crippled enough. Having a lousy line command compiler *and* no IDE and
no coherent documentation. I was perfectly willing to use these
obnoxious tools to learn enough to see if this is an area I wish to
invest in. In order to do this learning I found sample programs - at
the source of Windows: MS website - which were not useable for me. AND
more importantly, please listen to this, I don't know what I need, or
don't have. It seems incumbent to me that the supplier of all this
stuff, Microsoft, should be aware of what is missing, or where
something resides. I am startled that this information is either not
known at MS, or worse, purposely obfuscated. To me, this is not
reasonable strategy for winning customers. In other words, what do I
get when I pay them. It certainly doesn't look like help.

It has taken much time and the valuable help, luckily supplied by
people like yourself, to tell me what Microsoft should have already
told me and had as ready information for their potential customers. I
must be very old fashioned to think that it is the VENDOR's
responsibility to educate their consumer.

- Robert -

Carl Daniel [VC++ MVP]

unread,
Dec 28, 2005, 11:22:01 PM12/28/05
to

Then that explains it. You don't have <atlstr.h> unless you've installed
Visual Studio Standard Edition or above.

-cd


John Carson

unread,
Dec 29, 2005, 1:38:55 AM12/29/05
to
"Robert Macy" <ma...@california.com> wrote in message
news:1135810089....@g44g2000cwa.googlegroups.com

In a sense, these claims are correct. You are not limited in the programs
you can write, only in the approaches that you may take to writing them. See
below.

> So I
> spent the time to download them and install them, only to find that
> something is still missing. Something that MS still does not tell me
> where it is.

I don't understand this claim. ATL is part of every version of Visual Studio
that includes VC++.

> So how do I trust that *if* I pay for some "undefined"
> software; I will get what I need, and there won't be one more missing
> piece? I can't.
>
> As a sensible person, I was under the impression that what I had *was*
> crippled enough. Having a lousy line command compiler *and* no IDE
> and no coherent documentation. I was perfectly willing to use these
> obnoxious tools to learn enough to see if this is an area I wish to
> invest in. In order to do this learning I found sample programs - at
> the source of Windows: MS website - which were not useable for me.
> AND more importantly, please listen to this, I don't know what I
> need, or don't have. It seems incumbent to me that the supplier of
> all this stuff, Microsoft, should be aware of what is missing, or
> where something resides. I am startled that this information is
> either not known at MS, or worse, purposely obfuscated. To me, this
> is not reasonable strategy for winning customers. In other words,
> what do I get when I pay them. It certainly doesn't look like help.

I sympathise with your frustration. The range of tools and options available
in Windows programming makes it easy to head down a wrong path. And
advertising puffery doesn't help.

What you really need, and currently lack, is an understanding of the Windows
programming "landscape". Without that, there is no way to make appropriate
decisions on products or make appropriate use of documentation and sample
programs. Whenever I buy any moderately complex product in an unfamiliar
area (a stereo system, say), I have difficulty figuring out what version to
buy since I don't know the significance of various features. In my
experience, sales people are generally worse than useless, and I need to
spend days doing my own research. The same considerations apply here, but
the problems are magnified many times because the product is vastly more
complicated.

There are many approaches you can take to Windows programming, even given
the choice of C++ as programming language, due to the wide range of
available libraries (chiefly the Active Template Library, ATL, the Microsoft
Foundation Classes, MFC, and the .Net library --- plus a whole lot of 3rd
party libraries). A typical Windows programmer is competent only in a subset
of these and, even if competent in them all, will typically only use one
approach for each project. If such a programmer were to download a random
sample on, say, threading, then there is a good chance that the programmer
would not be able to understand or make use of it, even if they have a
Visual Studio version that supports it. An ATL sample will not normally be
of interest to someone writing a program using MFC, and neither ATL nor MFC
samples will be of interest to someone using the .Net library. None of the
three will be of interest to someone who programs directly in terms of the
Win32 API. Thus Windows programmers learn where the documentation/samples of
relevance to them are to be found and, for the most part, disregard the
rest.

Rather than trying to chase down individual header files and rather than
focus on an area of interest (threading, graphics...), you need to focus on
an approach to Windows programming. If you are to use the Win32 API
exclusively, then the free versions of the compiler do have all you need.
You just need to steer clear of documentation/samples that pertain to other
approaches. If you get your samples from the Platform SDK rather than select
individual samples from the Microsoft site or elsewhere, then you won't be
distracted by ATL or MFC.

Programming using the Win32 API (directly) is the oldest approach and is
used less these days. The most modern (not to say necessarily the best)
approach is to use the .Net library. To use this with C++, however, you need
to learn the Microsoft extended version of C++ known as C++/CLI.

The fact that the free versions of the compiler offer these two
choices (Win32 API or .Net) is not an accident. Microsoft is pushing the use
of the .Net library, so it doesn't want to give you too much in the way of
attractive alternatives --- not for free anyway. (WTL, incidentally, is
freely available but depends on ATL and is therefore not an option without
it.) Of course, Microsoft has to hold something back or no-one would pay
money for the other versions of its development tools.

As I have already stated, if you want to program using ATL or MFC, then you
need a version of Visual Studio (I don't know about the 2005 version of
Visual Studio Standard, but the earlier versions were the source of some
frustration, so Visual Studio Professional is probably what you should be
looking at, finances permitting; there is a much cheaper student version of
VS Professional if you qualify). Once again, you need to be clear that you
are doing either ATL or MFC programming and only attempt to use sample code
employing the same framework.


--
John Carson


Stephen Howe

unread,
Dec 29, 2005, 6:59:26 AM12/29/05
to
> I don't understand this claim. ATL is part of every version of Visual
Studio
> that includes VC++.

Not so. It is not in Visual Studio Express 2005 yet that includes the C++
compiler.
Nor is MFC.

Stephen Howe


Stephen Howe

unread,
Dec 29, 2005, 8:29:24 AM12/29/05
to
I don't work for Microsoft and am not an MVP.
But your position is not reasonable.

> Historically, I've been trying to learn about threads, ran across a
> sample program with the header file atlstr.h which I couldn't find,
> hence the sample did not compile.

So?

I ran across a sample DOS program. At one time Microsoft supported
generation of DOS programs. Should I claim VStudio is incomplete because I
cannot produce DOS programs?

I ran across a sample OS/2 program. At one time Microsoft supported
generation of OS/2 programs. Should I claim VStudio is incomplete because I
cannot produce OS/2 programs?

I ran across a sample Win32s program. At one time Microsoft supported
generation of Win32s programs (VC 4.0 was last one). Should I claim VStudio
is incomplete because I cannot produce Win32s programs any more?

You will find that with each generation of Visual Studio, things are being
dropped off, usually the stuff for producing executables many generations
ago. That is perfectly normal.

> For 3 days now I have been trying to find atlstr.h

Then I would fire you. 3 days is too long.

> The description of this massive quantity of time consuming download
> described itself as "complete" and "all that is necessary to".

Right. But when you say "complete", is it your understanding that the
compiler is capable of producing all executable types, for all Microsoft
OS's, right back to DOS 1.0? That is probably not your understanding.
"Complete" may mean (and this is my understanding), that it contains all
that is necessary to produce .NET programs, nothing more. Or Win32 programs,
nothing more. And that may mean no-frills tools. I think you are being naive
or disingenous to think otherwise.

> So I
> spent the time to download them and install them, only to find that
> something is still missing. Something that MS still does not tell me
> where it is. So how do I trust that *if* I pay for some "undefined"
> software; I will get what I need, and there won't be one more missing
> piece? I can't.

MFC & ATL are just icing on the cake.
They are *NOT* necessary to produce Win32 programs.
And every bit of their functionality can be duplicated for any Win32
program.
And they are certainly *NOT* necessary to study threading in Windows.

> As a sensible person I was under the impression that what I had *was*
> crippled enough. Having a lousy line command compiler...

I don't think it is lousy.
It is pretty close to the ISO C++ standard
It produces damn good optimisation
And VStudio Express is free.
To me, it is outrageous, simple outrageous that you grumble.

> *and* no IDE and
> no coherent documentation.

There is online documentation. It is not perfect, no, but it is reasonable.

> I was perfectly willing to use these obnoxious tools to learn enough to
see if this is an area I wish to
> invest in. In order to do this learning I found sample programs - at
> the source of Windows: MS website - which were not useable for me. AND
> more importantly, please listen to this, I don't know what I need, or
> don't have.

As said, MFC & ATL are icing on the cake. The sample programs use them. But
they are not necessary, just convienent. The old adage holds good: If you
want everything, you have to pay for it.
Everybody knows (apart from you) that cut-down tools usually have reduced
functionality.

> I am startled that this information is either not
> known at MS, or worse, purposely obfuscated.

Not really. I found out, from the FAQ, that VStudio Express did not come
with MFC & ATL after 10 minutes checking. I purposely looked at the FAQ
becuase I was sure Microsoft had left something out and I wanted to find out
what it was. Why didn't you?

> It has taken much time and the valuable help, luckily supplied by

> people like yourself...

<laugh> Well those people are criticising you for your naive expectatations.

>..., to tell me what Microsoft should have already


> told me and had as ready information for their potential customers. I
> must be very old fashioned to think that it is the VENDOR's
> responsibility to educate their consumer.

You must be walking around in diapers or nappys to expect Microsoft to
permanently hold your hand.

Stephen Howe


John Carson

unread,
Dec 29, 2005, 8:29:00 AM12/29/05
to
"Stephen Howe" <stephenPOINThoweATtns-globalPOINTcom> wrote in message
news:e8M0S9G...@TK2MSFTNGP15.phx.gbl

We are in a purely semantic argument here. I agree that no Express Edition
includes ATL and MFC and have said so previously in this thread. My
reference to Visual Studio in the passage you quoted was not meant to
include the Express editions. This is because there is no single "Visual
Studio Express" product that incorporates VC++ Express, VC# Expresss and the
like in the way that Visual Studio Professional, say, incorporates VC++, VC#
etc. Thus "Visual Studio Express" is a marketing umbrella rather than an
actual product.

Let's be unambiguous shall we? In order to get ATL and MFC, you must get one
of the following three:

1. Visual Studio Standard
2. Visual Studio Professional
3. Visual Studio Team System (which comes in several versions)


Visual Studio for Office does *not* include ATL/MFC because it does not
include VC++.

--
John Carson


Stephen Howe

unread,
Dec 29, 2005, 10:27:04 AM12/29/05
to
> Let's be unambiguous shall we? In order to get ATL and MFC, you must get
one
> of the following three:
>
> 1. Visual Studio Standard
> 2. Visual Studio Professional
> 3. Visual Studio Team System (which comes in several versions)

Yes okay John.
I 100% agree with you.
Sorry for the lack of clarity. And thanks for your clarity (seems a rare
commodity these days)

Stephen Howe


Robert Macy

unread,
Dec 29, 2005, 10:54:12 AM12/29/05
to
Thank you for confirming what I'm am just starting to realize.

When the description of the download says, "Everything you will need
to..." don't believe it.

Why, on my search for atlstr.h during my FIRST visit, and many
subsequent visits, to Microsoft didn't MS have the courtesy, or
intelligence, to tell me that?

Is this company so disorganized or their product so out of control that
such important information must come from third parties?

...rhetorical questions

- Robert -

Alex Blekhman

unread,
Dec 29, 2005, 11:23:20 AM12/29/05
to


"Visual C++ 2005 Express FAQ"
http://msdn.microsoft.com/vstudio/express/support/faq/#vcpp

See answer 42. (It's not a joke.)


Robert Macy

unread,
Dec 29, 2005, 12:08:37 PM12/29/05
to
...uh, at risk of killing the frog, I don't get it.

- Robert -

Brian Muth

unread,
Dec 29, 2005, 12:14:22 PM12/29/05
to
From those of us in the bleachers keeping score:

Alex Blekhman: 2
Stephen Howe: 3
Robert Macy: 0

Brian

Robert Macy

unread,
Dec 29, 2005, 12:56:30 PM12/29/05
to
John,

Thank you for your excellent, well thought out, and extremely
informative reply.

It is copied and stored with my C++ Documentation files for further
reference. I greatly appreciate the time your response took. Yes,
Windows "landscape" is very unfamiliar.

It's just that everything at once is a bit daunting. New to C++, new
to real-time programming, new to Windows platform. So it is difficult
to even understand the information.

My goal is to accomplish the present task and to do it within a
"generalized" framework [not relying too much on any special
idiosyncracies]. Don't want to accidentally build in any bad habits
using libraries that may someday be deprecated.

For example, I first thought that the free line command compiler was
slightly crippled, causing the code to run a bit slow. This seemed
reasonable. There in, should lie the "magic". I would expect to pay
in the range of $3K to $15K for "real" tools. Ok, at least I can test
run and kick the tires so to speak. I then posted a bench mark section
of code for others [with whiz bang systems] to try to see how much
improvement I should expect. I found that the "naive" code I had
written was 6 times faster than *anybody's* else's code using
"standard" approaches, relying on built in libraries, etc.

The implication is: What you get when you pay for software is NOT
performance, but ease of coding. Crutches, methods, but, sadly, not
performance.

Ok, I can live with that, too.

What happened to me was that not understanding much of anything about
this stuff, I quickly embraced any writing, any samples, that made
sense, or seemed to relate to what I was doing. In other words, I
oriented toward literate explanations. Yes, there are sample programs
contained in platform SDK, but they are absolutely incomprehensible to
me.

I will stay away from distractions, like ATL, MFC, and .NET, since I
have no intrinsic desire to pursue programming in any form, be it MFC,
ATL, or .NET. I really need to simply accomplish this task.

It is still very surprising that at least some response in a search for
atlstr.h at the MS website did not uncover the simple statement "Thank
you for looking, but atlstr.h comes with our purchased software, some
form of Visual Studio."


John, would you contact me off group, so I can tell you more detail of
this project and make certain that I do have all the tools necessary
and am not headed down a blind alley?

macy ..AT.. california ..DOT.. com

- Robert -

Robert Macy

unread,
Dec 29, 2005, 1:49:00 PM12/29/05
to
Stephen Howe wrote:
> I don't work for Microsoft and am not an MVP.
> But your position is not reasonable.

It is NOT unreasonable to expect some kind of response to a search at
MS website for atlstr.h

At least something like, "Glad you asked, but that only comes in
purchased software, and you'll really like it." Just some infomation
at least. Marketing, are you listening? You're missing opportunities
here.

>
> > Historically, I've been trying to learn about threads, ran across a
> > sample program with the header file atlstr.h which I couldn't find,
> > hence the sample did not compile.
>
> So?

History of the problem. I assumed most readers of this group are not
mind readers and information is helpful, if even redundant.

> I ran across a sample DOS program. At one time Microsoft supported
> generation of DOS programs. Should I claim VStudio is incomplete because I
> cannot produce DOS programs?

Huh? Don't answer, don't care.

> I ran across a sample OS/2 program. At one time Microsoft supported
> generation of OS/2 programs. Should I claim VStudio is incomplete because I
> cannot produce OS/2 programs?
>
> I ran across a sample Win32s program. At one time Microsoft supported
> generation of Win32s programs (VC 4.0 was last one). Should I claim VStudio
> is incomplete because I cannot produce Win32s programs any more?

It turns out, I really have NO form of Visual Studio, but did not know
it.

> You will find that with each generation of Visual Studio, things are being
> dropped off, usually the stuff for producing executables many generations
> ago. That is perfectly normal.

All the more reason to not get used to "crutches"

> > For 3 days now I have been trying to find atlstr.h
>
> Then I would fire you. 3 days is too long.

Yes, 3 days is TOO long. My financial controller hit the ceiling. But
I assuaged their anger after presenting the long list of activity in
lurid detail. Their response? Dump Microsoft Products.

> > The description of this massive quantity of time consuming download
> > described itself as "complete" and "all that is necessary to".
>
> Right. But when you say "complete", is it your understanding that the
> compiler is capable of producing all executable types, for all Microsoft
> OS's, right back to DOS 1.0? That is probably not your understanding.
> "Complete" may mean (and this is my understanding), that it contains all
> that is necessary to produce .NET programs, nothing more. Or Win32 programs,
> nothing more. And that may mean no-frills tools. I think you are being naive
> or disingenous to think otherwise.

I expected "crippling" in some form, but not missing WITHOUT TELLING
ME!

> MFC & ATL are just icing on the cake.
> They are *NOT* necessary to produce Win32 programs.
> And every bit of their functionality can be duplicated for any Win32
> program.
> And they are certainly *NOT* necessary to study threading in Windows.

Thank you. There is hope after all.

> > As a sensible person I was under the impression that what I had *was*
> > crippled enough. Having a lousy line command compiler...
>
> I don't think it is lousy.
> It is pretty close to the ISO C++ standard
> It produces damn good optimisation
> And VStudio Express is free.
> To me, it is outrageous, simple outrageous that you grumble.

Yes, I was VERY surprised at the quality of code that came out of the
compiler. Didn't appear to be "crippled" at all.

> > *and* no IDE and
> > no coherent documentation.
>
> There is online documentation. It is not perfect, no, but it is reasonable.

I wish that documentation had included a simple statment regarding
where is and how to obtain atlstr.h

> Not really. I found out, from the FAQ, that VStudio Express did not come
> with MFC & ATL after 10 minutes checking. I purposely looked at the FAQ
> becuase I was sure Microsoft had left something out and I wanted to find out
> what it was. Why didn't you?

I didn't know I needed Visual Studio, why would I read FAQs about it?
[rhetorical question]

> > It has taken much time and the valuable help, luckily supplied by
> > people like yourself...
>
> <laugh> Well those people are criticising you for your naive expectatations.

Possibly, but I still got excellent help in spite of a bit of ridicule.
And the quality of help I get is directly proportional to the inverse
of the amount of ridicule. Meaning: little ridicule = Big Help

> >..., to tell me what Microsoft should have already
> > told me and had as ready information for their potential customers. I
> > must be very old fashioned to think that it is the VENDOR's
> > responsibility to educate their consumer.
>
> You must be walking around in diapers or nappys to expect Microsoft to
> permanently hold your hand.

Permanently?! How about ONCE?!

>From reading some of the responses you've provided to Usenet readers,
your expertise is a bit advanced for where my abilities are right now.
But you did confirm a critical bit of information: No need for ATL,
MFC, etc Win32 API can be totally controlled with available tools.
Good news, indeed.

- Robert -

Robert Macy

unread,
Dec 29, 2005, 3:01:47 PM12/29/05
to
In spite of this gauntlet of hazing, the result has still been some
very valuable information and excellent future consultant contacts.

- Robert -

Stephen Howe

unread,
Dec 29, 2005, 3:15:31 PM12/29/05
to
> It is NOT unreasonable to expect some kind of response to a search at
> MS website for atlstr.h
>
> At least something like, "Glad you asked, but that only comes in
> purchased software, and you'll really like it."

That is not reasonable. There are 1000's of files that comes with Visual
Studio or Visual C++, should every file be listed as to which product(s) it
is available under? Just because you formulate a question, does not mean it
is reasonable question, nor should MS spend time wrinting documents to
answer it.

> Yes, 3 days is TOO long. My financial controller hit the ceiling. But
> I assuaged their anger after presenting the long list of activity in
> lurid detail. Their response? Dump Microsoft Products.

When you do

#include <stdio.h>

the angle brackets in both C and C++ means that it searched for an
implementation-defined manor.
That is in both ISO C & C++ standards (I checked). There is absolutely no
reason that the directories searched are the same for different versions of
Visual Studio. And over time I know for a fact that where the installation
program for Visual Studio parks things in terms of directories, changes. So
your expectation that Microsoft "documents this" is unreasonable. Theey
would have carry documentation for many previous versions of Visual Studio.
And since I know what

#include <stdio.h>

does, I don't care where it is located. Futhermore, for some C and C++
compilers, there is no reason, at all, for stdio.h to be a file. I remember
with one previous version of Visual Studio, MFC and ATL headers were in
separate directories. Now they are not.

> I expected "crippling" in some form, but not missing WITHOUT TELLING
> ME!

Yes but a quick file find should have established that none of the other MFC
or ATL header files are present on your computer. Your next thought should
have been "Does MFC or ATL come with any of the Microsoft products I have
installed?", a quick Google and you would know the answer.

> I wish that documentation had included a simple statment regarding
> where is and how to obtain atlstr.h

I think it is wrong question. Otherwise there is nothing to say about any
other header than Microsoft has issued in past - simple statement how can it
be obtained. The number of headers must be millions being conservative.

And it is not just headers but the associated libriares they pair with (and
possible DLLs).
Without those you are stuffed. A header is useless in isolation.
And a header is useless if you don't have the correct matching libraries.
You will run into "undefined symbols" on linking.

> > Not really. I found out, from the FAQ, that VStudio Express did not come
> > with MFC & ATL after 10 minutes checking. I purposely looked at the FAQ
> > becuase I was sure Microsoft had left something out and I wanted to find
out
> > what it was. Why didn't you?
>
> I didn't know I needed Visual Studio, why would I read FAQs about it?
> [rhetorical question]

Not rhetorical. You wanted to use the C++ compiler => you should have read
the FAQ on it.
A few paragraphs ago you were grumbling about missing documentation, now you
saying you don't need to read documentation that is available by Microsoft
on the product you are trying to use. Seems inconsistent to me. The FAQ on
any new product (and the README.TXT/README.HTM) are the first thing to read
just in case there are last minute "gotchas" I need to know about. So 3 days
to find out what you needed to know seems excessive.

Before you go, answer me 2 questions

1) If your position on missing header locations is so reasonable, how is it
I can find no one else using Google Groups that has ever raised this as a
question before? And I have looked.

2) And if the missing header locations is so reasonable, how is it I find
not one auxilary web site that rushes to cover Microsofts "glaring omission"
over the location of atlstr.h? Feel free to point them all out (or even
one).

Stephen Howe


Robert Macy

unread,
Dec 29, 2005, 3:50:14 PM12/29/05
to
Stephen Howe wrote:
> > It is NOT unreasonable to expect some kind of response to a search at
> > MS website for atlstr.h
> >
> > At least something like, "Glad you asked, but that only comes in
> > purchased software, and you'll really like it."
>
> That is not reasonable. There are 1000's of files that comes with Visual
> Studio or Visual C++, should every file be listed as to which product(s) it
> is available under? Just because you formulate a question, does not mean it
> is reasonable question, nor should MS spend time wrinting documents to
> answer it.

Why not? It's their product. They're trying to sell it. And google
certainly finds things quickly.

> And since I know what
>
> #include <stdio.h>
>
> does, I don't care where it is located. Futhermore, for some C and C++
> compilers, there is no reason, at all, for stdio.h to be a file. I remember
> with one previous version of Visual Studio, MFC and ATL headers were in
> separate directories. Now they are not.

First thing I did was a full search of the C: drive for the locations.
For other "hiding" headers several lines were added to the compile
batch file
Set INCLUDE=C:\lots of places;%INCLUDE%
...but have to have the file to use the file

> Yes but a quick file find should have established that none of the other MFC
> or ATL header files are present on your computer. Your next thought should
> have been "Does MFC or ATL come with any of the Microsoft products I have
> installed?", a quick Google and you would know the answer.

Actually, there are some 75 atl*.h files on the WinXP system, so I
thought this "key" one was there also.

> And it is not just headers but the associated libriares they pair with (and
> possible DLLs).
> Without those you are stuffed. A header is useless in isolation.
> And a header is useless if you don't have the correct matching libraries.
> You will run into "undefined symbols" on linking.

Good point, and probably likely. Again, being specific when I searched
would help.

> Not rhetorical. You wanted to use the C++ compiler => you should have read
> the FAQ on it.
> A few paragraphs ago you were grumbling about missing documentation, now you
> saying you don't need to read documentation that is available by Microsoft
> on the product you are trying to use. Seems inconsistent to me. The FAQ on
> any new product (and the README.TXT/README.HTM) are the first thing to read
> just in case there are last minute "gotchas" I need to know about. So 3 days
> to find out what you needed to know seems excessive.

I read, but then there's read. If what is written makes no/little
sense, reading more only exacerbates the problem.

In C++ Toolkit the README.txt does indeed say that MFC and ATL
libraries are not included. Ok. ...That's why, when I thought I found
them somewhere else I thoiught they were complete, since the
description said "everything you need to run..."

I just thought I had missed picking them up somewhere.

> Before you go, answer me 2 questions
>
> 1) If your position on missing header locations is so reasonable, how is it
> I can find no one else using Google Groups that has ever raised this as a
> question before? And I have looked.

Multiple choice:
a) People afraid to run a gauntlet of ridicule?
b) Robert's brain is not configured like a Programmer's brain.
c) Not a clue
d) All of these

> 2) And if the missing header locations is so reasonable, how is it I find
> not one auxilary web site that rushes to cover Microsofts "glaring omission"
> over the location of atlstr.h? Feel free to point them all out (or even
> one).

I can't find any, but then again we've already established I can't find
anything. :)

- Robert -

Alex Blekhman

unread,
Dec 29, 2005, 5:31:00 PM12/29/05
to
Robert Macy wrote:
> ...uh, at risk of killing the frog, I don't get it.

Item 42 of Visual C++ 2005 Express FAQ says following:

-------
Q.: Does Visual C++ 2005 Express Edition include MFC and
ATL?
A.: No, MFC and ATL are not included with Visual C++ 2005
Express. MFC and ATL will be included in all other Visual
Studio 2005 Editions.
-------

atlstr.h header is part of ATL library, therefore it is not
included with Visual C++ 2005 Express.


Robert Macy

unread,
Dec 29, 2005, 5:59:18 PM12/29/05
to
Right, Visual C++ 2005 Express does NOT contain the MFC and ATL.

I understand your point even though I wasn't doing anything with the
Visual C++ 2005. In the README.txt files of Visual C++ Toolkit [which
I'm using] it says the same thing.

But, again, I had downloaded much more than that, including something
with Active Template Library that said "Everything needed to run..."
and I did have some 75 atl*.h files, including atlbase.h, so I
"assumed" I should have a copy and had simply missed it somewhere.

Still the culmination is that I don't need ATL, nor MFC, which is good.

- Robert -

John Carson

unread,
Dec 30, 2005, 2:32:25 AM12/30/05
to
"Robert Macy" <ma...@california.com> wrote in message
news:1135878990.1...@g44g2000cwa.googlegroups.com

> John,
>
> Thank you for your excellent, well thought out, and extremely
> informative reply.

You are welcome.

> It is copied and stored with my C++ Documentation files for further
> reference. I greatly appreciate the time your response took. Yes,
> Windows "landscape" is very unfamiliar.
>
> It's just that everything at once is a bit daunting. New to C++, new
> to real-time programming, new to Windows platform. So it is difficult
> to even understand the information.
>
> My goal is to accomplish the present task and to do it within a
> "generalized" framework [not relying too much on any special
> idiosyncracies]. Don't want to accidentally build in any bad habits
> using libraries that may someday be deprecated.

I would be fairly confident that ATL and MFC will be around as long as Win32
programming. There are a lot of people who would predict that .Net
programming will be around even longer. Libraries offer great advantages,
though it is always good to be able to "roll your own" if and when the need
arises.

> For example, I first thought that the free line command compiler was
> slightly crippled, causing the code to run a bit slow. This seemed
> reasonable. There in, should lie the "magic". I would expect to pay
> in the range of $3K to $15K for "real" tools. Ok, at least I can test
> run and kick the tires so to speak. I then posted a bench mark
> section of code for others [with whiz bang systems] to try to see how
> much improvement I should expect. I found that the "naive" code I had
> written was 6 times faster than *anybody's* else's code using
> "standard" approaches, relying on built in libraries, etc.
>
> The implication is: What you get when you pay for software is NOT
> performance, but ease of coding. Crutches, methods, but, sadly, not
> performance.

That is currently the case. If you go back to VC++ 6, however, the compiler
for VC++ Professional produced faster code than the compiler for VC++
Standard. When VC++ 9 arrives at some point in the future, who knows.

> Ok, I can live with that, too.
>
> What happened to me was that not understanding much of anything about
> this stuff, I quickly embraced any writing, any samples, that made
> sense, or seemed to relate to what I was doing. In other words, I
> oriented toward literate explanations. Yes, there are sample programs
> contained in platform SDK, but they are absolutely incomprehensible to
> me.
>
> I will stay away from distractions, like ATL, MFC, and .NET, since I
> have no intrinsic desire to pursue programming in any form, be it MFC,
> ATL, or .NET. I really need to simply accomplish this task.
>
> It is still very surprising that at least some response in a search
> for atlstr.h at the MS website did not uncover the simple statement
> "Thank you for looking, but atlstr.h comes with our purchased
> software, some form of Visual Studio."

I think that would require more intelligence than I have ever seen from a
web site (a search for ATL might reasonably turn up such a statement, but
not a search for a specific header). Mind you, Microsoft's search facility
has been notoriously bad. They have been working on their search engine,
trying to make it as good as Google, but I don't know if these changes have
been integrated into the site yet.

> John, would you contact me off group, so I can tell you more detail of
> this project and make certain that I do have all the tools necessary
> and am not headed down a blind alley?

I think it is better to post questions to the group. I would guess that its
collective knowledge exceeds my own by at least a factor of 100. Moroever,
other readers of the group can benefit from any answers you receive. If you
simply state your situation and seek guidance (and avoid getting into
recriminations), then I think you will generally find that people are very
helpful.


--
John Carson


Robert Macy

unread,
Dec 30, 2005, 12:01:39 PM12/30/05
to
Putting my question in as general terms as possible.

The Hardware is a "standard" PC containing a commercially available
soundcard. In which the OS must be Win XP.
The soundcard has ASIO drivers built in and using C++ and the Steinberg
SDK for ASIO it is possible to exercise the soundcard directly.

It seemed reasonable that C++ can be used, along with "standard"
Windows interfaces to make this hardware system into a viable
instrumentation prototype for demonstrating various activities.

I envisioned that 3 threads are necessary:
1) ASIO interface and data manipulation
2) Display
3) Control

Question: Are the tools that I have, and the libraries available to me
in those tools, sufficient to accomplish my end goals?

Where should I be looking for great samples of similar programs?

- Robert -

John Carson

unread,
Dec 30, 2005, 3:01:44 PM12/30/05
to
"Robert Macy" <ma...@california.com> wrote in message
news:1135960196.5...@g44g2000cwa.googlegroups.com


As I thought might be the case, I don't have the knowledge to answer your
question (which would have been better posed as a new thread). I have no
experience at all in programming sound cards. I also don't know what you
mean by an "instrumentation prototype for demonstrating various activities".

You can write almost any Windows software with the tools you have, but my
lack of knowledge concerning your specific goals makes me reluctant to give
a definitive answer. (Personally, I would be downloading VC++ Express 2005;
I have no experience of it, but it does have an IDE and I would find the
lack of one intolerable.)

As for sample programs, I don't know how "similar" you require them to be.
My first port of call is always Google. www.codeproject.com is also a source
of huge amounts of Windows code.

--
John Carson


Robert Macy

unread,
Dec 30, 2005, 7:03:32 PM12/30/05
to
John,

The soundcard is almost secondary here, except for the fact that the
presence of the soundcard makes everything real-time. Every 50 mS two
buffers, each containing 9600 samples of 24 bit digitized signals, are
appearing that need to be "attended to". *AND two similar outgoing
buffers need to be filled.

It's a bit of a time crunch on the 500MHz machine. However, the custom
code I described earlier actually does all and is finished in less than
17 mS each 50 mS cycle, so I have time left over. But I was amazed
that many of the "packaged" displays ate up the remaining 33mS very
quickly.

The main activity remaining for the hardware is to provide a means for
the Operator to change operating parameters using some kind of
pictures, or table of values. And to display the selected resulting
data in a meaningful manner. Every 50mS put up a constantly changing
display. With the ability to modify/change the display for example,
freeze, zoom in/out, scale change, select WHAT is displayed, click and
drag zooming, etc.etc.

The soundcard's presence is really secondary to what I now need to do.
The source of the data could have been a huge file stored on disk.
Hopefully, my problem has been reduced to one of INPUT/OUTPUT using the
PC. So I'm stuck trying to add controls and displays.

Any experience with "slick and fast" GUIs?

Thank you for the codeproject URL, will go there and look around.

- Robert -

John Carson

unread,
Dec 30, 2005, 10:02:42 PM12/30/05
to
"Robert Macy" <ma...@california.com> wrote in message
news:1135981639....@g14g2000cwa.googlegroups.com

I have done quite a bit of GUI programming. If you want a slick and fast
GUI, then Win32 programming is a very good fit. Nothing in Windows is
strictly real time because its multi-threaded nature means all sorts of
stuff is going on in the background, eating up processor time in
unpredictable ways. But you will get closest to it with Win32 programming.

--
John Carson


Alexander Grigoriev

unread,
Dec 31, 2005, 11:26:38 AM12/31/05
to
Filling and submitting a buffer every 50 ms is nothing even for 100 MHz
machine.
For smooth sound handling, run your sound code in a separate thread with
higher priority. Use event notification for wave out, not window message.

"Robert Macy" <ma...@california.com> wrote in message

news:1135981639....@g14g2000cwa.googlegroups.com...

Robert Macy

unread,
Dec 31, 2005, 5:08:36 PM12/31/05
to
Loading and unloading is a piece of cake. But you can't imagine how
much number crunching occurs every cycle before display. We're talking
some major processing.

Thank you for the suggestion, ...uh, what is wave out versus window
message?

Unknown terms to me.

- Robert -

Alexander Grigoriev

unread,
Dec 31, 2005, 5:42:51 PM12/31/05
to
The wave driver can send "buffer done" notifications either as a MM_WOM_DONE
messages to a specified window, or to a thread, or call a callback function,
or set an event. Of those, I consider the event method the most responsive.
See waveOutOpen and related functions.

"Robert Macy" <ma...@california.com> wrote in message

news:1136066916....@o13g2000cwo.googlegroups.com...

Robert Macy

unread,
Jan 1, 2006, 2:37:02 PM1/1/06
to
Thank you. Will look for those.

- Robert -

0 new messages