CComboBoxEx DarkKaiser, 2010년 3월 30일2023년 9월 4일 콤보박스의 각 항목에 이미지가 들어가도록 하는 코드 // .h CImageList m_ImgList; CComboBoxEx m_ComboEx; // .cpp CBitmap bmp; bmp.LoadBitmap(IDB_IMAGELIST); m_ImgList.Create(16, 16, ILC_COLOR24, 7, 7); m_ImgList.Add(&bmp, RGB(255, 0, 0)); m_ComboEx.SetImageList(&m_ImgList); CString strTmp; COMBOBOXEXITEM cbi; ::ZeroMemory(&cbi, sizeof(cbi)); cbi.mask = CBEIF_IMAGE|CBEIF_SELECTEDIMAGE|CBEIF_TEXT; for (int i = 0; i < 7; i++) { strTmp.Format("%dth Item", i); Continue Reading
AlphaBlend() 함수를 이용한 반투명 처리 DarkKaiser, 2010년 3월 30일2023년 9월 4일 //바탕 이미지 출력 CDC MemDC; MemDC.CreateCompatibleDC(pDC); CBitmap bmpBack; bmpBack.LoadBitmap(IDB_BKIMG2); CBitmap *pOldBackBitmap = (CBitmap*) MemDC.SelectObject(&bmpBack); BITMAP backBitMap; bmpBack.GetBitmap(&backBitMap); pDC-BitBlt(0, 0, backBitMap.bmWidth, backBitMap.bmHeight, &MemDC, 0, 0, SRCCOPY); MemDC.SelectObject(pOldBackBitmap); MemDC.DeleteDC(); //아이콘, 선 출력 CDC dcMem; dcMem.CreateCompatibleDC(pDC); pOldBackBitmap = (CBitmap*) dcMem.SelectObject(&bmpBack); HICON hIcon; hIcon = AfxGetApp()-LoadIcon(MAKEINTRESOURCE(IDI_EQICON)); for(int i = 0 ; i Continue Reading
TransparentBlt() DarkKaiser, 2010년 3월 30일2023년 9월 3일 BOOL TransparentBlt( HDC hdcDest, //DC 핸들러 int nXOriginDest, //비트맵이 그려질 X좌표 int nYOriginDest, //비트맵이 그려질 Y좌표 int nWidthDest, //출력될 비트맵의 가로 길이 int hHeightDest, //출력될 비트맵의 세로 길이 HDC hdcSrc, //비트맵을 미리 그려놓을 DC 핸들 int nXOriginSrc, // int nYOriginSrc, // int nWidthSrc, // int nHeightSrc, // UINT crTransparent //투명화 Continue Reading
_TrackMouseEvent DarkKaiser, 2010년 3월 30일2023년 9월 5일 – SetCapture() 함수처럼 마우스 이벤트를 추적할 수 있도록 해줍니다. 그러나 동작 원리를 놓고 보면 두 함수는 너무나 다른 함수입니다. 마우스가 자신의 윈도우 영역을 벗어났음을 감지하는 방법에서, SetCapture() 함수는 응용 프로그램 자신이 직접 마우스를 점유하고 계속 마우스 메시지를 수신하여 경계를 벗어났는지 검사하지만, _TrackMouseEvent() 함수는 운영체제에 자신의 윈도우를 등록하여 마우스가 자신의 영역을 Continue Reading
CTab을 이용한 탭 구현 방법 DarkKaiser, 2010년 3월 27일2023년 9월 6일 – 대화상자 기반 프로젝트라고 가정… 1. 도구상자에서 탭 컨트롤을 대화상자에 추가한 후, 컨트롤 변수로 생성한다. CTabCtrl m_Tab; 2. 탭 컨트롤을 초기화한다. m_Tab.InsertItem(0, _T("TAB1")); m_Tab.InsertItem(1, _T("TAB2")); 3. 탭 컨트롤 안에 들어갈 실제 탭 페이지를 추가한다. 탭 페이지는 새로운 대화상자를 삽입하고 속성을 Border(NONE), Style(Child)로 설정한다. 4. 추가한 탭 페이지의 클래스를 생성한 후, Continue Reading
.NET 어셈블리를 수정하여 크랙하는 방법 DarkKaiser, 2010년 3월 25일2023년 9월 6일 1. 크랙하려는 어셈블리 파일을 ildasm으로 열어서 덤프를 뜬다. 2. 저장된 파일을 열어서 어셈블리를 수정한다. 3. 수정된 어셈블리를 다시 실행 파일로 컴파일한다. ilasm /exe hoons.il /output=HOONS.exe Continue Reading
YourKit 자바 프로파일러 DarkKaiser, 2010년 3월 19일2023년 9월 5일 홈페이지 : http://www.yourkit.com/java/profiler/ Continue Reading
Effective C# 강력한 C#코드를 구현하는 개빌지침 50가지 요약 DarkKaiser, 2010년 3월 8일2023년 9월 6일 1. 데이터 멤버 대신에 항상 프로퍼티를 사용하라. 2. const(컴파일 타임 상수)보다는 readonly(런타임 상수)가 좋다. 컴파일타임 상수는 런타임 상수에 비해 다소 빠르지만 유연성이 떨어진다. 컴파일 타임 상수는 수행성능이 매우 중요하고, 상수의 값이 절대로 바뀌지 않는 경우에 한해서만 사용하는 것이 좋다. 런타임 상수와 컴파일타임 상수의 근본적인 차이는 그 값들이 어떤 방식으로 평가되는가에 Continue Reading
동적으로 폰트 파일 읽어서 컨트롤에 적용하기 DarkKaiser, 2010년 3월 6일2023년 9월 6일 PrivateFontCollection fonts; FontFamily family = LoadFontFamily(@"F:\azuki.ttf", out fonts); theFont = new Font(family, 20.0f); // when done: theFont.Dispose(); family.Dispose(); family.Dispose(); ///////////////////////////////////////////////////////////////////////////////////////// public static FontFamily LoadFontFamily(Stream stream, out PrivateFontCollection fontCollection) { var buffer = new byte[stream.Length]; stream.Read(buffer, 0, buffer.Length); return LoadFontFamily(buffer, out fontCollection); } //public static unsafe FontFamily LoadFontFamilyUnsafe(byte[] buffer, out PrivateFontCollection Continue Reading
투명 PNG 파일 로드하고 화면에 그리기… DarkKaiser, 2010년 3월 3일2023년 9월 4일 GDI+를 이용하여 PNG 파일을 로드하고 화면에 그리는 방법… // PNG 드로잉 Graphics G2(dc.GetSafeHdc()); G2.DrawImage( m_bitmap, 60, 60 , m_bitmap-GetWidth(), m_bitmap-GetHeight() ); // PNG 파일 로드 Bitmap* Cpng_test1Dlg::PngFromResource(IN HINSTANCE hInst, IN const LPTSTR pName, IN const LPTSTR pType ) { Bitmap* bitmap = NULL; HRSRC hResource = ::FindResource(hInst, pName, Continue Reading