Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / Languages / Managed C++ / May 2006

Tip: Looking for answers? Try searching our database.

about the "#if (_WIN32_WINNT >= 0x0501)" in the system headers....

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Lloyd Dupont - 27 May 2006 06:43 GMT
In my code I would like to use the constant (define in WinGdi.h)
CLEARTYPE_QUALITY
But that doesn't work!!
(it's for CreateFont(...))

A quick look at the header reveal that:
== WinGdi.h fragment ===
#if (_WIN32_WINNT >= 0x0500)
#define CLEARTYPE_QUALITY       5
#endif
===================

Now I wonder, how do I define _WIN32_WINNT ?
- should I just go into Project Properties => Configuration => C/C++ /
Preprocessor => Definition
and put some random value?

- beside how will this work?
generally speaking my product work on Windows 2000 & XP and this constant is
not a bit flag, it's a number (other constant are 1,2,3,4)

Any tips? advice? ideas? suggestion?
Jochen Kalmbach [MVP] - 27 May 2006 08:01 GMT
Hi Lloyd!

> A quick look at the header reveal that:
> == WinGdi.h fragment ===
[quoted text clipped - 7 lines]
> Preprocessor => Definition
> and put some random value?

It should not be random...
See: Using the Windows Headers
http://msdn.microsoft.com/library/en-us/winprog/winprog/using_the_windows_headers.asp

If you have a current PSDK, you should set "NTDDI_VERSION"

> generally speaking my product work on Windows 2000 & XP and this constant is
> not a bit flag, it's a number (other constant are 1,2,3,4)

The define
NTDDI_VERSION=NTDDI_WIN2K
in your project settings

Or (for older PSDKs):
_WIN32_WINNT=0x0500
WINVER=0x0500

Signature

Greetings
  Jochen

   My blog about Win32 and .NET
   http://blog.kalmbachnet.de/

Lloyd Dupont - 27 May 2006 11:08 GMT
Egbert Nierop (MVP for IIS) - 27 May 2006 09:06 GMT
> In my code I would like to use the constant (define in WinGdi.h)
> CLEARTYPE_QUALITY
[quoted text clipped - 12 lines]
> Preprocessor => Definition
> and put some random value?

surely not a random value.

> - beside how will this work?
> generally speaking my product work on Windows 2000 & XP and this constant
> is not a bit flag, it's a number (other constant are 1,2,3,4)
>
> Any tips? advice? ideas? suggestion?

#define  _WIN32_WINNT  0x0501

in stdafx.h will do best.
Lloyd Dupont - 27 May 2006 11:08 GMT
Sean M. DonCarlos - 27 May 2006 16:54 GMT
> > generally speaking my product work on Windows 2000 & XP and this constant
> > is not a bit flag, it's a number (other constant are 1,2,3,4)
[quoted text clipped - 4 lines]
>
> in stdafx.h will do best.

Keep in mind that if you are defining _WIN32_WINNT to a specific value
because an API requires it, it is because that API requires at least that
version of Windows to run.

Therefore, if your product must work on Windows 2000, and you are using an
API that requires at least Windows XP (which is what setting _WIN32_WINNT to
0x0501 means), then you are going to have a problem later on when you try to
run your product on Windows 2000.

For your particular situation, ClearType wasn't introduced until WinXP.
Depending on what you are doing with ClearType, you may need to write code to
ascertain which version of Windows is running and to take action accordingly.

Sean
Lloyd Dupont - 28 May 2006 02:33 GMT
Thanks for addressing the second part of my question!
I though along those lines:
all these constants are just increasing number (1,2,3,4 and 5 for cleartype)
not only it should be available for windows 2000 in a service pack but,
hopefully, the function should gracefuly either of:
-use a known lower number
-use default DRAFT quality instead....

Anyway, any tip on how to write a simple test of the current OS?

thanks!

>> > generally speaking my product work on Windows 2000 & XP and this
>> > constant
[quoted text clipped - 24 lines]
>
> Sean
William DePalo [MVP VC++] - 28 May 2006 03:07 GMT
> Anyway, any tip on how to write a simple test of the current OS?

The short answer to the question is to say that you call GetVersionEx().

But you have to understand that if you build an application so that it only
runs on 2K or better, and if someone tries to launch that binary on NT4 say
(a platform which should be retired IMO) that your application may not ever
get to the point of calling GetVersionEx().

An application will fail to load if it makes implicit reference to a
function in a DLL which is not present at load time.

Regards,
Will
Ben Voigt - 29 May 2006 15:35 GMT
>> Anyway, any tip on how to write a simple test of the current OS?
>
[quoted text clipped - 7 lines]
> An application will fail to load if it makes implicit reference to a
> function in a DLL which is not present at load time.

If the DLL is not present, the application fails to load.  If the DLL is
present but an older version so the function is missing, the application
loads and only fails if it tries to call that function, correct?

> Regards,
> Will
William DePalo [MVP VC++] - 29 May 2006 16:58 GMT
> If the DLL is not present, the application fails to load.  If the DLL is
> present but an older version so the function is missing, the application
> loads and only fails if it tries to call that function, correct?

No.

At least not if you link the DLL implicitly. If you do that, at runtime the
loader will display a message box which says something like this:

   "The procedure entry point XXXX could not be located in dynamic link
library YYYY".

Regards,
Will



Rate this thread:







Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.