WINDMC(1)

πŸ“¦
version 2.47 Β· 2 versions
, in ubuntu stonking

πŸ’– WINDMC(1) πŸ’–

okay bestie, pull up a chair, we're doing windmc from the GNU Development Tools fam, section 1 of your manual. she's the one who generates Windows message resources πŸ‘‘ and honestly? she eats.


✨ SYNOPSIS ✨

windmc [options] input-file

that's it. that's the whole vibe. options, then your input file. periodt.


🌸 DESCRIPTION 🌸

so windmc reads message definitions out of an input file (a .mc file) and translates them into a whole little family of output files. and not me saying she's versatile but like… she is πŸ’…

the outputs can be four different kinds, and here's the tea on each:

  • "h" β€” a C header file holding the message definitions.
  • "rc" β€” a resource file, and it's compilable by the windres tool. bestie collab 🀝
  • "bin" β€” one or more binary files containing the resource data for a specific message language.
  • "dbg" β€” a C include file that maps message id's to their symbolic name.

the full blow-by-blow description of all these formats lives in Microsoft's documentation, so go read that if you want the deep lore πŸ“š

and when windmc is out here converting from the "mc" format to the "bin" format, the "rc", the "h", and the optional "dbg"? she is literally acting like the Windows Message Compiler. main character energy, no cap.


πŸŽ€ OPTIONS πŸŽ€

  • -a, --ascii_in β€” says the input file you handed over is ASCII. and this? this is the default behaviour, so it's her natural state fr.
  • -A, --ascii_out β€” says the messages in the output "bin" files should be in ASCII format.
  • -b, --binprefix β€” says the "bin" filenames have to be prefixed by the basename of the source file. little name tag, she's organized 🏷️
  • -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 codepage 1252.
  • -d, --decimal_values β€” outputs the constants in the header file in decimal. default is hexadecimal output, bestie.
  • -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 run the --help option to see a list of supported targets πŸ‘€ normally windmc just uses the default format, which is the first one listed by the --help option.
  • -h path, --headerdir path β€” the target directory of the generated header file. default is the current directory.
  • -H, --help β€” displays a list of command-line options and then exits. your girl did her homework πŸ’–
  • -m characters, --maxlength characters β€” instructs windmc to generate a warning if the length of any message exceeds the number you specified. watch the character count, diva.
  • -n, --nullterminate β€” terminate message text in "bin" files by zero. by default they're terminated by CR/LF.
  • -o, --hresult_use β€” not yet implemented. she's supposed to instruct "windmc" to generate an OLE2 header file using HRESULT definitions. status codes are used if the flag isn't specified. so like, don't get your hopes up yet πŸ™ˆ
  • -O codepage, --codepage_out codepage β€” sets the default codepage used to output text files. the default is codepage 1252.
  • -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. she keeps her stuff together okay 🫢
  • -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. and this one is the default behaviour ✨
  • -v, --verbose β€” enable verbose mode. she'll 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 don't come crying when it's not there πŸ₯²
  • @file β€” read command-line options from file. the options that get read are 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 it is not removed. full transparency.

options inside file are separated by whitespace. a whitespace character can be included in an option by surrounding the entire option in either single or double quotes. any character (including a backslash) can be included by prefixing the character to be included with a backslash. and plot twist: the file may itself contain additional @file options β€” any such options get processed recursively. it's giving inception πŸŒ€


πŸ¦‹ SEE ALSO πŸ¦‹

  • the Info entries for binutils.

like, the whole binutils cinematic universe. go explore, 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". legal queen, we stan a properly licensed doc βš–οΈβœ¨


and that's the whole page bestie, you're now officially fluent in windmc. go compile something cute πŸŽ€

binutils-2.47 Β· 2026-09-19 Β· WINDMC(1) β€” mwah, sign-off complete πŸ’‹

πŸ“¦ where this page comes from