我有一個現有的MFC應用程序,我試圖擴展接受命令行參數並運行無人蔘與。MFC - 擴展應用程序從命令行運行
我需要在之後啓動一些事件InitInstance()已完成並且現有的GUI已完全加載。我看過winmain.cpp,但是我不清楚如何運行我的事件,因爲它似乎啓動了一個線程並從調試器中'消失'(即接下來要執行什麼?必須是MFC循環,對嗎?是否有可能掛鉤?)我對此很陌生,完全有可能我錯過了更高級別的洞察力,這並非易事。感謝指針。
謝謝。
我有一個現有的MFC應用程序,我試圖擴展接受命令行參數並運行無人蔘與。MFC - 擴展應用程序從命令行運行
我需要在之後啓動一些事件InitInstance()已完成並且現有的GUI已完全加載。我看過winmain.cpp,但是我不清楚如何運行我的事件,因爲它似乎啓動了一個線程並從調試器中'消失'(即接下來要執行什麼?必須是MFC循環,對嗎?是否有可能掛鉤?)我對此很陌生,完全有可能我錯過了更高級別的洞察力,這並非易事。感謝指針。
謝謝。
你可以重載的PreTranslateMessage比跳過的郵件有
我會分析命令行中InitInstance
就像往常一樣,但不是立即處理所有找到的命令,你所關心的那些添加一些特殊的處理(例如)將消息發回給自己的消息隊列,所以當你準備好開始處理消息時,它們將首先顯示出來。
爲了做到這一點,我想大概派生一類從CComandLineInfo
,並覆蓋ParseParam
來處理你所關心的命令(並將其發送給它不承認任何其他參數回CComandLineInfo::ParseParam
被正常處理)。使用自定義命令行分析器
// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
隨着一個:然後,在InitInstance中,代替這段代碼
MyCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
ParseCommandLine
然後將調用您ParseParam
在命令行上的每一個參數,給你第一次有機會決定它的含義以及如何處理它。你可能想要查看CComandLineInfo
已經理解的「標準」命令,並且讓它們保持單獨,除非你真的真的需要改變它們。
攔截命令行參數的最簡單方法是引用全局變量__targv(定義爲LPCTSTR* __targv
或類似的東西)和__argc(定義爲int
)。
例如:
for(int i = 0; i < __argc; ++i) {
DoSomethingWithArg(__targv[i]);
}
基本上就像任何其他控制檯應用程序。