mfc_calculator_1 - 8BitsCoding/RobotMentor GitHub Wiki



ListBox๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ CheckListBox๋ฅผ ์ƒ์„ฑํ•ด์„œ ์“ด๋‹ค.

๋”ฐ๋ผ์„œ ListBox๋ฅผ ์ƒ์„ฑ ํ›„ OwnerDraw๋ฅผ Fixed๋กœ ๋‘”๋‹ค.

๋ฆฌ์ŠคํŠธ๋ฐ•์Šค ์šฐํด๋ฆญ -> ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๊ธฐ ๋งˆ๋ฒ•์‚ฌ ์‹œ์ž‘ -> LBN_CHANGE ์ถ”๊ฐ€

BOOL CMFCApplication1Dlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// ์ด ๋Œ€ํ™” ์ƒ์ž์˜ ์•„์ด์ฝ˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์ฃผ ์ฐฝ์ด ๋Œ€ํ™” ์ƒ์ž๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ์—๋Š”
	//  ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ด ์ž‘์—…์„ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
	SetIcon(m_hIcon, TRUE);			// ํฐ ์•„์ด์ฝ˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
	SetIcon(m_hIcon, FALSE);		// ์ž‘์€ ์•„์ด์ฝ˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

	// TODO: ์—ฌ๊ธฐ์— ์ถ”๊ฐ€ ์ดˆ๊ธฐํ™” ์ž‘์—…์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

	wchar_t * p_item_name[MAX_ITEM_COUNT] = {
		L"์•„๋ฉ”๋ฆฌ์นด๋…ธ		1900์›"	, L"์นดํŽ˜๋ผ๋–ผ			2500์›",
		L"์นดํŽ˜๋ชจ์นด			2800์›", L"์นด๋ผ๋ฉœ๋งˆ๋ผ์•„๋˜			3200์›",
		L"์—์Šคํ”„๋ ˆ์†Œ			1800์›",L"๋ฐ”๋‹๋ผ๋ผ๋–ผ			3500์›",
		L"์นดํ‘ธ์น˜๋…ธ			3300์›",L"๋น„์—”๋‚˜			3500์›"
	};
	int price[8] = {1900, 2500, 2800, 3200, 1800, 3500, 3300, 3500};
	m_item_list.SubclassDlgItem(IDC_ITEM_LIST, this);
	m_item_list.SetItemHeight(0, 24);
	
	for (int i = 0; i < MAX_ITEM_COUNT; i++) {
		m_item_list.InsertString(i, p_item_name[i]);
		m_item_list.SetItemData(i, price[i]);
	}

	return TRUE;  // ํฌ์ปค์Šค๋ฅผ ์ปจํŠธ๋กค์— ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด TRUE๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
}
void CMFCApplication1Dlg::OnLbnSelchangeItemList()
{
	int count = m_item_list.GetCount();
	int total_price = 0;

	for (int i = 0; i < count; i++) {
		if (m_item_list.GetCheck(i)) {
			total_price += m_item_list.GetItemData(i);
		}
	}

	SetDlgItemInt(IDC_TOTAL_PRICE_EDIT, total_price);
}