1

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

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

4

2 回答 2

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

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

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

于 2015-07-02T20:03:58.267 回答
2

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

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

于 2015-07-02T20:09:20.750 回答