반응형
MSDN에 나와있음
http://msdn.microsoft.com/en-us/library/bb759844(VS.85).aspx
이곳 잘 살펴보고 사용하기


아래에도 예제가 나와있음
출처 : http://www.eggheadcafe.com/software/aspnet/29583177/get-folder-from-full-file.aspx
Here are some functions you may find useful (since you are using MFC):
Tom
//
// Returns the file portion from a path
//
CString GetFileOnly(LPCTSTR Path)
{
// Strip off the path and return just the filename part
CString temp = (LPCTSTR) Path; // Force CString to make a copy
::PathStripPath(temp.GetBuffer(0));
temp.ReleaseBuffer(-1);
return temp;
}

//
// Returns the folder portion from a path
//
CString GetFolderOnly(LPCTSTR Path)
{
// Strip off the file name so we can direct the file scanning dialog to
go
// back to the same directory as before.
CString temp = (LPCTSTR) Path; // Force CString to make a copy
::PathRemoveFileSpec(temp.GetBuffer(0));
temp.ReleaseBuffer(-1);
return temp;
}

//
// Adds a backslash to the end of a path if it is needed
//
CString AddSlash(LPCTSTR Path)
{
CString cs = Path;
::PathAddBackslash(cs.GetBuffer(_MAX_PATH));
cs.ReleaseBuffer(-1);
if(cs.IsEmpty())
cs = _T("\\");
return cs;
}

//
// Removes a backslash from the end of a path if it is there
//
CString RemoveSlash(LPCTSTR Path)
{
CString cs = Path;
::PathRemoveBackslash(cs.GetBuffer(_MAX_PATH));
cs.ReleaseBuffer(-1);
return cs;
}

//
// Adds a folder path and file together to make a file path
//
CString AddPathAndFile(LPCTSTR Folder, LPCTSTR File)
{
CString cs = Folder;
::PathAddBackslash(cs.GetBuffer(_MAX_PATH));
::PathAppend(cs.GetBuffer(_MAX_PATH),File);
cs.ReleaseBuffer(-1);
return cs;
}

//
// Adds a .ext to the end of a file path
//
CString AddExt(LPCTSTR Path, LPCTSTR Ext)
{
CString cs = Path;
::PathAddExtension(cs.GetBuffer(_MAX_PATH),Ext);
cs.ReleaseBuffer(-1);
return cs;
}

//
// Returns true if file exists or false if file does not exist
//
BOOL FileExists(LPCTSTR Path)
{
return (::PathFileExists(Path));
}

//
// Returns just the .ext part of the file path
//
CString GetFileExt(LPCTSTR Path)
{
CString cs;
cs = ::PathFindExtension(Path);
return cs;
}

CString GetFileName(LPCTSTR Path)
{
CString csFile = GetFileOnly(Path);
if(!GetFileExt(csFile).IsEmpty()) { // Is there an extension
::PathRemoveExtension(csFile.GetBuffer(_MAX_PATH));
csFile.ReleaseBuffer();
}
return csFile;
}


//
// Exchanges one file extension for another and returns the new fiel path
//
CString RenameFileExt(LPCTSTR Path, LPCTSTR Ext)
{
CString cs = Path;
::PathRenameExtension(cs.GetBuffer(_MAX_PATH), Ext);
return cs;
}
반응형
반응형
출처 : 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;
반응형
반응형
1.
http://cafe.naver.com/asusnf.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=8408

2.
[정보] SATA HDD의 NCQ지원(AHCI) 활성화 방법
dolparri (dolparri) 218.148.xxx.34

요즘 나오는 SATA HDD에는 NCQ기능이 있어서 멀티태스킹 환경에서 hdd의 부하를 줄여주고 속도를 올릴수 있습니다. 듀얼코어 등에서는 더욱 필요한 기능입니다. 이 기능을 사용하려면 NCQ지원 HDD, NCQ지원 마더보드, NCQ지원 OS라는 세가지가 동시에 갖춰져야 하죠.

 

인텔칩셋의 보드일 경우, HDD와 M/B가 갖춰져 있더라도 OS에서 이 기능을 지원하게 하려면, 기존에 알려진 방법으로는,

 

1. M/B의 BIOS에서 SATA as [AHCI] 모드로 설정.

2. Floppy disket에 AHCI driver를 복사한 다음에 OS CD로 Booting하고,

3. Setup 메뉴가 나올때 F6를 눌러서 Floppy의 AHCI Driver를 선택해 준 다음에 OS 새로 설치.

 

겨우 이작업을 하자고 요즘 쓰지도 않는 FDD가 있어야 하고, 만일 설치 file이 있는 disket를 미리 준비하지 못했으면 OS설치 도중에 다른 컴퓨터에 가서 floppy를 만들어와야 하는 번거로움이 있죠. 그렇다고 SATA as [IDE]로 설치하면 floppy 없이 설치는 되는데 HDD의 성능을 100% 발휘하지 못하는 문제가 있고, OS를 설치한 후에는 AHCI모드로 변경도 안된다고 알려져 있습니다.

 

그런데, 꼭 그런것은 아니고 다음의 방법을 사용하면 됩니다. 지금 SATA as [IDE] 모드로 사용중인 분들도 물론 변경 가능합니다. (물론 자신이 현재 사용중인 M/B가 AHCI 모드를 지원하는 보드여야 합니다. 인텔칩셋의 마더보드라면 사우스 브릿지가 ICH6R/7R/8R/7M/6M/7DH/7MR 같은 것... M/B를 새로 구입하시는 분은 이런점을 염두에 두고 구입하면 좋겠죠)

 

1. BIOS에서 SATA as [IDE] 모드로 설정. (BIOS에 따라서 약간 다를수 있음)

2. Windows XP/2003 등을 정상적인 방법으로 설치. (이런저런 칩셋 패치도 모두 해줌)

3. 자신의 M/B 칩셋 이름의 정확한 명칭을 알기 위하여 Intel Chipset Identification Utility (chiputil.exe)를 다운 받아서 확인합니다.

4. www.intel.com에서 Intel Matrix Storage Manager (iata60_cd.exe(Multi Language Version))도 다운받습니다.

5. "iata60_cd.exe -a -a -pc:\temp" 를 command line 명령어로 실행하면 c:\temp 밑에 file들이 풀려 나옴. (참고:이 프로그램을 그냥 실행하면 칩셋이 않맞다고 설치가 안됩니다.)

6. 장치관리자에서 IDE ATA/ATAPI controllers 밑에 Intel(R) 82801 XX Serial ATA...가 있음.

7. 이것의 등록정보에서 Update Driver(또는 이와 유사한 버튼)를 누르고 적당히 선택하여 조금전에 풀린 C:\Temp\Driver에 있는 iaahci.inf를 지정해줌.

8. 자신의 M/B 칩셋 이름을 선택해 줌. (예: Intel (R) 82801 GR/GH SATA AHCI Controller)

9. 뭐라뭐라 경고가 뜨면 무시함.

10. 컴퓨터 종료.

0. BIOS 셋업으로 들어가서 SATA as [IDE]를 SATA as [AHCI]로 변경함.

11. 재부팅.

12. iata60_cd.exe을 실행하여 Intel Matrix Storage Manager를 정상적으로 설치하고, 설치된 Matrix Storage Console프로그램을 실행하여 NCQ가 정상적으로 동작하는지 확인. (한글로 NCQ를 "기본 명령어 대기열 삽입 지원"(???) 이라고 번역해놓았네요)

 

말은 길은데, 결론은 처음 OS설치할때 굳이 AHCI 모드로 설치하려고 없는 플로피를 찾아 헤맬 필요가 없다는 뜻입니다. OS설치후에 수동으로 설치해주면 됩니다.


반응형
반응형
반응형
반응형
반응형

+ Recent posts