2015-07-02 51 views
1

我有一个使用c语言编写的win32应用程序。 我已经实现了使用命令行参数,这些参数被捕获到WinMain()函数的lpszCmdLine参数中。 该参数可以在此函数中访问,WinMain是我当前正在处理命令行的位置。 (用各种命令行参数设置我的各种变量)。 但我希望我可以在我的回调函数的WM_CREATE情况下处理我的命令行参数。现在,有些东西被设置为在WM_CREATE中发生,我希望它们根据我的命令行参数以不同的方式出现。将命令行字符串lpszCmdLine传递给WM_CREATE c

是否可以传递一个特定的字符串到回调函数?

回答

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

  2. 或者,您也可以保存在WinMain函数的参数传递,然后把它传递给CreateWindow的()函数的参数(最后一个参数,lParam的),然后WM_CREATE处理内访问它CREATESTRUCT.lpCreateParams

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

+0

我觉得我喜欢3.最好的简单 - 谢谢! – a1s2d3f4

+0

@ a1s2d3f4,你已经有了一个有效的全局变量--GetCommandLine函数。 – chris

+0

@chris,除了我明白,GetCommandLine返回应用程序的完整路径后跟命令,而我已经有一个解析函数,不希望这个路径https://www.powerbasic.com/support/help/pbcc /winmain_function.htm – a1s2d3f4

2

您可以从您的进程中的任何地方访问命令行,调用GetCommandLine。如果您希望以argc/argv的形式提供,可以拨打CommandLineToArgvW,并将命令行分开。

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

相关问题