게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
픽쳐컨트롤의 DC얻기.. 질문입니다..ㅠㅠ
게시물ID : programmer_18611짧은주소 복사하기
작성자 : 법-규
추천 : 0
조회수 : 632회
댓글수 : 1개
등록시간 : 2016/10/04 21:50:20
옵션
  • 베스트금지
  • 본인삭제금지
다이얼로그 A에서
CFile 클래스로 jpg 파일을 열고, 
CFile로 불러온 파일을 임의버퍼에 저장한뒤
다른 다이얼로그 B의 버퍼로 옮기고 인텔 jpg 라이브러리를 이용해서
B의 픽쳐컨트롤에 출력하려 하고있습니다

다음은 다이얼로그 A입니다
if(File.Open(m_sFileDir, CFile::modeRead))
{
fileLen = File.GetLength();

BYTE * buffer = new BYTE[fileLen];
File.Read(buffer,fileLen);

h.DrawImg(&buffer,fileLen);

File.Close();
}
위와 같이 CFile로 Read한 버퍼의 주소와 길이를 다른 다이얼로그의 함수 인자로 넘겨주었고
받는 다이얼로그 B에서 bmif 구조체에 비트맵 정보로 저장했습니다
(원하는 사진이 출력 되긴 되니까 bmif 구조체에 데이터는 제대로 옮겨지는것 같습니다)

문제는 다이얼로그B의 출력하는 부분인데
연습삼아 만들어본 대화상자 기반 프로젝트에서는 같은 코드로
해당 픽쳐컨트롤 시작위치에 맞게 비트맵이 출력됩니다.

그러나 SDI기반에서 같은방식으로 코드를 짜면
픽쳐컨트롤이 아닌 윈도우(모니터)의 0,0위치에서 그림이 그려집니다.
DC를 제대로 못구한것같은데, 픽쳐컨트롤의 알맞은 DC를 구하려면 어떻게 해야하나요?

다음은 다이얼로그 B의 DrawImg(BYTE* arry[], int len) 함수의 출력부분입니다.


hdc = ::GetDC(m_Img);
::SetStretchBltMode(hdc, COLORONCOLOR); // 늘이기 속성 조절. 줄여도 손상없게
::StretchDIBits(hdc, 0, 0, 560, 480, 0, 0, 
JPEGImage.DIBWidth, JPEGImage.DIBHeight, JPEGImage.DIBBytes, 
(const BITMAPINFO *)&bmif, DIB_RGB_COLORS , SRCCOPY ); 

::ReleaseDC(m_Img, hdc);
// 자원 free
delete []JPEGImage.DIBBytes;
ijlFree(&JPEGImage);
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호