본문 바로가기

분류 전체보기205

투명 이미지 그리기(MaskBlt, TransparentBlt) 부분적으로 투명한 이미지는 상당히 쓸모가 많다. 특히 스킨 형태의 어플리케이션을 개발하려면 투명 이미지를 그리는 것은 꼭 필요한 요소 중 하나다. WIN32에서도 MaskBlt(), TransparentBlt() 등의 투명한 이미지를 그리기 위한 API를 제공하지만 MaskBlt()는 Windows NT 계열에서만 사용할 수 있고 TransparentBlt()는 Windows 98이나 2000이상에서만 사용이 가능하다. 만약 Windows 9X나 Windows 2000 미만에서 투명한 이미지를 그리려면 다음과 같은 방법으로도 가능하다. 최근에는 Windows 9X 사용자가 줄어서 거의 필요 없지만 말이다. 1. 먼저 배경색을 이용해서 마스크 비트맵을 만든다. 이미 마스크 비트맵이 있다면 생략이 가능하다... 2007. 4. 3.
메모리 DC를 이용한 더블 버퍼링 화면에 이미지나 도형, 텍스트 등 여러가지를 출력하다 보면 깜박거리는 현상을 보게 된다. 한 번 출력하고 말 것이라면 크게 문제가 안 될 수 있지만 지속적으로 출력하는 상황에서는 깜박거림은 피하고 싶은 문제 중 하나이고 가장 쉽고 일반적인 해결책은 더블 버퍼링이다. 다음은 메모리 DC를 이용한 더블 버퍼링 방법이다. 1. 출력하려는 크기의 비트맵과 메모리 DC를 생성하고 메모리 DC에 생성된 비트맵을 선택한다. HBITMAP hbmMem = CreateCompatibleBitmap(hdc, 48, 48); HDC hdcMem = CreateCompatibleDC(hdc); HBITMAP hbmOld = (HBITMAP)SelectObject(hdcMem, hbmMem); 2. 생성한 메모리 DC(hdcM.. 2007. 3. 31.
Windows XP 호환 오픈소스 운영체제 ReactOS ReactOS라는 Windows 호환 운영체제가 개발 중이다. 사실 개발이 시작된 건 오래 전(1998년)인데 최근에 꽤 진척이 있었던 모양이다. 일단 직접 PC에 설치하기는 좀 무리인 것 같아서 Virtual PC에서 설치했는데 설치가 안 된다. 설치 초기 설정값인 VESA 드라이버가 제대로 작동이 안 되는 것 같아서 VGA 드라이버로 돌려 봤는데 일단 설치 완료, 재부팅 후 화면까지는 뜨나 정상 작동이 안 된다. 그래서 홈페이지에 있는 VMware 로 설치된 버전을 VMware에서 돌려 보니 제법 작동이 된다. 가끔 이유없이 죽어 버리고 한글이 지원되지 않지만 돌아간다는 것 만으로도 흥미롭다. 홈페이지를 둘러 보니 커널은 새로 제작하였고 많은 부분은 Wine 프로젝트(리눅스 환경에서 Windows 어.. 2007. 3. 24.
MFC의 CPropertySheet, CPropertyPage에서 디자인 깨지는 문제 MFC의 CPropertySheet와 CPropertyPage는 탭 컨트롤 기반의 환경설정이나 위자드 다이얼로그를 만들 때 많이 사용하는 클래스들이다. 그런데 리소스 에디터에서 디자인한 다이얼로그를 CPropertyPage로 만들어서 사용하다 보면 디자인이 변경되어서 깨지는 문제가 발생하곤 한다. 특히 한글 윈도우에서 디자인한 다이얼로그를 영문 윈도우(물론 랭귀지팩이 깔린)에서 보면 거의 깨져 보인다. 원인은 CPropertySheet에서 다이얼로그 템플릿을 초기화할 때 CPropertyPage의 폰트를 CPropertySheet의 폰트와 같은 폰트로 변경하면서 디자인이 바뀌기 때문이다. 이것을 막으려면 CPropertySheet를 상속 받아서 BuildPropPageArray()를 오버라이딩한 다음 폰.. 2007. 2. 28.
Windos Vista에서 IE7 실행 및 IWebBrowser2 인터페이스 얻기 Windows Vista에서 IWebBrowser2를 CoCreateInstance로 생성하는 경우 몇가지 제약 사항들이 있다. 먼저 Internet Explorer을 Visible하게 하기 전에 먼저 Navigate를 실행해야 한다. 다음으로 Navigate하고자 하는 URL이 Trusted Domain이 아니면 실행하는 어플리케이션이 관리자 권한으로 실행 중이거나 보호 모드가 설정된 IE7을 실행해야 한다. 그렇지 않으면 IE7은 보호 모드가 설정된 IE 프로세스를 다시 생성하고 기존 프로세스는 종료된다. 문제는 CoCreateInstance로는 보호 모드가 설정된 IE 프로세스를 생성할 수가 없다는 점이다. 이를 해결하기 위해서는 보호 모드가 설정된 IE7에 대한 IWebBrowser2 인터페이스를.. 2007. 2. 23.
Windows Mobile 6 발표 Windows Mobile 6가 발표되었다. Windows Live를 이용해서 친구와 채팅이 가능하고 파일이나 이미지 교환도 가능하다고 한다. 또한 워드, 엑셀, 파워포인트 문서를 테이블이나 이미지의 손상없이 수정이 가능하다고 한다. Pocket PC Phone Edition은 Windows Mobile 6 "Professional"로 Smartphone은 "Standard"로 일반 Pocket PC는 "Classic"으로 명명되었다. MS가 스마트폰에 집중하고 있음이 보인다. 아래는 Windows Mobile 6의 주요 기능이다. - HTML support in email - Windows Live for Windows Mobile - File transfer capability in Windows L.. 2007. 2. 9.