我有一个使用 c 语言编写的 win32 应用程序。我已经实现了命令行参数的使用,这些参数被捕获到 WinMain() 函数的 lpszCmdLine 参数中。这个参数可以在这个函数中访问,WinMain是我当前处理命令行的地方。(使用各种命令行参数设置我的各种变量)。但我希望我可以在回调函数的 WM_CREATE 案例中处理我的命令行参数。现在,有些事情将在 WM_CREATE 中发生,我希望它们根据我的命令行参数以不同的方式发生。
是否可以将特定字符串传递给回调函数?
您可以通过调用GetCommandLine winapi 函数从任何地方访问命令行。
或者,您可以保存传入的 WinMain 参数,然后将其作为参数(最后一个参数,lParam)传递给 CreateWindow() 函数,然后在 WM_CREATE 处理程序中以 CREATESTRUCT.lpCreateParams 的形式访问它
或者,您可以将其保存在某个全局变量中,然后从任何地方访问它。
您可以从进程内的任何位置访问命令行,调用GetCommandLine。如果您希望以argc
/的形式使用它argv
,可以调用CommandLineToArgvW并将命令行拆分。
使用 Visual Studio 附带的 CRT 时,可以使用__argc、__argv、__wargv从任何地方访问拆分的命令行参数。请注意,仅填充 和 之一__argv
,__wargv
这取决于_UNICODE
编译 CRT 入口点时是否定义了预处理器符号。