Tech & IT/프로그래밍

CWinApp::ProcessShellCommand 함수의 역할

해피콧 2009. 2. 4. 16:36
'); }
'); }
출처 : http://www.tipssoft.com/bulletin/board.php?bo_table=old_bbs&wr_id=103

[MFC] CWinApp::ProcessShellCommand 함수의 역활은?

[
질문] 

안녕하세요 

아래는 InitInstance()함수인데여 

if (!ProcessShellCommand(cmdInfo)) return FALSE; 

이부분의 역활을 모르겠읍니다. 이부분때문에 프로그램실행이 안되는것같읍니다 
이앞부분에 메세지박스를 띄우면 잘뜨고 다음에 빈문서를 만들수없다는 메세지와 
확인버튼을 누르면 그대로끝나버립니다. 그리구 위부분뒤에 메세지박스를 넣으면 
넣은메세지박스는안뜨고 빈문서를 만들수없다는메세지가뜹니다. 그러니까 
위부분코드가 빈문서를생성할수없다는메세지를 띄우고 그냥리턴하는모양인데여 
무슨역활을하는지 도움말 부탁합니다. 

[답변] 

안녕하세요~! 

ProcessShellCommand 함수는 기본적으로 사용자가 실행시에 특정한 인자를 적지 않는다면 

      OnFileNew(); 

와 동일한 기능을 수행합니다. 즉, 메뉴의 새파일을 선택했을때 호출되는 함수이죠. 
특별한 기능을 필요로 하지 않는다면 ProcessShellCommand 대신 
OnFileNew 를 사용해도 동일한 기능을 수행합니다. 

일반적으로 프로그램을 그냥 실행하기도 하지만 탐색기에서 특정 파일을 더블 클릭했을때 
해당 파일과 연결된 프로그램을 실행하기도 하죠.. 예를 들어, *.DOC 파일을 더블클릭하면 
Microsoft Word가 실행되면서 해당 파일이  열리잖아요.. 
이럴때는 ProcessShellCommand 함수가 OpenDocumentFile 함수를 수행하게 됩니다. 
또, DDE 기능을 이용할때는 ProcessShellCommand 함수가 본 프로그램을 숨기는 기능도 
수행합니다. 

결국 프로그램 실행할때 넘어오는 컴멘드 라인 명령문(cmdInfo 변수에 있는)을 상황별로 수행하는 
함수가 ProcessShellCommand 함수입니다. 

님의 프로그램이 그런 오류를 발생한다니, 분명 OnFileNew로 바꾸어도 나겠네요.. 코드가 안되는 
이유를 좀더 정확히 알려면 CDocument 관련 소스를 살펴보셔야 할것 같습니다. 해당 코드에 
문제가 있는것 같은데, 어떻게 코드를 구성했는지 알수 없기 때문에 좀더 자세한 답변을 드리기가 
어려울것 같네요 ^^;; 

그럼, 즐거운 하루되세요~! 






출처 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=209255&ref=209237

 MDI에서 디버깅하면.. 문서하나가 자동으로 열리는데 ..안열리게 할려구합니다...  | VC++ 일반 2002-06-28 오전 10:20:00
이기준 (sepiros78)  이기준님께 메시지 보내기이기준님을 내 주소록에 추가합니다.이기준님의 개인게시판 가기 번호: 209237   / 평점:  (-)  / 읽음:881
어케 하는거죠?

MDI 를 만들고. 그냥. 실행하면.. 문서창 하나가. 자동으로 열리어지는데..

이 창을 안띄우고 싶어요...

도와주세요!!!!
이 글에 평점 주기: 
 [답변]if (!ProcessShellCommand(cmdInfo)) 2002-06-28 오전 11:06:00
이현범 (hblee75)  이현범님께 메시지 보내기이현범님을 내 주소록에 추가합니다.이현범님의 개인게시판 가기 번호: 209255   / 평점:  (-)  
App class 가 정의 되어 있는 파일,, 그러니깐....프로젝트 이름이 test였다면 test.cpp파일을 열고 다음 코드를 찾아
주석 처리 하세요!!
다음 함수에 관한 사항은 여러 책에 나와 있으니까 함 찾아 보시구여^^ 물론 MSDN에도 있습니다.
그럼 즐프.....
if (!ProcessShellCommand(cmdInfo))
    return FALSE;