mfc_EditCtrl_Color_1 - 8BitsCoding/RobotMentor GitHub Wiki



WM_CTLCOLOR λ©”μ‹œμ§€λ₯Ό ν†΅ν•΄μ„œ 색상을 λ³€κ²½ν•  수 μžˆλ‹€.

HBRUSH CMFCApplication1Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
	HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);

	int control_id = pWnd->GetDlgCtrlID();
	if (control_id == IDC_EDIT1) {
		pDC->SetTextColor(RGB(255, 0, 0));
		pDC->SetBkColor(RGB(0, 0, 255));
	}
	
	return hbr;
}

// Dlg.h
HBRUSH mh_edit_bk_brush;
BOOL CMFCApplication1Dlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// 이 λŒ€ν™” μƒμžμ˜ μ•„μ΄μ½˜μ„ μ„€μ •ν•©λ‹ˆλ‹€.  μ‘μš© ν”„λ‘œκ·Έλž¨μ˜ μ£Ό 창이 λŒ€ν™” μƒμžκ°€ 아닐 κ²½μš°μ—λŠ”
	//  ν”„λ ˆμž„μ›Œν¬κ°€ 이 μž‘μ—…μ„ μžλ™μœΌλ‘œ μˆ˜ν–‰ν•©λ‹ˆλ‹€.
	SetIcon(m_hIcon, TRUE);			// 큰 μ•„μ΄μ½˜μ„ μ„€μ •ν•©λ‹ˆλ‹€.
	SetIcon(m_hIcon, FALSE);		// μž‘μ€ μ•„μ΄μ½˜μ„ μ„€μ •ν•©λ‹ˆλ‹€.

	// TODO: 여기에 μΆ”κ°€ μ΄ˆκΈ°ν™” μž‘μ—…μ„ μΆ”κ°€ν•©λ‹ˆλ‹€.

	mh_edit_bk_brush = ::CreateSolidBrush(RGB(0, 0, 128));
	SetDlgItemText(IDC_EDIT1, L"μ•ˆλ…•ν•˜μ„Έμš”~");

	return TRUE;  // 포컀슀λ₯Ό μ»¨νŠΈλ‘€μ— μ„€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ TRUEλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
}
HBRUSH CMFCApplication1Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
	HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);

	int control_id = pWnd->GetDlgCtrlID();
	if (control_id == IDC_EDIT1) {
		pDC->SetTextColor(RGB(255, 0, 0));
		pDC->SetBkColor(RGB(0, 0, 255));
		return mh_edit_bk_brush;
	}
	
	return hbr;
}
void CMFCApplication1Dlg::OnDestroy()
{
	CDialogEx::OnDestroy();

	DeleteObject(mh_edit_bk_brush);
}

// Dlg.h
HBRUSH mh_edit_bk_brush;
HWND mh_old_focus = NULL;
HBRUSH CMFCApplication1Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
	HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);

	int control_id = pWnd->GetDlgCtrlID();
	//if (control_id == IDC_EDIT1) {
	if (control_id >= IDC_EDIT1 && control_id <= IDC_EDIT6) {
		pDC->SetTextColor(RGB(255, 0, 0));
		HWND cur_focus = ::GetFocus();
		if (cur_focus == pWnd->m_hWnd) {
			// ν¬μ»€μŠ€κ°€ λ“€μ–΄μ˜€λ©΄ 색상변경
			if (mh_old_focus != cur_focus) {
				if(mh_old_focus!=NULL) ::InvalidateRect(mh_old_focus, NULL, FALSE);
				mh_old_focus = cur_focus;
			}
			pDC->SetBkColor(RGB(0, 255, 0));
		}
		else
		{
			pDC->SetBkColor(RGB(0, 0, 255));
		}
		
		return mh_edit_bk_brush;
	}
	
	return hbr;
}