레이블이 윈도우인 게시물을 표시합니다. 모든 게시물 표시
레이블이 윈도우인 게시물을 표시합니다. 모든 게시물 표시

2009년 11월 7일 토요일

Visual C++에서 윈도우 내장 이미지 뷰어 사용하는 방법

메르카토르 지도에 최단경로를 그리는 프로그램을 개발 중 이미지 파일(PNG)을 화면에 간단히 출력하는 기능을 넣기로 했다.

처음엔 그냥 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);


2009년 9월 2일 수요일

VC++에서 WOW64에서 동작중인지 확인하는 방법

32비트 윈도우 어플리케이션이 실행되는 환경이 진짜 32비트인지, WOW64인지 확인하는 방법이 궁금해졌다.
찾아보니 역시 모든 소스는 MSDN에 있더라.

IsWow64Process()라는 함수가 있는데, 이 놈을 실행하면 자신의 환경이 진짜 32비트인지 가짜인지를 알려준다.

포함해야 하는 헤더는 windows.h 하나 뿐이다.
아래와 같이 간단하게 IsWow64() 함수를 만들어서 사용하면 된다.

#include <windows.h>

typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);

LPFN_ISWOW64PROCESS fnIsWow64Process;

BOOL IsWow64()
{
    BOOL bIsWow64 = FALSE;

    fnIsWow64Process = (LPFN_ISWOW64PROCESS) GetProcAddress(
        GetModuleHandle(TEXT("kernel32")),"IsWow64Process");
 
    if (NULL != fnIsWow64Process)
    {
        if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))
        {
            // 핸들 오류. 알아서 오류 처리
        }
    }
    return bIsWow64;
}

참 쉽죠잉?

- 출처: IsWow64Process Function

2008년 10월 18일 토요일

뒤늦게 올리는 PIFF 부스 관광(?)기

부산에서 회사의 전시회가 있었습니다.
장소는 BEXCO, 숙소는 해운대, 기간은 PIFF 기간… 최고의 상황이지 않습니까?
회사에서 PIFF를 볼 수 있도록 마치 지원 내지는 종용을 하는 분위기 같았습니다!!!

하지만, 전시회가 바빠서 정작 영화는 한 편도 보지 못했습니다.
저녁이 되면 시간은 좀 있었지만, 몸이 파김치가 되어서 마음의 여유가 전혀 없었습니다.

대신, 짬을 잠시 내서 해운대에 설치된 PIFF 부스만 좀 돌아다니고 인증샷만 찍었습니다. ㅠ.ㅠ




디카를 따로 갖고 간 것이 아니라 폰카(그것도 극악의 모토롤라 레이저 ㅡㅡ;;;)로 찍은지라 적절한 구도는 생각도 못하고 그저 얼굴만 슬쩍 집어넣었습니다. ㅠ.ㅠ

사용자 삽입 이미지

위의 네이버 PIFF 카페 바로 앞에 이와 같은 스크린이 설치되어 있었습니다.
(화면이 좀 뿌연 관계로 잘 안 보이긴 하지만) 윈도우 부팅 화면인데, 딱 여기서 얼어있었습니다.
문제는 이렇게 얼어있는 상태로 몇날 몇일을 가더란 겁니다.
관계자들이 아무도 신경쓰지 않고 있었단 얘기입니다. ㅡㅡ;;;
(보통 여기서 얼면 바로 공포의 블루스크린이 뜨는데, 특이하게도 딱 저 상태에서 굳어있더군요)