일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 한국대중음악박물관
- 브이포
- 창세기전
- 쿠폰
- 2차전직
- 울산박물관
- 리니지2레볼루션
- 아가시온
- 워리어
- 샤오미
- 반구대암각화
- AT&T
- 족저근막염
- 후쿠오카
- 달빛조각사
- 몬스터스트라이크
- 버그
- 창세기전 모바일
- 스피릿위시
- VDI
- AIA Vitality
- 치루
- 걷기앱
- 국립경주박물관
- v4
- 피쉬아일랜드
- 도미네이션즈
- axe
- 주식
- 후기
- Today
- Total
일상다반사 로그
C# 마우스 이벤트 본문
개발일을 잠깐 하다보니 마우스이벤트를 처리해야할 일이 생겼었다.
폼을 투명하게 해서서 화면에 보여주는 기능이 필요했는데 여기 폼에다가 마우스를 올렸을 때
보통은 마우스 커서가 폼 위에 닿으면 이런 모양으로 있다.
폼 밑에 만약에 텍스트를 입력해야하는데 폼이 상단에 있다면 텍스를 입력 못하는 상황이 발생한다.
그래서 또 구글링을 열심히 했다. 솔직히 국내 사이트에서는 사례를 찾기 힘들어서 구글링하다가
이미지 검색까지 하면서 소스 코드를 찾았다.
소스코드
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Opacity = 0.5;
this.TopMost = true;
}
[DllImport("user32.dll", SetLastError = true)]
static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32.dll")]
static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
const int GWL_EXSTYLE = -20;
const int WS_EX_LAYERED = 0x80000;
const int WS_EX_TRANSPARENT = 0x20;
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
var style = GetWindowLong(this.Handle, GWL_EXSTYLE);
SetWindowLong(this.Handle,GWL_EXSTYLE , style | WS_EX_LAYERED | WS_EX_TRANSPARENT);
}
}
추가 관련 자료 :
https://msdn.microsoft.com/en-us/library/ms997507.aspx
검색 키워드 : Pass clicks through a partially transparent always-on-top window
'IT > C,C#' 카테고리의 다른 글
How to Add AD user to Groups C# (AD 사용자 그룹 멤버추가) (0) | 2020.03.18 |
---|---|
C# https/security/tls/보안처리/ServicePointManager (0) | 2020.01.04 |
DataGridView - 읽기 전용 (0) | 2017.12.04 |
c# FileSystemWatcher Class (0) | 2017.11.21 |
Stack (0) | 2017.11.15 |