#40. MFC에서 콘솔 명령어 처리하기

예전의 DOS 프로그램에서는 다음과 같은 함수들을 사용하여 MS-DOS나 Windows의 셸 커맨드를 처리하곤 하였습니다.


int main(int argc, char** argv);


하지만, Windows용 MFC 어플리케이션에서는 일단 기본적으로는 이러한 내용들을 쉽게 처리해주는 기능을 제한적으로만 CCommandLine이라는 클래스를 통하여 처리를 합니다. 하지만 이 클래스로 처리할 수 있는 파라메터는 MFC 어플리케이션과 직접 연결된 기능들, 그러니까 인쇄 기능이나 미리보기 기능, 파일 오픈 등의 기능외에는 다른 것들은 수용하질 못합니다. 그러면, 사용자 정의한 스위치들은 어떻게 처리하는 게 좋을까요?


Windows 전역 변수 중에 (::라는 스코프 연산자를 입력해보십시오.) __argc와 __argv라는 것 두 개가 있습니다. 네, 바로 파라메터죠.


이 파라메터들은 어플리케이션이 처음 수행될 때에 셸로부터 입력받아진 명령들을 고스란히 담아서 저장했다가 어플리케이션이 끝날때까지 보존하고 있습니다. 다시 말하자면, 이 데이터들은 언제 어느때건 사용할 수가 있다는 것입니다.


여러분은 이 데이터들을 CString이나 LPCTSTR과 같은 문자열 버퍼에 복사본을 만든뒤에 그대로 사용하실 수 있습니다. 다음이 그런 예제가 될 수 있을 것입니다.



    CString strParam = __argv[1];


    if(strParam == “/install”) AfxMessageBox(“/install 발견.”);


    if(strParam == “/uninstall”) AfxMessageBox(“/uninstall 발견.”);


    if(strParam == “/run”) AfxMessageBox(“/run 발견.”);


    if(strParam == “/pause”) AfxMessageBox(“/pause 발견.”);


    if(strParam == “/resume”) AfxMessageBox(“/resume 발견.”);


    if(strParam == “/stop”) AfxMessageBox(“/stop 발견.”);


* 참고 : 파라메터임을 나타내기 위하여 일반적으로 ‘/’, ‘-‘ 또는 ‘–‘와 같은 구분 기호를 사용해줍니다. 이것은 파일 경로 지정과의 혼동을 막기 위한 하나의 약속같은 것이지요.

댓글 남기기