C++2 GDI+ Bitmap 복사하기 C++ GDI+ Bitmap을 복사본을 만들려면 아래처럼 Clone 메서드를 사용하게 됩니다. Gdiplus::Bitmap* pBitmap = bitmap.Clone(0, 0, bitmap.GetWidth(), bitmap.GetHeight(), bitmap.GetPixelFormat()); 하지만 Clone 메소드는 깊은 복사(deep copy)가 아니라 얕은 복사(shallow copy)이기 때문에 원본을 변경하면 복사본도 변경되고 복사본을 변경하면 원본도 변경됩니다. 완전한 복사본을 만드려면 Bitmap 객체를 생성해서 원본 Bitmap을 직접 그려줍니다. Gdiplus::Bitmap* pBitmap = new Gdiplus::Bitmap(bitmap.GetWidth(), bitmap.GetHeight().. 2021. 1. 1. goto 대신에 do { ... } while (false)를 사용한 에러처리 C/C++ 코딩을 하다보면 흔히 아래와 같은 에러처리 코드를 만나게 된다. ... if (!condition1) goto cleanup; ... if (!condition2) goto cleanup; ... if (!condition3) goto cleanup; ... if (!condition4) goto cleanup; ... cleanup: // 메모리 해제등의 정리 작업 고급 언어에서는 goto를 사용하지 말라고 많이 하고 실제 goto의 사용이 스파게티 코드를 만드는 경우가 많기 때문에 사용하지 않는 것이 좋지만 C/C++에서는 finally를 지원하지 않기 때문에 위와 같은 코드는 묵인해주는 경우가 많다. 그래도 goto를 피하고 싶기 때문에 아래처럼 하기도 한다. ... if (!condit.. 2010. 3. 25. 이전 1 다음