2009-11-12 3 views
4

Visual C++에서 Window (win32 API) 응용 프로그램이 있습니다. 나는 MFC를 사용하지 않는다. 비트 맵 이미지로 원형/원형 버튼을 만들어야합니다. 내 응용 프로그램은 skined view를 가지고 있습니다. 어느 누구도이 작업을 수행하는 데 나를 도울 수 있습니까? 미리 감사드립니다.Visual C++을 사용하여 win32 API에서 원형/원형 버튼을 만드는 방법

+2

더 새로운 것이 정확한 복제본으로 마감되었습니다. 이것은 속임수 이유 때문에 닫히지 않아야합니다. –

+0

라비, 주 창문이 껍질이 벗겨진 창이라고 말하고 있습니까? 이것은 둥근 버튼을 그리는 것과 어떻게 관련이 있습니까? – AlanKley

답변

0

메모리 DC 및 다양한 ROP2 설정을 사용하여 BitBlting 이미지 기술을 찾아 마스킹 효과를 얻을 수 있습니다. 버튼을 나타내는 둥근 이미지는 투명도를 나타 내기 위해 특정 색상을 사용합니다. 나는 특정한 코드를 가지고 있지는 않지만 사소한 것은 아니다.

2

버튼은 창입니다.

-http : 당신은 CreateWindow 함수 또는 CreateWindowEx 함수 호출로 버튼을 만들 수 있습니다 .aspx로 //msdn.microsoft.com/en-us/library/ms632680 (VS.85)를

당신은 당신의 버튼을 만들 때

-http : //msdn.microsoft.com/en-us/library/bb775951 (VS.85)

를 .aspx로 WM_DRAWITEM을 보낼 수있는 버튼을 말할 것이다 창은 BS_OWNDERDRAW 스타일을 통과 할 수 있도록 버튼에 메시지 보내기 'WNDPROC :

-http : //msdn.microsoft.com/en-us/l (W = VS.85) .aspx

단추의 WNDPROC에서 lParam의 포인터로받은 DRAWITEMSTRUCT의 정보에 따라 WM_DRAWITEM 메시지를 처리하고 단추를 칠합니다.

비트 맵을 직사각형 이외의 것으로 렌더링하려면 단추에 렌더링 할 비트 맵과 동일한 크기의 1 비트 비트 마스크 비트 맵을 제공해야합니다. 비트 마스크에는 버튼 비트 맵의 ​​픽셀을 화면에 설정하려는 비트가 설정되어 있습니다. 단추 비트 맵에서 표시되지 않는 픽셀은 검정 일 필요가 있습니다. Bitmask 비트 맵을 AND 연산자와 OR 버튼을 사용하여 화면에 비트 블릿하십시오. 물론 다양한 버튼 상태를 고려해야합니다 (일반적으로 푸시 버튼은 두 가지 상태에 불과합니다).

위의 설명에서 흑백 또는 설정/해제 비트가 혼합되어있을 수 있지만 AND/OR 비트 단위 (SRCAND/SRCPAINT) 래스터 연산은 획득하려는 작업에 대한 올바른 연산입니다.

-http : //msdn.microsoft.com/en-us/library/aa930997.aspx

희망하는 데 도움이됩니다.

0

중요한 API 호출은 SetWindowRgn입니다. 이것은 윈도우가 직사각형이 아니라 불규칙한 영역이라는 것을 윈도우에 알리기 위해 호출하는 것입니다. 만약 당신이 주위에 구글, 당신은 예제 코드를 많이 찾을 수 있습니다. 예 : this project MFC에 의존하지만 원하는 효과를 얻기 위해 어떤 순서로 호출해야 하는지를 배우기 위해 사용할 수 있습니다.

관련 문제