처음엔 그냥 ShellExecute() 함수에서 이미지 파일을 직접 실행시켰는데, PC마다 일관성이 없어 보기 좋지 않았다.
그래서 윈도우 XP에 내장된 이미지 뷰어를 이용해서 이미지 파일을 출력하기로 방향을 수정.
Visual C++에서 이런 식으로 윈도우에 내장된 이미지 뷰어를 사용하려면 아래와 같은 짤막한 코드면 충분하다.
csPNG에 이미지 파일의 full path가 들어있다고 가정함.
CString csParam;
csParam.Format(_T("shimgvw.dll, ImageView_Fullscreen %s"), csPNG);
ShellExecute(NULL, _T("open"), _T("rundll32.exe"), csParam, NULL, SW_SHOW);
나중에 써봐야겠네요
답글삭제1. 그런데 이거는 winXP 전용인가요?
2. 레지스트리로 변경되어도 무조건 내장 뷰어로 띄우는건가요?
@구차니 - 2009/11/09 13:47
답글삭제원체 (W2k를 포함한) XP 이전의 OS는 아오안이라서요...
그리고, 무조건 내장 뷰어로 띄웁니다. ^^;
원래 ShellExecute() 함수는 잘 쓰는 함수입니다.
답글삭제그냥 exe 파일을 실행할때 쓸 수 있고 게다가 여러가지 파라미터를 추가할 수 있죠~
당근 왠만한 OS는 기본지원입니다.
아마도 windows 95 이상부터 실행 가능 할겁니다... ^^
@oneniner - 2009/11/11 16:08
답글삭제헉... 웬 이런 생뚱맞은 답을...
원래는 ShellExecute(NULL, _T("open"), _T("이미지 파일명"....); 이렇게 했다가
다시 ShellExecute(NULL, _T("open"), _T("rundll32.exe"), parameter....); 으로 바꿨단 얘기인데...
@BLUEnLIVE - 2009/11/12 09:59
답글삭제내가 잘못 얘기한겐가~ ㅋㅋ 나는 ShellExecute() 함수는 어떤 OS에서도 되는거였구 마찬가지로 DLL 을 콜할 때 자네처럼 하면 어떤 OS 에서두 콜이 잘 된다구 얘기할려던 건디... ㅠ.ㅠ
@oneniner - 2009/11/11 16:08
답글삭제이 글의 핵심은 'shimgvw.dll'...
ShellExecute는 거들 뿐...