CDC memDC;
BITMAP bitInfo;
memDC.CreateCompatibleDC(&dc);
CBitmap bmp;
CBitmap *pOldBmp = NULL;
bmp.LoadBitmapA(IDB_ME);
bmp.GetBitmap(&bitInfo);
pOldBmp = memDC.SelectObject(&bmp);

::TransparentBlt(dc.m_hDC, 0, 0, bitInfo.bmWidth, bitInfo.bmHeight, memDC.m_hDC, 0,0,bitInfo.bmWidth, bitInfo.bmHeight, RGB(0,0,0));

아규먼트 이해는 쉬울꺼다~ 마지막 RGb(0,0,0)이 중요~ 여기서는 0,0,0이니깐 검정색을 무시하고 출력하게 된다.

이미지에서 투명하게 할 부분을 미리 검정색으로 셋팅 해두고 하면 알 수 있다.

 

만약 이 함수를 했을 때 error LNK2001 : unresolved external symbol 뜨면

 

프로젝트->세팅에서

링크에서 Msimg32.lib를 추가해줘야 한다. MS Visual6은 추가해야되고

그 이후 버전은 아마 그냥 될것임


출처 : http://blog.naver.com/PostView.nhn?blogId=mycpp&logNo=120104796241&redirect=Dlog&widgetTypeCall=true


Posted by pkss
,

윈도우 dpi를 변경시 vc++ 6.0으로 만든 프로그램들은

초점이 안맞는 것 처럼 뿌옇게 보이는 현상이 나타난다.

이유는 dpi변경시 적용아 안되기 때문이다.

이걸 해결 하기 위해선

메니패스트 파일을 이용하면 된다.


1. 파일생성

 - dpiaware.manifest 파일을 만든다

2. 파일작성

 - 아래 내용을 작성하고 저장한다. 참고로 아래는 vc++2010버전에 있는 파일내용이다.

<?xml version="1.0" encoding="utf-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

  <application xmlns="urn:schemas-microsoft-com:asm.v3">

    <windowsSettings>

      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>

    </windowsSettings>

  </application>

</assembly>

3. 매니패스트 적용

 - dpiaware.manifest 파일을 해당 프로젝트에 적용시킨다.


적용시키는 방법은 링크로.......ㅡ,.ㅡ;;

아래 링크는 vc++ 6.0에서 매니패스트파일을 이용하여 관리자 권한 상승시키는 방법인데

적용방법은 똑같으니 아래 링크를 참고하시길.....

http://www.tipssoft.com/bulletin/board.php?bo_table=FAQ&wr_id=1343


그리고 2010 버전에서는(확인은 안해봣지만 2008이나 2005버전도 있을 것 같다)

로젝트 - 속성 - 매니패스트 도구 - 입력 및 출력 - DPI 인식 사용

에서 "예"를 선택해주면 간단히 해결된다. 보통 "예"가 디폴트다

그럼 모두 즐프~

Posted by pkss
,

exe프로그램을 ie에서 배포할시 디지털 서명을 해야 "알수없는 게시자"라는 보안경고를 피할수 있다.

디지털 서명을 하기 위해선

공인된 인증기관에서 인증서를 "유료로"받아야 한다...ㅠㅠ

ms가 이래서 사랑받나보다^^;


아래는 개인인증서를 만들어서 테스트 하는 방법이다.


1. 필요한 파일

makecert.exe

signcode.exe

CHKTRUST.exe

관련 sdk나 vc++를 설치했다면 버전에 따라 다르지만 깔려있다

없으면 구글 널려있으니 받자


2. 인증서 만들기

cmd에서 makecert.exe가 있는 경로로 이동한다

makecert.exe -r -pe -n "CN=Dev_Test" -b 01/01/2011 -e 12/31/2020 -sky exchange -ss my

를 치고 엔터를 누르면 암호묻는 창이 두번 나온다 나는 "12"를 쳤다

보면 알겠지만

makecert.exe -r -pe -n "CN=인증서이름" -b 생성날짜 -e 만기날짜 -sky exchange -ss my

이다

signcode.exe를 실행

 - 디지털 서명할 파일 선택(test.exe)

 - 표준 선택

 - 저장소에서 선택 눌러서 생성된 인증서 선택

 - 계속 다음 눌러서 마침


3. 확인

cmd에서

CHKTRUST test.exe

를 쳐서 확인해보자

서명을 확인할수 있지만 역시나 알수 없는 게시자 이다..........

개인인증서이기 때문인데 인증서를 신뢰된 루트 인증 기관으로 옮기면 된다

윈도우키 + r을 눌러 실행창을 띄우고

certmgr.msc를 입력하고 엔터

내가 만든 인증서가 "개인"폴더에 들어가있는 걸 확인할수 있다

이걸 "신뢰된 루트 인증 기관"폴더로 옮기면 된다. 

걍 드래그 해서 옮기면된다

CHKTRUST test.exe로 확인해 보자

알수없는 게시자가 사라졌다.

참좋은 ms다^^

끝~


위화면은 네트워크 공유폴더에 접속하여 파일을 넣고 실행해본 화면이다.


다른 컴퓨터에서 확인할려면

exe를 받고 우클릭 속성으로 들아가면

디지털 서명 탭이 생긴걸 확인할 수 있다

탭으로 들어가서

인증서 선택 - 자세히 보기 - 인증서 보기 - 인증서 설치

인증서 설치는 "모든 인증서를 다음 저장소에 저장"을 선택하여

역시나 "신뢰된 루트 인증 기관"폴더에 설치해주면 된다

===========================================================

이미지도 넣고 파일도 첨부하고 친절하게 설명도 하고 싶지만

귀찮은 관계로 그냥..ㅠㅠ

Posted by pkss
,