mfc_Message - 8BitsCoding/RobotMentor GitHub Wiki
WIN32์์๋ ๋ฉ์์ง์ฒ๋ฆฌ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ํ๋ค.
๋ง์ฐ์ค๋ฅผ ํด๋ฆญ๋ฐ๊ณ ๋ค๋ชจ๋ฅผ ๊ทธ๋ฆฌ๋ ์์๋ฅผ ๋ค์ด๋ณด๊ฒ ๋ค.
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if(uMsg == WM_LBUTTONDOWN) {
HDC h_dc = GetDC(hWnd);
Rectangle(h_dc, 10, 10, 100, 100);
ReleaseDC(hWnd, h_dc);
} else if (uMsg == WM_DESTROY) {
PostQuitMessage(0);
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
: ๋ฉ์์ง ์ฒ๋ฆฌ๋ WndProc ํจ์๋ฅผ ์ด์ฉํ๊ณ ๋ค๊ฐ์ง ๋งค๊ฐ๋ณ์๊ฐ ์ฌ์ฉ๋๋ค.
HDC h_dc = GetDC(hWnd);
: ์๋์ฐ ํธ๋ค์ DC๋ฅผ ๋ฐ์์จ๋ค.
MFC์์๋ ์ด๋ป๊ฒ ๋ฉ์์ง ์ฒ๋ฆฌ๋ฅผ ํ๋??
WindowProc๋ฅผ ์ฌ ์ ์ํ์ฌ ์ฌ์ฉํ๋ค.
LRESULT CMFCApplication5Dlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: ์ฌ๊ธฐ์ ํน์ํ๋ ์ฝ๋๋ฅผ ์ถ๊ฐ ๋ฐ/๋๋ ๊ธฐ๋ณธ ํด๋์ค๋ฅผ ํธ์ถํฉ๋๋ค.
return CDialogEx::WindowProc(message, wParam, lParam);
}
์ฌ ์ ์ ํ๋ฉด ์์ ๊ฐ๊ณ , ๊ธฐ์กด WIN32์ ์ฐจ์ด์ ์
HWND hWnd
๊ฐ ์๋ค๋ ์ ์ธ๋ฐ Dlg์์๋ m_hWnd๋ก ์ ์ ๋์ด ์๊ธฐ์ ์ฌ์ค ํ์๊ฐ ์๋ค.
WIN32 ๋ฉ์์ง ์ฒ๋ฆฌ๋ฐฉ๋ฒ Vs MFC ๋ฉ์์ง ์ฒ๋ฆฌ ๋ฐฉ๋ฒ
LRESULT CMFCApplication5Dlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if(message == WM_LBUTTONDOWN) {
if(wParam & MK_CONTROL) dc.Ellipse(10, 10, 100, 100);
// MFC ๊ถ์ฅ ์คํ์ผ
CClientDC dc(this);
dc.Rectangle(10, 10, 100, 100);
// WIN32 ์คํ์ผ
HDC h_dc = ::GetDC(m_hWnd);
Rectangle(h_dc, 10, 10, 100, 100);
::ReleaseDC(m_hWnd, h_dc);
// MFC ์ ํต ์คํ์ผ
CDC * p_dc = GetDC();
p_dc->Rectangle(10, 10, 100, 100);
ReleaseDC(p_dc);
}
return CDialogEx::WindowProc(message, wParam, lParam);
}
์ฐธ๊ณ ๋ก WParam, lParam์ ์ด๋ค ์ ๋ณด๊ฐ ์๋์ง ๋ณด๊ณ ์ถ๋ค๋ฉด,
WM_LBUTTONDOWN์ F1๋๋ฅด๋ฉด ์ค๋ช ์ด ๋์จ๋ค.
๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์๋??
์ฌ์ค ์ด ๋ฐฉ๋ฒ์ด MFC์์ ๊ฐ์ฅ ๊ถ์ฅํ๋ ๋ฐฉ๋ฒ์ด๋ค.
void CAboutDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// point.x, point.y ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅ
CClientDC dc(this);
if(nFlags & MK_CONNTROL) dc.Ellipse(point.x - 30, point.y - 30, point.x + 30, point.y +30);
CDialogEx::OnLButtonDown(nFlags, point);
}