目標
讓應用程式處理這裡所見的命令列標誌。
>***.exe /c /d
策略乙個mfc應用程式可以用ccommandlineinfo類的成員函式parseparam()處理一些標準標
志。要新增我們自己的標誌,而仍然能夠支援另外一些標誌,我們將從ccommandlineinfo派
生類,然後過載parseparam()。
步驟1.建立乙個新的ccommandlineinfo類
1)用classwizard建立乙個派生於ccommandlineinfo的新類。在新類中,為應用程式要
處理的每個新的標誌新增乙個boolean或string成員變數。
classcwzdcommandlineinfo:publicccommandlineinfo
;3)如下實現parseparam():
voidcwzdcommandlineinfo::parseparam(consttchar*pszparam,
boolbflag,boolblast)
//m_strfilenamegetsthefirstnonflagname
elseif(m_strfilename.isempty())
88第二部分使用者介面例項
ccommandlineinfo::parseparam(pszparam,bflag,blast);
}注意到變數pszparam包括命令列中的下一項。如果pszparam的後面是乙個—(連字元)或
/(正斜槓)字元,則bflag變數為true,這些字元將被刪除;如果pszparam是一行中最後乙個
變數,則blast為true。確信最後呼叫基類的parseparam(),否則標準標誌不被處理。
4)有關命令列訊息類的詳細清單,參見本節的「清單—命令列訊息類」。
2.把新的命令列訊息類插到應用程式類中
1)在應用程式類中找到parsecommandline(),並用該新類替換ccommandlineinfo類。
//parsecommandlineforstandardshellcommands,dde,fileopen
cwzdcommandlineinfocmdinfo;
parsecommandline(cmdinfo);
2)現在,命令列選項不能作為cmdinfo變數的成員變數。
if(cmdinfo.m_baflag)
3)要使這些選項在整個應用程式中可得,則把cmdinfo嵌入應用程式中,並訪問它的成員
變數。說明
■標準mfc標誌如下,真正處理這些標準命令列發生在processshellcommand(cmdinfo)
中,它正好在應用程式類中parsecommandline()之後。
nothing使應用程式試圖開啟乙個新文件
filename使應用程式試圖以文件方式開啟檔名
/pfilename使應用程式開啟並列印給定的檔名到預設的印表機
/ptfilename與上面相同,但輸入到指定的印表機
printerdriverport
/dde使應用程式開始執行,並等待dde命令
/automationcom標誌
/embedding
/unregister
/unregserver
■處理非標準標誌(如名字)會有點複雜,我們認為出現的第乙個非標準標誌是文件檔案名。
然而,一旦乙個檔名被發現,可以根據目的攫取任何非標準標誌,這就是說,除非
遇到/pt標誌,在這種情況下,下面三個非標準標誌變數用來初始化列印。為了簡化起
見,也可通過不把/pt標誌傳遞給基類中的parseparam()來禁用/pt標誌。
■當然,如果不需繼續支援前面所示的標準mfc標誌,則可以更加自由地行動。只要不
用呼叫基類的parseparam(),可以使用任何標誌或非標準標誌選項。但是,不要因為能
用非標準標誌,而輕易放棄這些標準標誌提供的功能。
MFC學習筆記二 處理鍵盤訊息
一 新建乙個單文件應用程式工程,取名叫usekey 二 我們的目標是這樣的,如果依次鍵入a b c,則分別顯示a ab abc,所以應該有乙個變數來存放。而mfc是文件檢視結構的,所以在文件中建立乙個變數是合適的。在類cusekeydoc的定義 usekeydoc.h標頭檔案中 中加入乙個成員 cl...
Rust 1 7 0 處理命令列引數
std是 rust 標準函式庫 env 模組提供了處理環境函式。在使用標準函式庫的時候,使用 use 匯入對應的 module 一 直接輸出use std env fn main argument cargo run 12 and 78running target debug attribute t...
main 處理命令列選項
main 處理命令列選項 int main int argc,char argv 是c 的裡面的 main 函式的一種擴充套件原型 其中int argc 表示的是執行程式時命令列裡所帶引數的個數 1 因為包括了該程式名 如果不帶引數的話那就預設是 1 char argv 引數是字元陣列的指標,也可以...