WINDMC(1)

πŸ“¦ version 2.47, in arch rolling

πŸ’… 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 the windres tool. 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.
  • -C codepage, --codepage_in codepage β€” sets the default codepage used to convert the input file to UTF16. the default is ocdepage 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).
  • -e ext, --extension ext β€” the extension for the header file. default is the .h extension.
  • -F target, --target target β€” specify the BFD format to use for a bin file as output. this is a BFD target name; you can use the --help option to see a list of supported targets. normally windmc uses the default format, which is the first one listed by the --help option πŸ‘€
  • -h path, --headerdir path β€” 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 🫢
  • -m characters, --maxlength characters β€” tells windmc to 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.
  • -O codepage, --codepage_out codepage β€” sets the default codepage used to output text files. the default is ocdepage 1252 (again β€” literally what the page says, keeping it πŸ’…).
  • -r path, --rcdir path β€” 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 for windmc.
  • -x path, --xdgb path β€” 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 (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