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

passing command line string lpszCmdLine to WM_CREATE in c

本文关键字:中的 WM CREATE 命令行 字符串 lpszCmdLine      更新时间:2023-10-16

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

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

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

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

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

您可以从流程中的任何位置访问命令行,调用GetCommandLine。如果您希望它的形式为argc/argv,可以调用CommandLineToArgvW,并将命令行拆分。

使用Visual Studio附带的CRT时,可以使用__argc、__argv、__wargv从任何位置访问拆分命令行参数。注意,只有__argv__wargv中的一个被填充,这取决于在编译CRT入口点时是否定义了预处理器符号_UNICODE