More stuff about the headers

Shachar Shemesh wine-devel at
Sun Sep 7 03:30:43 CDT 2003

Steven Edwards wrote:

>First thing is first. Whats up with the 
>*_must_be_suffixed_with_W_or_A_in_this_context error?
If you are compiling a core Wine DLL, you are not allowed to use the 
base name (IDC_ARROW). You must pick either the Ansi (IDC_ARROWA) or 
Wide (IDC_ARROWW) versions. To achieve this, wine uses a macro called 
"WINELIB_NAME_AW". It is defined in windef.h. You can see that if 
UNICODE is defined, this macro adds the "W" at the end, if not defined, 
it adds an "A" at the end, but if it is part of the wine compilation, it 
defines a name that is bound to cause an error, by appending 

In other words, if you need the Ansi version, use IDC_ARROWA. If you 
need the Unicode version, use IDC_ARROWW, but you cannot use IDC_ARROW 
from inside a Wine DLL.

>To build comctl32 with the Mingw/PSDK headers we need to do something about this.
>Almost every file is expecting IDC_ARROWA and the PSDK/w32api dont define a A/W suffix. I think
>once we fix this comctl32 should build out of the box with the PSDK or w32api.
Just use IDC_ARROWA directly. If you get this error, it implies that you 
are using the Wine headers already. As IDC_ARROW is defined in 
include/winuser.h on line 2560, and IDC_ARROWA is defined two lines 
above it, I find it hard to accept that IDC_ARROW is defined as it is, 
while IDC_ARROWA is undefined.


Shachar Shemesh
Open Source integration consultant
Home page & resume -

More information about the wine-devel mailing list