2009년 10월 30일 금요일

GDIpluse 사용 Image 저장

#include <gdiplus.h>

 

 "image/bmp",
 "image/jpeg",
 "image/png",
 "image/gif"

 

using namespace Gdiplus;

 

saveImage

{

CLSID pngClsid;
 GetFormatClsid("image/jpeg", &pngClsid);

 

 HPALETTE hpal;

///팔레트 설정
 hpal = (HPALETTE)GetStockObject(DEFAULT_PALETTE);
 Bitmap bitmap(hbitmap,hpal);

 

/// image 저장

Gdiplus::Status status = bitmap.Save(path, &pngClsid, NULL);

}

 

/// 저장 데이터의 format 설정

int GetFormatClsid(const WCHAR* format, CLSID* pClsid)

{

UINT  unImageNumber = 0;
 UINT  unImageSize = 0; 

 ImageCodecInfo* pImageCodecInfo = NULL;

/// Image 크기
 GetImageEncodersSize(&unImageNumber, &unImageSize);
 if(unImageSize == 0)
  return -1;

/// Image 속성

 pImageCodecInfo = (ImageCodecInfo*)(malloc(unImageSize));
 if(pImageCodecInfo == NULL)
  return -1;

 GetImageEncoders(unImageNumber, unImageSize, pImageCodecInfo);

 for(UINT uCount = 0; uCount < unImageNumber; ++uCount)
 {
  if( wcscmp(pImageCodecInfo[uCount].MimeType, format) == 0 )
  {
   *pClsid = pImageCodecInfo[uCount].Clsid;
   free(pImageCodecInfo);
   return uCount;
  }   
 }

 free(pImageCodecInfo);
 return -1;

 

}

2009년 10월 28일 수요일

CString => char* CString => WCHAR*

VC++ 2008에서 유니코드 사용을 선택하면

(LPTSTR)(LPCTSTR) 또는 GetBuffer를 이용한 변환 이 않된다.

 

그럴때는

char* 변환

char chrPath[MAX_PATH]

WideCharToMultiByte(CP_ACP, 0, CString, -1, chrPath, sizeof(ch), NULL, NULL );

 

이걸 사용 ^^

 

 

WCHAR* 변환

WCHAR m_wPath[MAX_PATH];
 MultiByteToWideChar( CP_ACP,  0, strFile, int(strlen(strFile) + 1),  m_wPath, sizeof(m_wPath) / sizeof(m_wPath[0] ));

 

또는 : wsprintf(chrPath, L"%s", CString);

 

내용은 찾아보면 다나옴..

2009년 10월 8일 목요일

CListctrl Report 에서 열간의 높이 조절 하는 방법

간단히 CListctrl Report 에서 열간의 높이 조절 하는 방법

 

Image 크기를 이용하여 행간의 높이를 조절 한다.

 

         CImageList m_image;
    ....
         CListCtrl &m_list=GetListCtrl();
    m_image.Create(1,20,ILC_COLORDDB,1,0);
    list.SetImageList(&m_image,LVSIL_SMALL);

 

출처: http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNO=20&no=2731