CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 13 of 13
  1. #1
    Join Date
    Nov 2008
    Location
    Netherlands
    Posts
    77

    'WM_UNICHAR' was not declared in this scope

    hi, im using one of the latest GCC and it surprise me WM_UNICHAR is not defined.
    im using WIN32_LEAN_AND_MEAN but i do not think it has anything todo with that, since i coulndt find the definition of WM_UNICHAR anywhere in the winuser.h

    can anyone help me ?
    Last edited by cj-wijtmans; January 12th, 2009 at 10:52 AM.

  2. #2
    Join Date
    May 2002
    Posts
    1,435

    Re: 'WM_UNICHAR' was not declared in this scope

    MSDN says:

    Declared in Winuser.h, include Windows.h

    But it also appears that you have to target your application fror 5.1 (XP) minimum:

    #if(_WIN32_WINNT >= 0x0501)
    #define WM_UNICHAR 0x0109
    .....

  3. #3
    Join Date
    Nov 2008
    Location
    Netherlands
    Posts
    77

    Re: 'WM_UNICHAR' was not declared in this scope

    ooh yeah i dint find it in winuser.h either.

    also is there no way to use unicode WM_CHAR on lower systems than XP?

  4. #4
    Join Date
    Nov 2008
    Location
    Netherlands
    Posts
    77

    Re: 'WM_UNICHAR' was not declared in this scope

    allso what is UNICODE_NOCHAR?

    these GCC headers dont seem complete!

  5. #5
    Join Date
    May 2002
    Posts
    1,435

    Re: 'WM_UNICHAR' was not declared in this scope

    Quote Originally Posted by cj-wijtmans View Post
    ooh yeah i dint find it in winuser.h either.

    also is there no way to use unicode WM_CHAR on lower systems than XP?
    You may have pre-XP header files. The usual thing to do in this case is to download the latest SDK from Microsoft.

    I don't know enough about WM_UNICHAR to speak authoritatively, but based on the documentation I would guess that the message is simply not implemented in pre-XP operating systems.

    Sorry, UNICODE_NOCHAR is a bit of a mystery to me. There's only one reference to it on MSDN (in a blog post) and I don't have time to sort through the Google results.

  6. #6
    Join Date
    Nov 2008
    Location
    Netherlands
    Posts
    77

    Re: 'WM_UNICHAR' was not declared in this scope

    my headers are not pre-xp

  7. #7
    Join Date
    May 2002
    Posts
    1,435

    Re: 'WM_UNICHAR' was not declared in this scope

    I don't know what to tell you. I have Windows Server 2003 R2 SDK and it's defined in winuser.h just like I showed above. Do you know which SDK you are using?

  8. #8
    Join Date
    Nov 2008
    Location
    Netherlands
    Posts
    77

    Re: 'WM_UNICHAR' was not declared in this scope

    im using GCC headers

  9. #9
    Join Date
    May 2002
    Posts
    1,435

    Re: 'WM_UNICHAR' was not declared in this scope

    I admit that I know nothing about gcc, but Microsoft is the only official source for Windows headers.

  10. #10
    Join Date
    Nov 2008
    Location
    Netherlands
    Posts
    77

    Re: 'WM_UNICHAR' was not declared in this scope

    and you are sure that windows headers will work with GCC? i think they are designed for VC++ only.

  11. #11
    Join Date
    May 2002
    Posts
    1,435

    Re: 'WM_UNICHAR' was not declared in this scope

    As I said, I know nothing of gcc, but if it can create Windows applications then I would assume that it can use Microsoft's headers. And I can tell you that if gcc supplies Windows headers then they must originate with Microsoft. They are redistributable after all. Of course, gcc could modify them for its own purposes but I'm not sure that would pass a license test.

    Why are you positive that your headers are post-XP? It sound to me like they aren't. Just because you acquire something after XP has been released doesn't mean that it is XP compatible. gcc could be supplying very old headers.

    Another thing to consider is that maybe in your case you could just define WM_UNICHAR yourself as show above (0x109). You must realize that the definition in the header is only for the benefit of your program. Any post-XP operating system will send the WM_UNICHAR message regardless of whether your program knows about it. If that message is the only thing you are missing then just define it and see what happens.

    There's always the chance that the number I provided will be incompatible in the future, but I've never seen any indication that once a Windows message has been defined that it ever gets changed.

  12. #12
    Join Date
    Nov 2008
    Location
    Netherlands
    Posts
    77

    Re: 'WM_UNICHAR' was not declared in this scope

    because my headers include vista functions

  13. #13
    Join Date
    May 2002
    Posts
    1,435

    Re: 'WM_UNICHAR' was not declared in this scope

    You may still want to consider my advice about defining WM_UNICHAR yourself, but I know that many here also use gcc. Does anyone else have an idea of what is happening? Why don't the gcc headers define this message?

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured