delegate 요약 DarkKaiser, 2010년 3월 31일2023년 9월 5일 – 델리게이트를 통해 특정 작업을 캡슐화할 수 있다. – 델리게이트 인스턴스에 어떤 메서드를 사용할 수 있는지는 델리게이트 타입의 선언에 따라 다르다. – 델리게이트 인스턴스 생성을 위해서는 호출할 메서드와 (인스턴스 메서드의 경우) 메서드를 호출할 대상이 필요하다. – 델리게이트 인스턴스는 불변성(immutable)을 갖는다. 한번 생성되고 나면 변경될 수 없다. 이렇기 때문에 델리게이트를 다른 델리게이트와 합친다거나 Continue Reading
CImage 클래스를 이용한 이미지 로드 & 저장 DarkKaiser, 2010년 3월 31일2023년 9월 5일 MFC에서 atlimage.h 파일을 포함하면 CImage 클래스를 사용하여 gif, jpg, png 등의 파일을 로드 및 저장할 수 있다. 내부적으로 CImage 클래스는 GDI+를 이용하여 이미지를 로드하는 것을 볼 수 있다. #include <atlimage.hCImage Image; HRESULT hResult = Image.Load(_T("f:\\yes_btn_down.png")); if (FAILED(hResult)) { AfxMessageBox("failed"); return; } Image.BitBlt(dc.m_hDC, 0, 0); // ---------------------------------------------------------- // 이미지 DC를 Continue Reading
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