반응형 C & C++444 BMP 투명화 처리 비주얼 C++를 이용해 BMP 파일을 처리하는데 BMP 파일을 읽어 투명색을 지정하려면 어떻게 해야 하나요. 참고로 현재 스크린 세이버를 제작중입니다. 비주얼 C++에서 자동으로 이 문제를 지원하는 방법은 없고, 다만 이에 대한 함수가 공개되어 있을 뿐입니다. MSJDrawTransparentBitmap이라는 함수가 마이크로소프트의 knowledgebase 079212에 나와있습니다. 다음 소스 코드를 보면 이 함수가 하는 일은 비트맵을 불러오고 페인팅 표면을 투명하게 칠하기 위해 마스크로 보내는 작업을 한다는 것을 알 수 있습니다(자세한 내용은 MSJ 한국판 98년 1월호 108쪽 참고). // MSJDrawTransparentBitmap // 함수는 복사되었고 Knowledgebase 기사 Q7921.. 2012. 11. 9. WM_PAINT 메세지에 대하여... 생성된 윈도우가 다른 윈도우에 의하여 가려졌다가 다시 나타날 경우 가려졌던 부분이 지우개로 지운 것 처럼 지워지는 현상을 목격할 수 있습니다. 또는 윈도우의 크기를 리사이즈 시켰을 경우 윈도우 화면의 일부 또는 전체가 지워지는 현상을 목격할 수 있습니다. 이와 같이 생성된 윈도우의 가려졌던 부분을 무효화 영역(Invalid Region)이라 하고 우리는 무효화 영역이 생겼을 경우 이를 다시 복구시켜야 할 필요성을 인지할 수 있습니다. 무효화 영역(Invalid Region)의 복구 작업을 윈도우즈가 알아서 처리해 준다면 사용자 입장에서는 한결 프로그래밍에 대한 부담을 덜 느낄수 있겠지만 아쉽게도 윈도우즈는 무효화 영역(Invalid Region)의 복구에 대한 책임을 전적으로 사용자에게 맡기고 있습니다... 2012. 10. 5. 시스템 캡션 깜빡거리게 만들기 윈도우 캡션(타이틀)을 깜빡거리게 만드는 방법에 대해서 알아보겠습니다. // 사용하고자하는 클래스 헤더파일에 아래의 코드를 추가한다. private: BOOL m_flag; // 클래스의 객체 생성자에 아래의 코드를 추가한다. m_flag = TRUE; // ClassWizard를 이용하여 WM_SYSCOMMAND 메시지를 등록하고 해당 메시지 핸들러에 // 아래의 코드를 추가한다. // 일반적인 ClassWizard 설정에서 대화상자의 경우 WM_SYSCOMMAND 메시지가 목록에 // 없을 때는 아래와 같이 설정하면 된다. // 해당 대화상자에 최소화 버튼이 없을 경우에는 아래와 같이 설정하면 된다. // 최소화 버튼이 눌러졌는지 체크하여 최소화 버튼이 눌렸다면 Timer를 생성하고 // 윈도우가 R.. 2012. 10. 5. 분할 윈도우(Splitter) 하나의 View 영역을 분할하여 사용할 수 있는 윈도우를 의미합니다. 여기서 분할이라는 의미는 화면 영역을 나누어 사용한다는 의미로 각 영역은 동일한 데이터를 공유할 수 있으며 화면에 표시되는 방식에만 차이가 있는 것을 의미합니다. 분할윈도우를 컨트롤하는 윈도우 클래스는 CSplitterWnd입니다. 이 클래스가 프레임윈도우에 설정되고 이 윈도우위에 여러 개의 View윈도우들이 설정될 수 있는 것 입니다. 분할윈도우를 설정하고자 할 때는 AppWizard Step4에서 Advance항목을 선택하고 분할윈도우 스타일을 설정해 주어야 합니다. 1) 분할 윈도우의 종류 정적 분할 윈도우 프로그램이 실행 될 때 영역이 분할된 상태로 실행되며 영역의 크기를 조절할 수는 있지만 분할된 영역을 제거할 수는 없는 분할.. 2012. 9. 3. Tree 와 List 가 합쳐진 트리 2012. 8. 31. picture control 투명화 처리 // PictureEx.cpp : implementation file // #include "stdafx.h" #include "PictureEx.h" // CPictureEx IMPLEMENT_DYNAMIC(CPictureEx, CStatic) CPictureEx::CPictureEx() { m_iPicStyle = PICSTYLE_CENTER; m_colorBkgrnd = m_colorTransparent = RGB(0, 0, 0); } CPictureEx::~CPictureEx() { } BEGIN_MESSAGE_MAP(CPictureEx, CStatic) ON_WM_ERASEBKGND() ON_WM_PAINT() END_MESSAGE_MAP() void CPictureEx::SetTranspare.. 2012. 8. 30. 이전 1 ··· 4 5 6 7 8 9 10 ··· 74 다음 반응형