WINDMC(1)
π WINDMC(1) β like, the windmc manual page, bestie
okay so welcome to windmc, a page from the GNU Development Tools collection β¨ grab a snack, this one's actually pretty chill.
πΈ NAME πΈ
windmc β the girlie that generates Windows message resources. that's it, that's the job π
β¨ SYNOPSIS β¨
windmc [options] input-file
π¦ DESCRIPTION π¦
so here's the vibe: windmc reads message definitions out of an input file (.mc, iykyk) and translates them into a whole little set of output files. and those output files? there are four kinds, and they're all serving something different π
"h"β a C header file holding the message definitions. classic."rc"β a resource file that's compilable by thewindrestool. teamwork makes the dream work π«Ά"bin"β one or more binary files with the resource data for a specific message language. one per language, main character energy per file π"dbg"β a C include file that maps message id's to their symbolic name. lowkey the most useful one ngl.
the exact description of these different formats lives in documentation from Microsoft β not here, so don't come for me π
and when windmc converts from the "mc" format to the "bin" format, "rc", "h", and the optional "dbg", it's literally acting like the Windows Message Compiler. no cap.
π OPTIONS π
-a,--ascii_inβ says the input file you gave it is ASCII. this is the default behaviour, so if you do nothing, you already ate β-A,--ascii_outβ says the messages inside the output"bin"files should be in ASCII format.-b,--binprefixβ says the"bin"filenames should be prefixed by the basename of the source file. cute little name tag π-c,--customflagβ sets the customer bit in all message id's.-Ccodepage,--codepage_incodepage β sets the default codepage used to convert the input file to UTF16. the default isocdepage 1252(yes, that's exactly how it's spelled in the docs, i'm not touching it π).-d,--decimal_valuesβ outputs the constants in the header file in decimal. default is hexadecimal output, so this is you choosing chaos (base-10 chaos).-eext,--extensionext β the extension for the header file. default is the.hextension.-Ftarget,--targettarget β specify the BFD format to use for abinfile as output. this is a BFD target name; you can use the--helpoption to see a list of supported targets. normallywindmcuses the default format, which is the first one listed by the--helpoption π-hpath,--headerdirpath β the target directory for the generated header file. default is the current directory.-H,--helpβ displays a list of command-line options and then exits. the classic "help me help you" move π«Ά-mcharacters,--maxlengthcharacters β tellswindmcto generate a warning if the length of any message exceeds the number you specified. a gentle "bestie, that's too long" π-n,--nullterminateβ terminates message text in"bin"files with zero. by default they're terminated by CR/LF.-o,--hresult_useβ not yet implemented, so don't get excited π. it instructs"windmc"to generate an OLE2 header file using HRESULT definitions. status codes are used if the flag isn't specified.-Ocodepage,--codepage_outcodepage β sets the default codepage used to output text files. the default isocdepage 1252(again β literally what the page says, keeping it π ).-rpath,--rcdirpath β the target directory for the generated"rc"script and the generated"bin"files that the resource compiler script includes. default is the current directory. yes, both, they move together like a duo π-u,--unicode_inβ says the input file is UTF16.-U,--unicode_outβ says the messages in the output"bin"file should be in UTF16 format. this is the default behaviour, so you're already slaying β¨-v,--verboseβ enable verbose mode. she will tell you everything.-V,--versionβ prints the version number forwindmc.-xpath,--xdgbpath β the path of the"dbg"C include file that maps message id's to the symbolic name. no such file is generated without specifying this switch β so if you want it, you have to ask for it, periodt.@file β read command-line options from file. the options read get inserted in place of the original@file option. if file doesn't exist, or can't be read, then the option is treated literally and not removed. no silent disappearing acts here π
options in file are separated by whitespace. a whitespace character may be included in an option by surrounding the entire option in either single or double quotes. any character (including a backslash) may be included by prefixing the character to be included with a backslash. the file may itself contain additional @file options; any such options will be processed recursively. it's files all the way down π
π₯ SEE ALSO π₯
the Info entries for binutils. that's where the real lore lives, iykyk π
π COPYRIGHT π
Copyright (c) 1991-2026 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". read it, it's giving legally iconic πβ¨
okay that's the whole page bestie, you're officially informed π§π this little number came to you from binutils-2.47, dated 2026-08-31 β mwah, go compile something cute π
π
π¦ where this page comes from
- arch rolling: riscv64-linux-gnu-binutils 2.47-1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms