mfc_Dlg_Transparent - 8BitsCoding/RobotMentor GitHub Wiki


์ด๋ฏธ์ง€

BOOL CMFCApplication2Dlg::OnInitDialog()
{
    // ...

	// ํŠน์ • ์˜์—ญ๋งŒ ํˆฌ๋ช…ํ™” ํ•ด๋ณด์ž.
	// SetLayeredWindowAttributes(RGB(255, 1, 7), 0, LWA_COLORKEY);
	// ๋‹ค์ด์–ผ๋กœ๊ทธ์˜ RGB(255, 1, 7)๋ผ๋Š” ์ƒ‰์ƒ์„ 0 (์™„์ „ํˆฌ๋ช…)ํ•˜๊ฒŒ ์ƒ‰์ƒ๊ธฐ์ค€์œผ๋กœ(LWA_COLORKEY) ๋งŒ๋“ค์–ด ๋‹ฌ๋ผ

	// ๋‹ค์ด์–ผ๋กœ๊ทธ์˜ ๋ชจ๋“  ์˜์—ญ์„ ํˆฌ๋ช…ํ™” ํ•ด๋ณด์ž.
	SetLayeredWindowAttributes(0, 100, LWA_ALPHA);
	// ํˆฌ๋ช…๋„ ๋ ˆ์ธ์ง€๋Š” 0 ~ 255 ์‚ฌ์ด

	return TRUE;  // ํฌ์ปค์Šค๋ฅผ ์ปจํŠธ๋กค์— ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด TRUE๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
}
void CMFCApplication2Dlg::OnPaint()
{
	CPaintDC dc(this); // ๊ทธ๋ฆฌ๊ธฐ๋ฅผ ์œ„ํ•œ ๋””๋ฐ”์ด์Šค ์ปจํ…์ŠคํŠธ์ž…๋‹ˆ๋‹ค.

	if (IsIconic())
	{
        // ...
	}
	else
	{
		dc.FillSolidRect(10, 10, 200, 200, RGB(255, 1, 7));
		
		// CDialogEx::OnPaint();
	}
}
void CMFCApplication2Dlg::OnLButtonDown(UINT nFlags, CPoint point)
{
	CClientDC dc(this);
	dc.FillSolidRect(point.x - 10, point.y - 10, 20, 20, RGB(255, 1, 7));

	CDialogEx::OnLButtonDown(nFlags, point);
}
void CMFCApplication2Dlg::OnRButtonDown(UINT nFlags, CPoint point)
{
	// Layered ์†์„ฑ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธ/์ ์šฉ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด?
	int wnd_style = ::GetWindowLong(m_hWnd, GWL_EXSTYLE);

	if (!(wnd_style & WS_EX_LAYERED)) {
		// Layered ์†์„ฑ์ด ์•ˆ๋ผ์–ด ์žˆ๋‹ค๋ฉด
		::SetWindowLong(m_hWnd, GWL_EXSTYLE, wnd_style | WS_EX_LAYERED);
	}

	CDialogEx::OnRButtonDown(nFlags, point);
}