2015-07-02 98 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

相關問題