在 c 中将命令行字符串 lpszCmdLine 传递给 WM_CREATE

passing command line string lpszCmdLine to WM_CREATE in c

我有一个用c语言写的win32应用。 我已经实现了命令行参数的使用,这些参数被捕获到 WinMain() 函数的 lpszCmdLine 参数中。 可以在这个函数内访问这个参数,WinMain 是我当前处理命令行的地方。 (用那些不同的命令行参数设置我的各种变量)。 但我希望我可以在我的回调函数的 WM_CREATE 案例中处理我的命令行参数。现在,某些事情已设置为在 WM_CREATE 中发生,我希望它们根据我的命令行参数以不同方式发生。

是否可以将特定字符串传递给回调函数?

  1. 您可以通过调用 GetCommandLine winapi 函数从任何地方访问命令行。

  2. 或者,您可以保存传入的 WinMain 参数,然后将其作为参数(最后一个参数,lParam)传递给 CreateWindow() 函数,然后从 WM_CREATE 处理程序中访问它作为 CREATESTRUCT.lpCreateParams

  3. 或者,您可以将它保存在某个全局变量中,然后从任何地方访问它。

您可以从进程内的任何位置访问命令行,调用 GetCommandLine. If you'd rather have it in the form argc/argv, you can call CommandLineToArgvW,并拆分命令行。

使用 Visual Studio 附带的 CRT 时,可以使用 __argc, __argv, __wargv 从任何地方访问拆分的命令行参数。请注意,仅填充 __argv__wargv 之一,具体取决于编译 CRT 入口点时是否定义了预处理器符号 _UNICODE