클릭 할 수없는 투명한 배경이있는 Windows 형태
-
07-07-2019 - |
문제
C# / Windows 양식 사용. 클릭을받을 수있는 능력을 잃지 않고 양식의 배경을 투명하게 만들려고합니다.
this.
백콜로 = Color.red;
Transparencykey = 백 콜러;
양식의 배경을 투명하게 만들고 클릭 할 수 있습니다. 양식이 투명 해지기를 원하지만 클릭을받을 수 있어야합니다.
어떻게?
해결책
wm_nchittest를 처리해야합니다. 아래 스 니펫에서 M.LPARAM에는 화면의 왼쪽 상단 모서리에 대한 마우스 위치의 포장 된 X 및 Y 좌표가 포함되어 있으며 위치가 투명 영역과 일치하는지 확인해야합니다.
이 예에서는 htcaption을 반환합니다. 즉,이 영역은 창의 캡션처럼 행동한다는 것을 의미합니다. 즉, 사용자는이 위치를 클릭하고 드래그하여 창을 드래그 할 수 있습니다. 보다 여기 다른 값을 반환 할 수있는 것과 의미
protected override void WndProc(ref Message m) {
switch (m.Msg) {
case 0x84: // this is WM_NCHITTEST
base.WndProc(ref m);
if ((/*m.LParam.ToInt32() >> 16 and m.LParam.ToInt32() & 0xffff fit in your transparen region*/)
&& m.Result.ToInt32() == 1) {
m.Result = new IntPtr(2); // HTCAPTION
}
break;
default:
base.WndProc(ref m);
break;
}
}
제휴하지 않습니다 StackOverflow